#[allow(unused_imports)]
use crate::objc::*;
#[allow(unused_imports)]
use crate::CoreFoundation::*;
#[allow(unused_imports)]
use crate::Foundation::*;
#[allow(unused_imports)]
use crate::IOKit::*;
#[allow(unused_imports)]
use crate::Security::*;

#[allow(unused_imports)]
use objc2::msg_send;
pub type MTRTLVBytes = NSData;
pub type MTRCSRDERBytes = NSData;
pub type MTRCertificateDERBytes = NSData;
pub type MTRCertificateTLVBytes = NSData;
pub type StatusCompletion = *mut ::std::os::raw::c_void;
pub type MTRStatusCompletion = *mut ::std::os::raw::c_void;
pub type MTRSubscriptionEstablishedHandler = *mut ::std::os::raw::c_void;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCluster(pub id);
impl std::ops::Deref for MTRCluster {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCluster {}
impl MTRCluster {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCluster").unwrap(), alloc) })
    }
}
impl INSObject for MTRCluster {}
impl PNSObject for MTRCluster {}
impl std::convert::TryFrom<NSObject> for MTRCluster {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRCluster, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCluster").unwrap()) };
        if is_kind_of {
            Ok(MTRCluster(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRCluster")
        }
    }
}
impl IMTRCluster for MTRCluster {}
pub trait IMTRCluster: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn endpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpointID)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCluster").unwrap(), new)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGenericBaseCluster(pub id);
impl std::ops::Deref for MTRGenericBaseCluster {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGenericBaseCluster {}
impl MTRGenericBaseCluster {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGenericBaseCluster").unwrap(), alloc) })
    }
}
impl IMTRCluster for MTRGenericBaseCluster {}
impl From<MTRGenericBaseCluster> for MTRCluster {
    fn from(child: MTRGenericBaseCluster) -> MTRCluster {
        MTRCluster(child.0)
    }
}
impl std::convert::TryFrom<MTRCluster> for MTRGenericBaseCluster {
    type Error = &'static str;
    fn try_from(parent: MTRCluster) -> Result<MTRGenericBaseCluster, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGenericBaseCluster").unwrap()) };
        if is_kind_of {
            Ok(MTRGenericBaseCluster(parent.0))
        } else {
            Err("This MTRCluster cannot be downcasted to MTRGenericBaseCluster")
        }
    }
}
impl INSObject for MTRGenericBaseCluster {}
impl PNSObject for MTRGenericBaseCluster {}
impl IMTRGenericBaseCluster for MTRGenericBaseCluster {}
pub trait IMTRGenericBaseCluster: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGenericCluster(pub id);
impl std::ops::Deref for MTRGenericCluster {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGenericCluster {}
impl MTRGenericCluster {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGenericCluster").unwrap(), alloc) })
    }
}
impl IMTRCluster for MTRGenericCluster {}
impl std::convert::TryFrom<MTRCluster> for MTRGenericCluster {
    type Error = &'static str;
    fn try_from(parent: MTRCluster) -> Result<MTRGenericCluster, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGenericCluster").unwrap()) };
        if is_kind_of {
            Ok(MTRGenericCluster(parent.0))
        } else {
            Err("This MTRCluster cannot be downcasted to MTRGenericCluster")
        }
    }
}
impl INSObject for MTRGenericCluster {}
impl PNSObject for MTRGenericCluster {}
impl IMTRGenericCluster for MTRGenericCluster {}
pub trait IMTRGenericCluster: Sized + std::ops::Deref {
    unsafe fn device(&self) -> MTRDevice
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, device)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWriteParams(pub id);
impl std::ops::Deref for MTRWriteParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWriteParams {}
impl MTRWriteParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWriteParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRWriteParams {}
impl PNSSecureCoding for MTRWriteParams {}
impl INSObject for MTRWriteParams {}
impl PNSObject for MTRWriteParams {}
impl std::convert::TryFrom<NSObject> for MTRWriteParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRWriteParams, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWriteParams").unwrap()) };
        if is_kind_of {
            Ok(MTRWriteParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRWriteParams")
        }
    }
}
impl IMTRWriteParams for MTRWriteParams {}
pub trait IMTRWriteParams: Sized + std::ops::Deref {
    unsafe fn timedWriteTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedWriteTimeout)
    }
    unsafe fn setTimedWriteTimeout_(&self, timedWriteTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedWriteTimeout : timedWriteTimeout)
    }
    unsafe fn dataVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dataVersion)
    }
    unsafe fn setDataVersion_(&self, dataVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDataVersion : dataVersion)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRReadParams(pub id);
impl std::ops::Deref for MTRReadParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRReadParams {}
impl MTRReadParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRReadParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRReadParams {}
impl PNSSecureCoding for MTRReadParams {}
impl INSObject for MTRReadParams {}
impl PNSObject for MTRReadParams {}
impl std::convert::TryFrom<NSObject> for MTRReadParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRReadParams, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRReadParams").unwrap()) };
        if is_kind_of {
            Ok(MTRReadParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRReadParams")
        }
    }
}
impl IMTRReadParams for MTRReadParams {}
pub trait IMTRReadParams: Sized + std::ops::Deref {
    unsafe fn shouldFilterByFabric(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shouldFilterByFabric)
    }
    unsafe fn setFilterByFabric_(&self, filterByFabric: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFilterByFabric : filterByFabric)
    }
    unsafe fn minEventNumber(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minEventNumber)
    }
    unsafe fn setMinEventNumber_(&self, minEventNumber: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinEventNumber : minEventNumber)
    }
    unsafe fn shouldAssumeUnknownAttributesReportable(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shouldAssumeUnknownAttributesReportable)
    }
    unsafe fn setAssumeUnknownAttributesReportable_(&self, assumeUnknownAttributesReportable: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAssumeUnknownAttributesReportable : assumeUnknownAttributesReportable)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSubscribeParams(pub id);
impl std::ops::Deref for MTRSubscribeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSubscribeParams {}
impl MTRSubscribeParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSubscribeParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSubscribeParams {}
impl PNSSecureCoding for MTRSubscribeParams {}
impl IMTRReadParams for MTRSubscribeParams {}
impl From<MTRSubscribeParams> for MTRReadParams {
    fn from(child: MTRSubscribeParams) -> MTRReadParams {
        MTRReadParams(child.0)
    }
}
impl std::convert::TryFrom<MTRReadParams> for MTRSubscribeParams {
    type Error = &'static str;
    fn try_from(parent: MTRReadParams) -> Result<MTRSubscribeParams, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSubscribeParams").unwrap()) };
        if is_kind_of {
            Ok(MTRSubscribeParams(parent.0))
        } else {
            Err("This MTRReadParams cannot be downcasted to MTRSubscribeParams")
        }
    }
}
impl INSObject for MTRSubscribeParams {}
impl PNSObject for MTRSubscribeParams {}
impl IMTRSubscribeParams for MTRSubscribeParams {}
pub trait IMTRSubscribeParams: Sized + std::ops::Deref {
    unsafe fn initWithMinInterval_maxInterval_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithMinInterval : minInterval, maxInterval : maxInterval)
    }
    unsafe fn shouldReplaceExistingSubscriptions(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shouldReplaceExistingSubscriptions)
    }
    unsafe fn setReplaceExistingSubscriptions_(&self, replaceExistingSubscriptions: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReplaceExistingSubscriptions : replaceExistingSubscriptions)
    }
    unsafe fn shouldResubscribeAutomatically(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shouldResubscribeAutomatically)
    }
    unsafe fn setResubscribeAutomatically_(&self, resubscribeAutomatically: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setResubscribeAutomatically : resubscribeAutomatically)
    }
    unsafe fn minInterval(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minInterval)
    }
    unsafe fn setMinInterval_(&self, minInterval: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinInterval : minInterval)
    }
    unsafe fn maxInterval(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxInterval)
    }
    unsafe fn setMaxInterval_(&self, maxInterval: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxInterval : maxInterval)
    }
    unsafe fn shouldReportEventsUrgently(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shouldReportEventsUrgently)
    }
    unsafe fn setReportEventsUrgently_(&self, reportEventsUrgently: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReportEventsUrgently : reportEventsUrgently)
    }
}
impl MTRReadParams_Deprecated for MTRReadParams {}
pub trait MTRReadParams_Deprecated: Sized + std::ops::Deref {
    unsafe fn fabricFiltered(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricFiltered)
    }
    unsafe fn setFabricFiltered_(&self, fabricFiltered: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricFiltered : fabricFiltered)
    }
}
impl MTRSubscribeParams_Deprecated for MTRSubscribeParams {}
pub trait MTRSubscribeParams_Deprecated: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn keepPreviousSubscriptions(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, keepPreviousSubscriptions)
    }
    unsafe fn setKeepPreviousSubscriptions_(&self, keepPreviousSubscriptions: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setKeepPreviousSubscriptions : keepPreviousSubscriptions)
    }
    unsafe fn autoResubscribe(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, autoResubscribe)
    }
    unsafe fn setAutoResubscribe_(&self, autoResubscribe: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAutoResubscribe : autoResubscribe)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSubscribeParams").unwrap(), new)
    }
}
pub type MTRDiagnosticLogType = NSInteger;
pub type MTRDeviceResponseHandler = *mut ::std::os::raw::c_void;
pub type MTRDeviceReportHandler = *mut ::std::os::raw::c_void;
pub type MTRDeviceErrorHandler = *mut ::std::os::raw::c_void;
pub type MTRDeviceResubscriptionScheduledHandler = *mut ::std::os::raw::c_void;
pub type MTRDeviceOpenCommissioningWindowHandler = *mut ::std::os::raw::c_void;
pub type MTRTransportType = u8;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAttributeRequestPath(pub id);
impl std::ops::Deref for MTRAttributeRequestPath {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAttributeRequestPath {}
impl MTRAttributeRequestPath {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAttributeRequestPath").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRAttributeRequestPath {}
impl PNSSecureCoding for MTRAttributeRequestPath {}
impl INSObject for MTRAttributeRequestPath {}
impl PNSObject for MTRAttributeRequestPath {}
impl std::convert::TryFrom<NSObject> for MTRAttributeRequestPath {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRAttributeRequestPath, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAttributeRequestPath").unwrap()) };
        if is_kind_of {
            Ok(MTRAttributeRequestPath(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRAttributeRequestPath")
        }
    }
}
impl IMTRAttributeRequestPath for MTRAttributeRequestPath {}
pub trait IMTRAttributeRequestPath: Sized + std::ops::Deref {
    unsafe fn endpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn cluster(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cluster)
    }
    unsafe fn attribute(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attribute)
    }
    unsafe fn requestPathWithEndpointID_clusterID_attributeID_(
        endpointID: NSNumber,
        clusterID: NSNumber,
        attributeID: NSNumber,
    ) -> MTRAttributeRequestPath
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAttributeRequestPath").unwrap(), requestPathWithEndpointID : endpointID, clusterID : clusterID, attributeID : attributeID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREventRequestPath(pub id);
impl std::ops::Deref for MTREventRequestPath {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREventRequestPath {}
impl MTREventRequestPath {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTREventRequestPath").unwrap(), alloc) })
    }
}
impl PNSCopying for MTREventRequestPath {}
impl PNSSecureCoding for MTREventRequestPath {}
impl INSObject for MTREventRequestPath {}
impl PNSObject for MTREventRequestPath {}
impl std::convert::TryFrom<NSObject> for MTREventRequestPath {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTREventRequestPath, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREventRequestPath").unwrap()) };
        if is_kind_of {
            Ok(MTREventRequestPath(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTREventRequestPath")
        }
    }
}
impl IMTREventRequestPath for MTREventRequestPath {}
pub trait IMTREventRequestPath: Sized + std::ops::Deref {
    unsafe fn endpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn cluster(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cluster)
    }
    unsafe fn event(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, event)
    }
    unsafe fn requestPathWithEndpointID_clusterID_eventID_(
        endpointID: NSNumber,
        clusterID: NSNumber,
        eventID: NSNumber,
    ) -> MTREventRequestPath
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTREventRequestPath").unwrap(), requestPathWithEndpointID : endpointID, clusterID : clusterID, eventID : eventID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseDevice(pub id);
impl std::ops::Deref for MTRBaseDevice {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseDevice {}
impl MTRBaseDevice {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseDevice").unwrap(), alloc) })
    }
}
impl INSObject for MTRBaseDevice {}
impl PNSObject for MTRBaseDevice {}
impl std::convert::TryFrom<NSObject> for MTRBaseDevice {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRBaseDevice, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseDevice").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseDevice(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRBaseDevice")
        }
    }
}
impl IMTRBaseDevice for MTRBaseDevice {}
pub trait IMTRBaseDevice: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn subscribeWithQueue_params_clusterStateCacheContainer_attributeReportHandler_eventReportHandler_errorHandler_subscriptionEstablished_resubscriptionScheduled_(
        &self,
        queue: NSObject,
        params: MTRSubscribeParams,
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        attributeReportHandler: MTRDeviceReportHandler,
        eventReportHandler: MTRDeviceReportHandler,
        errorHandler: MTRDeviceErrorHandler,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        resubscriptionScheduled: MTRDeviceResubscriptionScheduledHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeWithQueue : queue, params : params, clusterStateCacheContainer : clusterStateCacheContainer, attributeReportHandler : attributeReportHandler, eventReportHandler : eventReportHandler, errorHandler : errorHandler, subscriptionEstablished : subscriptionEstablished, resubscriptionScheduled : resubscriptionScheduled)
    }
    unsafe fn readAttributesWithEndpointID_clusterID_attributeID_params_queue_completion_(
        &self,
        endpointID: NSNumber,
        clusterID: NSNumber,
        attributeID: NSNumber,
        params: MTRReadParams,
        queue: NSObject,
        completion: MTRDeviceResponseHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributesWithEndpointID : endpointID, clusterID : clusterID, attributeID : attributeID, params : params, queue : queue, completion : completion)
    }
    unsafe fn readAttributePaths_eventPaths_params_queue_completion_(
        &self,
        attributePaths: NSArray,
        eventPaths: NSArray,
        params: MTRReadParams,
        queue: NSObject,
        completion: MTRDeviceResponseHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePaths : attributePaths, eventPaths : eventPaths, params : params, queue : queue, completion : completion)
    }
    unsafe fn writeAttributeWithEndpointID_clusterID_attributeID_value_timedWriteTimeout_queue_completion_(
        &self,
        endpointID: NSNumber,
        clusterID: NSNumber,
        attributeID: NSNumber,
        value: id,
        timeoutMs: NSNumber,
        queue: NSObject,
        completion: MTRDeviceResponseHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWithEndpointID : endpointID, clusterID : clusterID, attributeID : attributeID, value : value, timedWriteTimeout : timeoutMs, queue : queue, completion : completion)
    }
    unsafe fn invokeCommandWithEndpointID_clusterID_commandID_commandFields_timedInvokeTimeout_queue_completion_(
        &self,
        endpointID: NSNumber,
        clusterID: NSNumber,
        commandID: NSNumber,
        commandFields: id,
        timeoutMs: NSNumber,
        queue: NSObject,
        completion: MTRDeviceResponseHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, invokeCommandWithEndpointID : endpointID, clusterID : clusterID, commandID : commandID, commandFields : commandFields, timedInvokeTimeout : timeoutMs, queue : queue, completion : completion)
    }
    unsafe fn subscribeToAttributesWithEndpointID_clusterID_attributeID_params_queue_reportHandler_subscriptionEstablished_(
        &self,
        endpointID: NSNumber,
        clusterID: NSNumber,
        attributeID: NSNumber,
        params: MTRSubscribeParams,
        queue: NSObject,
        reportHandler: MTRDeviceResponseHandler,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeToAttributesWithEndpointID : endpointID, clusterID : clusterID, attributeID : attributeID, params : params, queue : queue, reportHandler : reportHandler, subscriptionEstablished : subscriptionEstablished)
    }
    unsafe fn subscribeToAttributePaths_eventPaths_params_queue_reportHandler_subscriptionEstablished_resubscriptionScheduled_(
        &self,
        attributePaths: NSArray,
        eventPaths: NSArray,
        params: MTRSubscribeParams,
        queue: NSObject,
        reportHandler: MTRDeviceResponseHandler,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        resubscriptionScheduled: MTRDeviceResubscriptionScheduledHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeToAttributePaths : attributePaths, eventPaths : eventPaths, params : params, queue : queue, reportHandler : reportHandler, subscriptionEstablished : subscriptionEstablished, resubscriptionScheduled : resubscriptionScheduled)
    }
    unsafe fn deregisterReportHandlersWithQueue_completion_(
        &self,
        queue: NSObject,
        completion: dispatch_block_t,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deregisterReportHandlersWithQueue : queue, completion : completion)
    }
    unsafe fn openCommissioningWindowWithSetupPasscode_discriminator_duration_queue_completion_(
        &self,
        setupPasscode: NSNumber,
        discriminator: NSNumber,
        duration: NSNumber,
        queue: NSObject,
        completion: MTRDeviceOpenCommissioningWindowHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, openCommissioningWindowWithSetupPasscode : setupPasscode, discriminator : discriminator, duration : duration, queue : queue, completion : completion)
    }
    unsafe fn openCommissioningWindowWithDiscriminator_duration_queue_completion_(
        &self,
        discriminator: NSNumber,
        duration: NSNumber,
        queue: NSObject,
        completion: MTRDeviceOpenCommissioningWindowHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, openCommissioningWindowWithDiscriminator : discriminator, duration : duration, queue : queue, completion : completion)
    }
    unsafe fn readEventsWithEndpointID_clusterID_eventID_params_queue_completion_(
        &self,
        endpointID: NSNumber,
        clusterID: NSNumber,
        eventID: NSNumber,
        params: MTRReadParams,
        queue: NSObject,
        completion: MTRDeviceResponseHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readEventsWithEndpointID : endpointID, clusterID : clusterID, eventID : eventID, params : params, queue : queue, completion : completion)
    }
    unsafe fn subscribeToEventsWithEndpointID_clusterID_eventID_params_queue_reportHandler_subscriptionEstablished_(
        &self,
        endpointID: NSNumber,
        clusterID: NSNumber,
        eventID: NSNumber,
        params: MTRSubscribeParams,
        queue: NSObject,
        reportHandler: MTRDeviceResponseHandler,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeToEventsWithEndpointID : endpointID, clusterID : clusterID, eventID : eventID, params : params, queue : queue, reportHandler : reportHandler, subscriptionEstablished : subscriptionEstablished)
    }
    unsafe fn downloadLogOfType_timeout_queue_completion_(
        &self,
        type_: MTRDiagnosticLogType,
        timeout: NSTimeInterval,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, downloadLogOfType : type_, timeout : timeout, queue : queue, completion : completion)
    }
    unsafe fn sessionTransportType(&self) -> MTRTransportType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sessionTransportType)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseDevice").unwrap(), new)
    }
    unsafe fn deviceWithNodeID_controller_(
        nodeID: NSNumber,
        controller: MTRDeviceController,
    ) -> MTRBaseDevice
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseDevice").unwrap(), deviceWithNodeID : nodeID, controller : controller)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterPath(pub id);
impl std::ops::Deref for MTRClusterPath {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterPath {}
impl MTRClusterPath {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPath").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRClusterPath {}
impl PNSSecureCoding for MTRClusterPath {}
impl INSObject for MTRClusterPath {}
impl PNSObject for MTRClusterPath {}
impl std::convert::TryFrom<NSObject> for MTRClusterPath {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRClusterPath, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterPath").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterPath(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRClusterPath")
        }
    }
}
impl IMTRClusterPath for MTRClusterPath {}
pub trait IMTRClusterPath: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn endpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn cluster(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cluster)
    }
    unsafe fn clusterPathWithEndpointID_clusterID_(
        endpointID: NSNumber,
        clusterID: NSNumber,
    ) -> MTRClusterPath
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPath").unwrap(), clusterPathWithEndpointID : endpointID, clusterID : clusterID)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPath").unwrap(), new)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAttributePath(pub id);
impl std::ops::Deref for MTRAttributePath {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAttributePath {}
impl MTRAttributePath {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAttributePath").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for MTRAttributePath {}
impl IMTRClusterPath for MTRAttributePath {}
impl PNSCopying for MTRAttributePath {}
impl From<MTRAttributePath> for MTRClusterPath {
    fn from(child: MTRAttributePath) -> MTRClusterPath {
        MTRClusterPath(child.0)
    }
}
impl std::convert::TryFrom<MTRClusterPath> for MTRAttributePath {
    type Error = &'static str;
    fn try_from(parent: MTRClusterPath) -> Result<MTRAttributePath, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAttributePath").unwrap()) };
        if is_kind_of {
            Ok(MTRAttributePath(parent.0))
        } else {
            Err("This MTRClusterPath cannot be downcasted to MTRAttributePath")
        }
    }
}
impl INSObject for MTRAttributePath {}
impl PNSObject for MTRAttributePath {}
impl IMTRAttributePath for MTRAttributePath {}
pub trait IMTRAttributePath: Sized + std::ops::Deref {
    unsafe fn attribute(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attribute)
    }
    unsafe fn attributePathWithEndpointID_clusterID_attributeID_(
        endpointID: NSNumber,
        clusterID: NSNumber,
        attributeID: NSNumber,
    ) -> MTRAttributePath
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAttributePath").unwrap(), attributePathWithEndpointID : endpointID, clusterID : clusterID, attributeID : attributeID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREventPath(pub id);
impl std::ops::Deref for MTREventPath {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREventPath {}
impl MTREventPath {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTREventPath").unwrap(), alloc) })
    }
}
impl IMTRClusterPath for MTREventPath {}
impl PNSCopying for MTREventPath {}
impl PNSSecureCoding for MTREventPath {}
impl std::convert::TryFrom<MTRClusterPath> for MTREventPath {
    type Error = &'static str;
    fn try_from(parent: MTRClusterPath) -> Result<MTREventPath, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREventPath").unwrap()) };
        if is_kind_of {
            Ok(MTREventPath(parent.0))
        } else {
            Err("This MTRClusterPath cannot be downcasted to MTREventPath")
        }
    }
}
impl INSObject for MTREventPath {}
impl PNSObject for MTREventPath {}
impl IMTREventPath for MTREventPath {}
pub trait IMTREventPath: Sized + std::ops::Deref {
    unsafe fn event(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, event)
    }
    unsafe fn eventPathWithEndpointID_clusterID_eventID_(
        endpointID: NSNumber,
        clusterID: NSNumber,
        eventID: NSNumber,
    ) -> MTREventPath
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTREventPath").unwrap(), eventPathWithEndpointID : endpointID, clusterID : clusterID, eventID : eventID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommandPath(pub id);
impl std::ops::Deref for MTRCommandPath {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommandPath {}
impl MTRCommandPath {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommandPath").unwrap(), alloc) })
    }
}
impl IMTRClusterPath for MTRCommandPath {}
impl PNSCopying for MTRCommandPath {}
impl PNSSecureCoding for MTRCommandPath {}
impl std::convert::TryFrom<MTRClusterPath> for MTRCommandPath {
    type Error = &'static str;
    fn try_from(parent: MTRClusterPath) -> Result<MTRCommandPath, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommandPath").unwrap()) };
        if is_kind_of {
            Ok(MTRCommandPath(parent.0))
        } else {
            Err("This MTRClusterPath cannot be downcasted to MTRCommandPath")
        }
    }
}
impl INSObject for MTRCommandPath {}
impl PNSObject for MTRCommandPath {}
impl IMTRCommandPath for MTRCommandPath {}
pub trait IMTRCommandPath: Sized + std::ops::Deref {
    unsafe fn command(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, command)
    }
    unsafe fn commandPathWithEndpointID_clusterID_commandID_(
        endpointID: NSNumber,
        clusterID: NSNumber,
        commandID: NSNumber,
    ) -> MTRCommandPath
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommandPath").unwrap(), commandPathWithEndpointID : endpointID, clusterID : clusterID, commandID : commandID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAttributeReport(pub id);
impl std::ops::Deref for MTRAttributeReport {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAttributeReport {}
impl MTRAttributeReport {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAttributeReport").unwrap(), alloc) })
    }
}
impl INSObject for MTRAttributeReport {}
impl PNSObject for MTRAttributeReport {}
impl std::convert::TryFrom<NSObject> for MTRAttributeReport {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRAttributeReport, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAttributeReport").unwrap()) };
        if is_kind_of {
            Ok(MTRAttributeReport(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRAttributeReport")
        }
    }
}
impl IMTRAttributeReport for MTRAttributeReport {}
pub trait IMTRAttributeReport: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn path(&self) -> MTRAttributePath
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, path)
    }
    unsafe fn value(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn error(&self) -> NSError
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, error)
    }
}
pub type MTREventTimeType = NSUInteger;
pub type MTREventPriority = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREventReport(pub id);
impl std::ops::Deref for MTREventReport {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREventReport {}
impl MTREventReport {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTREventReport").unwrap(), alloc) })
    }
}
impl INSObject for MTREventReport {}
impl PNSObject for MTREventReport {}
impl std::convert::TryFrom<NSObject> for MTREventReport {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTREventReport, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREventReport").unwrap()) };
        if is_kind_of {
            Ok(MTREventReport(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTREventReport")
        }
    }
}
impl IMTREventReport for MTREventReport {}
pub trait IMTREventReport: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn path(&self) -> MTREventPath
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, path)
    }
    unsafe fn eventNumber(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, eventNumber)
    }
    unsafe fn priority(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, priority)
    }
    unsafe fn eventTimeType(&self) -> MTREventTimeType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, eventTimeType)
    }
    unsafe fn systemUpTime(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, systemUpTime)
    }
    unsafe fn timestampDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timestampDate)
    }
    unsafe fn value(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn error(&self) -> NSError
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, error)
    }
}
impl MTRBaseDevice_Deprecated for MTRBaseDevice {}
pub trait MTRBaseDevice_Deprecated: Sized + std::ops::Deref {
    unsafe fn subscribeWithQueue_minInterval_maxInterval_params_cacheContainer_attributeReportHandler_eventReportHandler_errorHandler_subscriptionEstablished_resubscriptionScheduled_(
        &self,
        queue: NSObject,
        minInterval: u16,
        maxInterval: u16,
        params: MTRSubscribeParams,
        attributeCacheContainer: MTRAttributeCacheContainer,
        attributeReportHandler: MTRDeviceReportHandler,
        eventReportHandler: MTRDeviceReportHandler,
        errorHandler: MTRDeviceErrorHandler,
        subscriptionEstablishedHandler: dispatch_block_t,
        resubscriptionScheduledHandler: MTRDeviceResubscriptionScheduledHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeWithQueue : queue, minInterval : minInterval, maxInterval : maxInterval, params : params, cacheContainer : attributeCacheContainer, attributeReportHandler : attributeReportHandler, eventReportHandler : eventReportHandler, errorHandler : errorHandler, subscriptionEstablished : subscriptionEstablishedHandler, resubscriptionScheduled : resubscriptionScheduledHandler)
    }
    unsafe fn readAttributeWithEndpointId_clusterId_attributeId_params_clientQueue_completion_(
        &self,
        endpointId: NSNumber,
        clusterId: NSNumber,
        attributeId: NSNumber,
        params: MTRReadParams,
        clientQueue: NSObject,
        completion: MTRDeviceResponseHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWithEndpointId : endpointId, clusterId : clusterId, attributeId : attributeId, params : params, clientQueue : clientQueue, completion : completion)
    }
    unsafe fn writeAttributeWithEndpointId_clusterId_attributeId_value_timedWriteTimeout_clientQueue_completion_(
        &self,
        endpointId: NSNumber,
        clusterId: NSNumber,
        attributeId: NSNumber,
        value: id,
        timeoutMs: NSNumber,
        clientQueue: NSObject,
        completion: MTRDeviceResponseHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWithEndpointId : endpointId, clusterId : clusterId, attributeId : attributeId, value : value, timedWriteTimeout : timeoutMs, clientQueue : clientQueue, completion : completion)
    }
    unsafe fn invokeCommandWithEndpointId_clusterId_commandId_commandFields_timedInvokeTimeout_clientQueue_completion_(
        &self,
        endpointId: NSNumber,
        clusterId: NSNumber,
        commandId: NSNumber,
        commandFields: id,
        timeoutMs: NSNumber,
        clientQueue: NSObject,
        completion: MTRDeviceResponseHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, invokeCommandWithEndpointId : endpointId, clusterId : clusterId, commandId : commandId, commandFields : commandFields, timedInvokeTimeout : timeoutMs, clientQueue : clientQueue, completion : completion)
    }
    unsafe fn subscribeAttributeWithEndpointId_clusterId_attributeId_minInterval_maxInterval_params_clientQueue_reportHandler_subscriptionEstablished_(
        &self,
        endpointId: NSNumber,
        clusterId: NSNumber,
        attributeId: NSNumber,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        clientQueue: NSObject,
        reportHandler: MTRDeviceResponseHandler,
        subscriptionEstablishedHandler: dispatch_block_t,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWithEndpointId : endpointId, clusterId : clusterId, attributeId : attributeId, minInterval : minInterval, maxInterval : maxInterval, params : params, clientQueue : clientQueue, reportHandler : reportHandler, subscriptionEstablished : subscriptionEstablishedHandler)
    }
    unsafe fn deregisterReportHandlersWithClientQueue_completion_(
        &self,
        queue: NSObject,
        completion: dispatch_block_t,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deregisterReportHandlersWithClientQueue : queue, completion : completion)
    }
}
impl MTRAttributePath_Deprecated for MTRAttributePath {}
pub trait MTRAttributePath_Deprecated: Sized + std::ops::Deref {
    unsafe fn attributePathWithEndpointId_clusterId_attributeId_(
        endpointId: NSNumber,
        clusterId: NSNumber,
        attributeId: NSNumber,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAttributePath").unwrap(), attributePathWithEndpointId : endpointId, clusterId : clusterId, attributeId : attributeId)
    }
}
impl MTREventPath_Deprecated for MTREventPath {}
pub trait MTREventPath_Deprecated: Sized + std::ops::Deref {
    unsafe fn eventPathWithEndpointId_clusterId_eventId_(
        endpointId: NSNumber,
        clusterId: NSNumber,
        eventId: NSNumber,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTREventPath").unwrap(), eventPathWithEndpointId : endpointId, clusterId : clusterId, eventId : eventId)
    }
}
impl MTRCommandPath_Deprecated for MTRCommandPath {}
pub trait MTRCommandPath_Deprecated: Sized + std::ops::Deref {
    unsafe fn commandPathWithEndpointId_clusterId_commandId_(
        endpointId: NSNumber,
        clusterId: NSNumber,
        commandId: NSNumber,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommandPath").unwrap(), commandPathWithEndpointId : endpointId, clusterId : clusterId, commandId : commandId)
    }
}
impl MTREventReport_Deprecated for MTREventReport {}
pub trait MTREventReport_Deprecated: Sized + std::ops::Deref {
    unsafe fn timestamp(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timestamp)
    }
}
pub trait PMTRCommissionableBrowserDelegate: Sized + std::ops::Deref {
    unsafe fn controller_didFindCommissionableDevice_(
        &self,
        controller: MTRDeviceController,
        device: MTRCommissionableBrowserResult,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, controller : controller, didFindCommissionableDevice : device)
    }
    unsafe fn controller_didRemoveCommissionableDevice_(
        &self,
        controller: MTRDeviceController,
        device: MTRCommissionableBrowserResult,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, controller : controller, didRemoveCommissionableDevice : device)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDataTypeCurrencyStruct(pub id);
impl std::ops::Deref for MTRDataTypeCurrencyStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDataTypeCurrencyStruct {}
impl MTRDataTypeCurrencyStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDataTypeCurrencyStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDataTypeCurrencyStruct {}
impl INSObject for MTRDataTypeCurrencyStruct {}
impl PNSObject for MTRDataTypeCurrencyStruct {}
impl std::convert::TryFrom<NSObject> for MTRDataTypeCurrencyStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDataTypeCurrencyStruct, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDataTypeCurrencyStruct").unwrap()) };
        if is_kind_of {
            Ok(MTRDataTypeCurrencyStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDataTypeCurrencyStruct")
        }
    }
}
impl IMTRDataTypeCurrencyStruct for MTRDataTypeCurrencyStruct {}
pub trait IMTRDataTypeCurrencyStruct: Sized + std::ops::Deref {
    unsafe fn currency(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currency)
    }
    unsafe fn setCurrency_(&self, currency: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrency : currency)
    }
    unsafe fn decimalPoints(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, decimalPoints)
    }
    unsafe fn setDecimalPoints_(&self, decimalPoints: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDecimalPoints : decimalPoints)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDataTypePriceStruct(pub id);
impl std::ops::Deref for MTRDataTypePriceStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDataTypePriceStruct {}
impl MTRDataTypePriceStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDataTypePriceStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDataTypePriceStruct {}
impl INSObject for MTRDataTypePriceStruct {}
impl PNSObject for MTRDataTypePriceStruct {}
impl std::convert::TryFrom<NSObject> for MTRDataTypePriceStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDataTypePriceStruct, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDataTypePriceStruct").unwrap()) };
        if is_kind_of {
            Ok(MTRDataTypePriceStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDataTypePriceStruct")
        }
    }
}
impl IMTRDataTypePriceStruct for MTRDataTypePriceStruct {}
pub trait IMTRDataTypePriceStruct: Sized + std::ops::Deref {
    unsafe fn amount(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, amount)
    }
    unsafe fn setAmount_(&self, amount: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAmount : amount)
    }
    unsafe fn currency(&self) -> MTRDataTypeCurrencyStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currency)
    }
    unsafe fn setCurrency_(&self, currency: MTRDataTypeCurrencyStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrency : currency)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDataTypeMeasurementAccuracyRangeStruct(pub id);
impl std::ops::Deref for MTRDataTypeMeasurementAccuracyRangeStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDataTypeMeasurementAccuracyRangeStruct {}
impl MTRDataTypeMeasurementAccuracyRangeStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDataTypeMeasurementAccuracyRangeStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDataTypeMeasurementAccuracyRangeStruct {}
impl INSObject for MTRDataTypeMeasurementAccuracyRangeStruct {}
impl PNSObject for MTRDataTypeMeasurementAccuracyRangeStruct {}
impl std::convert::TryFrom<NSObject> for MTRDataTypeMeasurementAccuracyRangeStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDataTypeMeasurementAccuracyRangeStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDataTypeMeasurementAccuracyRangeStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRDataTypeMeasurementAccuracyRangeStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDataTypeMeasurementAccuracyRangeStruct")
        }
    }
}
impl IMTRDataTypeMeasurementAccuracyRangeStruct for MTRDataTypeMeasurementAccuracyRangeStruct {}
pub trait IMTRDataTypeMeasurementAccuracyRangeStruct: Sized + std::ops::Deref {
    unsafe fn rangeMin(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rangeMin)
    }
    unsafe fn setRangeMin_(&self, rangeMin: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRangeMin : rangeMin)
    }
    unsafe fn rangeMax(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rangeMax)
    }
    unsafe fn setRangeMax_(&self, rangeMax: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRangeMax : rangeMax)
    }
    unsafe fn percentMax(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, percentMax)
    }
    unsafe fn setPercentMax_(&self, percentMax: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPercentMax : percentMax)
    }
    unsafe fn percentMin(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, percentMin)
    }
    unsafe fn setPercentMin_(&self, percentMin: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPercentMin : percentMin)
    }
    unsafe fn percentTypical(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, percentTypical)
    }
    unsafe fn setPercentTypical_(&self, percentTypical: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPercentTypical : percentTypical)
    }
    unsafe fn fixedMax(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fixedMax)
    }
    unsafe fn setFixedMax_(&self, fixedMax: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFixedMax : fixedMax)
    }
    unsafe fn fixedMin(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fixedMin)
    }
    unsafe fn setFixedMin_(&self, fixedMin: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFixedMin : fixedMin)
    }
    unsafe fn fixedTypical(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fixedTypical)
    }
    unsafe fn setFixedTypical_(&self, fixedTypical: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFixedTypical : fixedTypical)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDataTypeMeasurementAccuracyStruct(pub id);
impl std::ops::Deref for MTRDataTypeMeasurementAccuracyStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDataTypeMeasurementAccuracyStruct {}
impl MTRDataTypeMeasurementAccuracyStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDataTypeMeasurementAccuracyStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDataTypeMeasurementAccuracyStruct {}
impl INSObject for MTRDataTypeMeasurementAccuracyStruct {}
impl PNSObject for MTRDataTypeMeasurementAccuracyStruct {}
impl std::convert::TryFrom<NSObject> for MTRDataTypeMeasurementAccuracyStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDataTypeMeasurementAccuracyStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDataTypeMeasurementAccuracyStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRDataTypeMeasurementAccuracyStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDataTypeMeasurementAccuracyStruct")
        }
    }
}
impl IMTRDataTypeMeasurementAccuracyStruct for MTRDataTypeMeasurementAccuracyStruct {}
pub trait IMTRDataTypeMeasurementAccuracyStruct: Sized + std::ops::Deref {
    unsafe fn measurementType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, measurementType)
    }
    unsafe fn setMeasurementType_(&self, measurementType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMeasurementType : measurementType)
    }
    unsafe fn measured(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, measured)
    }
    unsafe fn setMeasured_(&self, measured: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMeasured : measured)
    }
    unsafe fn minMeasuredValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minMeasuredValue)
    }
    unsafe fn setMinMeasuredValue_(&self, minMeasuredValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinMeasuredValue : minMeasuredValue)
    }
    unsafe fn maxMeasuredValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxMeasuredValue)
    }
    unsafe fn setMaxMeasuredValue_(&self, maxMeasuredValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxMeasuredValue : maxMeasuredValue)
    }
    unsafe fn accuracyRanges(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, accuracyRanges)
    }
    unsafe fn setAccuracyRanges_(&self, accuracyRanges: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAccuracyRanges : accuracyRanges)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDataTypeAtomicAttributeStatusStruct(pub id);
impl std::ops::Deref for MTRDataTypeAtomicAttributeStatusStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDataTypeAtomicAttributeStatusStruct {}
impl MTRDataTypeAtomicAttributeStatusStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDataTypeAtomicAttributeStatusStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDataTypeAtomicAttributeStatusStruct {}
impl INSObject for MTRDataTypeAtomicAttributeStatusStruct {}
impl PNSObject for MTRDataTypeAtomicAttributeStatusStruct {}
impl std::convert::TryFrom<NSObject> for MTRDataTypeAtomicAttributeStatusStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDataTypeAtomicAttributeStatusStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDataTypeAtomicAttributeStatusStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRDataTypeAtomicAttributeStatusStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDataTypeAtomicAttributeStatusStruct")
        }
    }
}
impl IMTRDataTypeAtomicAttributeStatusStruct for MTRDataTypeAtomicAttributeStatusStruct {}
pub trait IMTRDataTypeAtomicAttributeStatusStruct: Sized + std::ops::Deref {
    unsafe fn attributeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attributeID)
    }
    unsafe fn setAttributeID_(&self, attributeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttributeID : attributeID)
    }
    unsafe fn statusCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusCode)
    }
    unsafe fn setStatusCode_(&self, statusCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusCode : statusCode)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDataTypeICECandidateStruct(pub id);
impl std::ops::Deref for MTRDataTypeICECandidateStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDataTypeICECandidateStruct {}
impl MTRDataTypeICECandidateStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDataTypeICECandidateStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDataTypeICECandidateStruct {}
impl INSObject for MTRDataTypeICECandidateStruct {}
impl PNSObject for MTRDataTypeICECandidateStruct {}
impl std::convert::TryFrom<NSObject> for MTRDataTypeICECandidateStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDataTypeICECandidateStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDataTypeICECandidateStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRDataTypeICECandidateStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDataTypeICECandidateStruct")
        }
    }
}
impl IMTRDataTypeICECandidateStruct for MTRDataTypeICECandidateStruct {}
pub trait IMTRDataTypeICECandidateStruct: Sized + std::ops::Deref {
    unsafe fn candidate(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, candidate)
    }
    unsafe fn setCandidate_(&self, candidate: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCandidate : candidate)
    }
    unsafe fn sdpMid(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sdpMid)
    }
    unsafe fn setSdpMid_(&self, sdpMid: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSdpMid : sdpMid)
    }
    unsafe fn sdpmLineIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sdpmLineIndex)
    }
    unsafe fn setSdpmLineIndex_(&self, sdpmLineIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSdpmLineIndex : sdpmLineIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDataTypeICEServerStruct(pub id);
impl std::ops::Deref for MTRDataTypeICEServerStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDataTypeICEServerStruct {}
impl MTRDataTypeICEServerStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDataTypeICEServerStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDataTypeICEServerStruct {}
impl INSObject for MTRDataTypeICEServerStruct {}
impl PNSObject for MTRDataTypeICEServerStruct {}
impl std::convert::TryFrom<NSObject> for MTRDataTypeICEServerStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDataTypeICEServerStruct, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDataTypeICEServerStruct").unwrap()) };
        if is_kind_of {
            Ok(MTRDataTypeICEServerStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDataTypeICEServerStruct")
        }
    }
}
impl IMTRDataTypeICEServerStruct for MTRDataTypeICEServerStruct {}
pub trait IMTRDataTypeICEServerStruct: Sized + std::ops::Deref {
    unsafe fn urls(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, urls)
    }
    unsafe fn setUrls_(&self, urls: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUrls : urls)
    }
    unsafe fn username(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, username)
    }
    unsafe fn setUsername_(&self, username: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUsername : username)
    }
    unsafe fn credential(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credential)
    }
    unsafe fn setCredential_(&self, credential: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredential : credential)
    }
    unsafe fn caid(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, caid)
    }
    unsafe fn setCaid_(&self, caid: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCaid : caid)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDataTypeLocationDescriptorStruct(pub id);
impl std::ops::Deref for MTRDataTypeLocationDescriptorStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDataTypeLocationDescriptorStruct {}
impl MTRDataTypeLocationDescriptorStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDataTypeLocationDescriptorStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDataTypeLocationDescriptorStruct {}
impl INSObject for MTRDataTypeLocationDescriptorStruct {}
impl PNSObject for MTRDataTypeLocationDescriptorStruct {}
impl std::convert::TryFrom<NSObject> for MTRDataTypeLocationDescriptorStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDataTypeLocationDescriptorStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDataTypeLocationDescriptorStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRDataTypeLocationDescriptorStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDataTypeLocationDescriptorStruct")
        }
    }
}
impl IMTRDataTypeLocationDescriptorStruct for MTRDataTypeLocationDescriptorStruct {}
pub trait IMTRDataTypeLocationDescriptorStruct: Sized + std::ops::Deref {
    unsafe fn locationName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, locationName)
    }
    unsafe fn setLocationName_(&self, locationName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocationName : locationName)
    }
    unsafe fn floorNumber(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, floorNumber)
    }
    unsafe fn setFloorNumber_(&self, floorNumber: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFloorNumber : floorNumber)
    }
    unsafe fn areaType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, areaType)
    }
    unsafe fn setAreaType_(&self, areaType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAreaType : areaType)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDataTypePowerThresholdStruct(pub id);
impl std::ops::Deref for MTRDataTypePowerThresholdStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDataTypePowerThresholdStruct {}
impl MTRDataTypePowerThresholdStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDataTypePowerThresholdStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDataTypePowerThresholdStruct {}
impl INSObject for MTRDataTypePowerThresholdStruct {}
impl PNSObject for MTRDataTypePowerThresholdStruct {}
impl std::convert::TryFrom<NSObject> for MTRDataTypePowerThresholdStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDataTypePowerThresholdStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDataTypePowerThresholdStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRDataTypePowerThresholdStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDataTypePowerThresholdStruct")
        }
    }
}
impl IMTRDataTypePowerThresholdStruct for MTRDataTypePowerThresholdStruct {}
pub trait IMTRDataTypePowerThresholdStruct: Sized + std::ops::Deref {
    unsafe fn powerThreshold(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, powerThreshold)
    }
    unsafe fn setPowerThreshold_(&self, powerThreshold: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPowerThreshold : powerThreshold)
    }
    unsafe fn apparentPowerThreshold(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, apparentPowerThreshold)
    }
    unsafe fn setApparentPowerThreshold_(&self, apparentPowerThreshold: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setApparentPowerThreshold : apparentPowerThreshold)
    }
    unsafe fn powerThresholdSource(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, powerThresholdSource)
    }
    unsafe fn setPowerThresholdSource_(&self, powerThresholdSource: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPowerThresholdSource : powerThresholdSource)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDataTypeSemanticTagStruct(pub id);
impl std::ops::Deref for MTRDataTypeSemanticTagStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDataTypeSemanticTagStruct {}
impl MTRDataTypeSemanticTagStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDataTypeSemanticTagStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDataTypeSemanticTagStruct {}
impl INSObject for MTRDataTypeSemanticTagStruct {}
impl PNSObject for MTRDataTypeSemanticTagStruct {}
impl std::convert::TryFrom<NSObject> for MTRDataTypeSemanticTagStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDataTypeSemanticTagStruct, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDataTypeSemanticTagStruct").unwrap()) };
        if is_kind_of {
            Ok(MTRDataTypeSemanticTagStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDataTypeSemanticTagStruct")
        }
    }
}
impl IMTRDataTypeSemanticTagStruct for MTRDataTypeSemanticTagStruct {}
pub trait IMTRDataTypeSemanticTagStruct: Sized + std::ops::Deref {
    unsafe fn mfgCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mfgCode)
    }
    unsafe fn setMfgCode_(&self, mfgCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMfgCode : mfgCode)
    }
    unsafe fn namespaceID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, namespaceID)
    }
    unsafe fn setNamespaceID_(&self, namespaceID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNamespaceID : namespaceID)
    }
    unsafe fn tag(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tag)
    }
    unsafe fn setTag_(&self, tag: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTag : tag)
    }
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDataTypeTestGlobalStruct(pub id);
impl std::ops::Deref for MTRDataTypeTestGlobalStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDataTypeTestGlobalStruct {}
impl MTRDataTypeTestGlobalStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDataTypeTestGlobalStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDataTypeTestGlobalStruct {}
impl INSObject for MTRDataTypeTestGlobalStruct {}
impl PNSObject for MTRDataTypeTestGlobalStruct {}
impl std::convert::TryFrom<NSObject> for MTRDataTypeTestGlobalStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDataTypeTestGlobalStruct, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDataTypeTestGlobalStruct").unwrap()) };
        if is_kind_of {
            Ok(MTRDataTypeTestGlobalStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDataTypeTestGlobalStruct")
        }
    }
}
impl IMTRDataTypeTestGlobalStruct for MTRDataTypeTestGlobalStruct {}
pub trait IMTRDataTypeTestGlobalStruct: Sized + std::ops::Deref {
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn myBitmap(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, myBitmap)
    }
    unsafe fn setMyBitmap_(&self, myBitmap: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMyBitmap : myBitmap)
    }
    unsafe fn myEnum(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, myEnum)
    }
    unsafe fn setMyEnum_(&self, myEnum: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMyEnum : myEnum)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDataTypeViewportStruct(pub id);
impl std::ops::Deref for MTRDataTypeViewportStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDataTypeViewportStruct {}
impl MTRDataTypeViewportStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDataTypeViewportStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDataTypeViewportStruct {}
impl INSObject for MTRDataTypeViewportStruct {}
impl PNSObject for MTRDataTypeViewportStruct {}
impl std::convert::TryFrom<NSObject> for MTRDataTypeViewportStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDataTypeViewportStruct, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDataTypeViewportStruct").unwrap()) };
        if is_kind_of {
            Ok(MTRDataTypeViewportStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDataTypeViewportStruct")
        }
    }
}
impl IMTRDataTypeViewportStruct for MTRDataTypeViewportStruct {}
pub trait IMTRDataTypeViewportStruct: Sized + std::ops::Deref {
    unsafe fn x1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, x1)
    }
    unsafe fn setX1_(&self, x1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setX1 : x1)
    }
    unsafe fn y1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, y1)
    }
    unsafe fn setY1_(&self, y1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setY1 : y1)
    }
    unsafe fn x2(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, x2)
    }
    unsafe fn setX2_(&self, x2: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setX2 : x2)
    }
    unsafe fn y2(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, y2)
    }
    unsafe fn setY2_(&self, y2: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setY2 : y2)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDataTypeWebRTCSessionStruct(pub id);
impl std::ops::Deref for MTRDataTypeWebRTCSessionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDataTypeWebRTCSessionStruct {}
impl MTRDataTypeWebRTCSessionStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDataTypeWebRTCSessionStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDataTypeWebRTCSessionStruct {}
impl INSObject for MTRDataTypeWebRTCSessionStruct {}
impl PNSObject for MTRDataTypeWebRTCSessionStruct {}
impl std::convert::TryFrom<NSObject> for MTRDataTypeWebRTCSessionStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDataTypeWebRTCSessionStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDataTypeWebRTCSessionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRDataTypeWebRTCSessionStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDataTypeWebRTCSessionStruct")
        }
    }
}
impl IMTRDataTypeWebRTCSessionStruct for MTRDataTypeWebRTCSessionStruct {}
pub trait IMTRDataTypeWebRTCSessionStruct: Sized + std::ops::Deref {
    unsafe fn id(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, id)
    }
    unsafe fn setId_(&self, id: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setId : id)
    }
    unsafe fn peerNodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, peerNodeID)
    }
    unsafe fn setPeerNodeID_(&self, peerNodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPeerNodeID : peerNodeID)
    }
    unsafe fn peerEndpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, peerEndpointID)
    }
    unsafe fn setPeerEndpointID_(&self, peerEndpointID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPeerEndpointID : peerEndpointID)
    }
    unsafe fn streamUsage(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, streamUsage)
    }
    unsafe fn setStreamUsage_(&self, streamUsage: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStreamUsage : streamUsage)
    }
    unsafe fn videoStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, videoStreamID)
    }
    unsafe fn setVideoStreamID_(&self, videoStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVideoStreamID : videoStreamID)
    }
    unsafe fn audioStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, audioStreamID)
    }
    unsafe fn setAudioStreamID_(&self, audioStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAudioStreamID : audioStreamID)
    }
    unsafe fn metadataEnabled(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, metadataEnabled)
    }
    unsafe fn setMetadataEnabled_(&self, metadataEnabled: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMetadataEnabled : metadataEnabled)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDescriptorClusterDeviceTypeStruct(pub id);
impl std::ops::Deref for MTRDescriptorClusterDeviceTypeStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDescriptorClusterDeviceTypeStruct {}
impl MTRDescriptorClusterDeviceTypeStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDescriptorClusterDeviceTypeStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDescriptorClusterDeviceTypeStruct {}
impl INSObject for MTRDescriptorClusterDeviceTypeStruct {}
impl PNSObject for MTRDescriptorClusterDeviceTypeStruct {}
impl std::convert::TryFrom<NSObject> for MTRDescriptorClusterDeviceTypeStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDescriptorClusterDeviceTypeStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDescriptorClusterDeviceTypeStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRDescriptorClusterDeviceTypeStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDescriptorClusterDeviceTypeStruct")
        }
    }
}
impl IMTRDescriptorClusterDeviceTypeStruct for MTRDescriptorClusterDeviceTypeStruct {}
pub trait IMTRDescriptorClusterDeviceTypeStruct: Sized + std::ops::Deref {
    unsafe fn deviceType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deviceType)
    }
    unsafe fn setDeviceType_(&self, deviceType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDeviceType : deviceType)
    }
    unsafe fn type_(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, type)
    }
    unsafe fn setType_(&self, type_: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setType : type_)
    }
    unsafe fn revision(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, revision)
    }
    unsafe fn setRevision_(&self, revision: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRevision : revision)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDescriptorClusterDeviceType(pub id);
impl std::ops::Deref for MTRDescriptorClusterDeviceType {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDescriptorClusterDeviceType {}
impl MTRDescriptorClusterDeviceType {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDescriptorClusterDeviceType").unwrap(), alloc) })
    }
}
impl IMTRDescriptorClusterDeviceTypeStruct for MTRDescriptorClusterDeviceType {}
impl PNSCopying for MTRDescriptorClusterDeviceType {}
impl From<MTRDescriptorClusterDeviceType> for MTRDescriptorClusterDeviceTypeStruct {
    fn from(child: MTRDescriptorClusterDeviceType) -> MTRDescriptorClusterDeviceTypeStruct {
        MTRDescriptorClusterDeviceTypeStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRDescriptorClusterDeviceTypeStruct>
    for MTRDescriptorClusterDeviceType
{
    type Error = &'static str;
    fn try_from(
        parent: MTRDescriptorClusterDeviceTypeStruct,
    ) -> Result<MTRDescriptorClusterDeviceType, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDescriptorClusterDeviceType").unwrap())
        };
        if is_kind_of {
            Ok(MTRDescriptorClusterDeviceType(parent.0))
        } else {
            Err ("This MTRDescriptorClusterDeviceTypeStruct cannot be downcasted to MTRDescriptorClusterDeviceType" ,)
        }
    }
}
impl INSObject for MTRDescriptorClusterDeviceType {}
impl PNSObject for MTRDescriptorClusterDeviceType {}
impl IMTRDescriptorClusterDeviceType for MTRDescriptorClusterDeviceType {}
pub trait IMTRDescriptorClusterDeviceType: Sized + std::ops::Deref {
    unsafe fn revision(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, revision)
    }
    unsafe fn setRevision_(&self, revision: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRevision : revision)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBindingClusterTargetStruct(pub id);
impl std::ops::Deref for MTRBindingClusterTargetStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBindingClusterTargetStruct {}
impl MTRBindingClusterTargetStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBindingClusterTargetStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRBindingClusterTargetStruct {}
impl INSObject for MTRBindingClusterTargetStruct {}
impl PNSObject for MTRBindingClusterTargetStruct {}
impl std::convert::TryFrom<NSObject> for MTRBindingClusterTargetStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRBindingClusterTargetStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBindingClusterTargetStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRBindingClusterTargetStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRBindingClusterTargetStruct")
        }
    }
}
impl IMTRBindingClusterTargetStruct for MTRBindingClusterTargetStruct {}
pub trait IMTRBindingClusterTargetStruct: Sized + std::ops::Deref {
    unsafe fn node(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, node)
    }
    unsafe fn setNode_(&self, node: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNode : node)
    }
    unsafe fn group(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, group)
    }
    unsafe fn setGroup_(&self, group: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroup : group)
    }
    unsafe fn endpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn setEndpoint_(&self, endpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoint : endpoint)
    }
    unsafe fn cluster(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cluster)
    }
    unsafe fn setCluster_(&self, cluster: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCluster : cluster)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAccessControlClusterAccessRestrictionStruct(pub id);
impl std::ops::Deref for MTRAccessControlClusterAccessRestrictionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAccessControlClusterAccessRestrictionStruct {}
impl MTRAccessControlClusterAccessRestrictionStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccessControlClusterAccessRestrictionStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRAccessControlClusterAccessRestrictionStruct {}
impl INSObject for MTRAccessControlClusterAccessRestrictionStruct {}
impl PNSObject for MTRAccessControlClusterAccessRestrictionStruct {}
impl std::convert::TryFrom<NSObject> for MTRAccessControlClusterAccessRestrictionStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRAccessControlClusterAccessRestrictionStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAccessControlClusterAccessRestrictionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRAccessControlClusterAccessRestrictionStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRAccessControlClusterAccessRestrictionStruct" ,)
        }
    }
}
impl IMTRAccessControlClusterAccessRestrictionStruct
    for MTRAccessControlClusterAccessRestrictionStruct
{
}
pub trait IMTRAccessControlClusterAccessRestrictionStruct: Sized + std::ops::Deref {
    unsafe fn type_(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, type)
    }
    unsafe fn setType_(&self, type_: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setType : type_)
    }
    unsafe fn id(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, id)
    }
    unsafe fn setId_(&self, id: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setId : id)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAccessControlClusterCommissioningAccessRestrictionEntryStruct(pub id);
impl std::ops::Deref for MTRAccessControlClusterCommissioningAccessRestrictionEntryStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAccessControlClusterCommissioningAccessRestrictionEntryStruct {}
impl MTRAccessControlClusterCommissioningAccessRestrictionEntryStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccessControlClusterCommissioningAccessRestrictionEntryStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRAccessControlClusterCommissioningAccessRestrictionEntryStruct {}
impl INSObject for MTRAccessControlClusterCommissioningAccessRestrictionEntryStruct {}
impl PNSObject for MTRAccessControlClusterCommissioningAccessRestrictionEntryStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRAccessControlClusterCommissioningAccessRestrictionEntryStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRAccessControlClusterCommissioningAccessRestrictionEntryStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAccessControlClusterCommissioningAccessRestrictionEntryStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRAccessControlClusterCommissioningAccessRestrictionEntryStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRAccessControlClusterCommissioningAccessRestrictionEntryStruct" ,)
        }
    }
}
impl IMTRAccessControlClusterCommissioningAccessRestrictionEntryStruct
    for MTRAccessControlClusterCommissioningAccessRestrictionEntryStruct
{
}
pub trait IMTRAccessControlClusterCommissioningAccessRestrictionEntryStruct:
    Sized + std::ops::Deref
{
    unsafe fn endpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn setEndpoint_(&self, endpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoint : endpoint)
    }
    unsafe fn cluster(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cluster)
    }
    unsafe fn setCluster_(&self, cluster: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCluster : cluster)
    }
    unsafe fn restrictions(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, restrictions)
    }
    unsafe fn setRestrictions_(&self, restrictions: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRestrictions : restrictions)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAccessControlClusterAccessRestrictionEntryStruct(pub id);
impl std::ops::Deref for MTRAccessControlClusterAccessRestrictionEntryStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAccessControlClusterAccessRestrictionEntryStruct {}
impl MTRAccessControlClusterAccessRestrictionEntryStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccessControlClusterAccessRestrictionEntryStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRAccessControlClusterAccessRestrictionEntryStruct {}
impl INSObject for MTRAccessControlClusterAccessRestrictionEntryStruct {}
impl PNSObject for MTRAccessControlClusterAccessRestrictionEntryStruct {}
impl std::convert::TryFrom<NSObject> for MTRAccessControlClusterAccessRestrictionEntryStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRAccessControlClusterAccessRestrictionEntryStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAccessControlClusterAccessRestrictionEntryStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRAccessControlClusterAccessRestrictionEntryStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRAccessControlClusterAccessRestrictionEntryStruct" ,)
        }
    }
}
impl IMTRAccessControlClusterAccessRestrictionEntryStruct
    for MTRAccessControlClusterAccessRestrictionEntryStruct
{
}
pub trait IMTRAccessControlClusterAccessRestrictionEntryStruct: Sized + std::ops::Deref {
    unsafe fn endpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn setEndpoint_(&self, endpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoint : endpoint)
    }
    unsafe fn cluster(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cluster)
    }
    unsafe fn setCluster_(&self, cluster: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCluster : cluster)
    }
    unsafe fn restrictions(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, restrictions)
    }
    unsafe fn setRestrictions_(&self, restrictions: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRestrictions : restrictions)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAccessControlClusterAccessControlTargetStruct(pub id);
impl std::ops::Deref for MTRAccessControlClusterAccessControlTargetStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAccessControlClusterAccessControlTargetStruct {}
impl MTRAccessControlClusterAccessControlTargetStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccessControlClusterAccessControlTargetStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRAccessControlClusterAccessControlTargetStruct {}
impl INSObject for MTRAccessControlClusterAccessControlTargetStruct {}
impl PNSObject for MTRAccessControlClusterAccessControlTargetStruct {}
impl std::convert::TryFrom<NSObject> for MTRAccessControlClusterAccessControlTargetStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRAccessControlClusterAccessControlTargetStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAccessControlClusterAccessControlTargetStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRAccessControlClusterAccessControlTargetStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRAccessControlClusterAccessControlTargetStruct" ,)
        }
    }
}
impl IMTRAccessControlClusterAccessControlTargetStruct
    for MTRAccessControlClusterAccessControlTargetStruct
{
}
pub trait IMTRAccessControlClusterAccessControlTargetStruct: Sized + std::ops::Deref {
    unsafe fn cluster(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cluster)
    }
    unsafe fn setCluster_(&self, cluster: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCluster : cluster)
    }
    unsafe fn endpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn setEndpoint_(&self, endpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoint : endpoint)
    }
    unsafe fn deviceType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deviceType)
    }
    unsafe fn setDeviceType_(&self, deviceType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDeviceType : deviceType)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAccessControlClusterTarget(pub id);
impl std::ops::Deref for MTRAccessControlClusterTarget {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAccessControlClusterTarget {}
impl MTRAccessControlClusterTarget {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccessControlClusterTarget").unwrap(), alloc) })
    }
}
impl IMTRAccessControlClusterAccessControlTargetStruct for MTRAccessControlClusterTarget {}
impl PNSCopying for MTRAccessControlClusterTarget {}
impl From<MTRAccessControlClusterTarget> for MTRAccessControlClusterAccessControlTargetStruct {
    fn from(
        child: MTRAccessControlClusterTarget,
    ) -> MTRAccessControlClusterAccessControlTargetStruct {
        MTRAccessControlClusterAccessControlTargetStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRAccessControlClusterAccessControlTargetStruct>
    for MTRAccessControlClusterTarget
{
    type Error = &'static str;
    fn try_from(
        parent: MTRAccessControlClusterAccessControlTargetStruct,
    ) -> Result<MTRAccessControlClusterTarget, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAccessControlClusterTarget").unwrap())
        };
        if is_kind_of {
            Ok(MTRAccessControlClusterTarget(parent.0))
        } else {
            Err ("This MTRAccessControlClusterAccessControlTargetStruct cannot be downcasted to MTRAccessControlClusterTarget" ,)
        }
    }
}
impl INSObject for MTRAccessControlClusterTarget {}
impl PNSObject for MTRAccessControlClusterTarget {}
impl IMTRAccessControlClusterTarget for MTRAccessControlClusterTarget {}
pub trait IMTRAccessControlClusterTarget: Sized + std::ops::Deref {
    unsafe fn cluster(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cluster)
    }
    unsafe fn setCluster_(&self, cluster: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCluster : cluster)
    }
    unsafe fn endpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn setEndpoint_(&self, endpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoint : endpoint)
    }
    unsafe fn deviceType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deviceType)
    }
    unsafe fn setDeviceType_(&self, deviceType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDeviceType : deviceType)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAccessControlClusterAccessControlEntryStruct(pub id);
impl std::ops::Deref for MTRAccessControlClusterAccessControlEntryStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAccessControlClusterAccessControlEntryStruct {}
impl MTRAccessControlClusterAccessControlEntryStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccessControlClusterAccessControlEntryStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRAccessControlClusterAccessControlEntryStruct {}
impl INSObject for MTRAccessControlClusterAccessControlEntryStruct {}
impl PNSObject for MTRAccessControlClusterAccessControlEntryStruct {}
impl std::convert::TryFrom<NSObject> for MTRAccessControlClusterAccessControlEntryStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRAccessControlClusterAccessControlEntryStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAccessControlClusterAccessControlEntryStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRAccessControlClusterAccessControlEntryStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRAccessControlClusterAccessControlEntryStruct" ,)
        }
    }
}
impl IMTRAccessControlClusterAccessControlEntryStruct
    for MTRAccessControlClusterAccessControlEntryStruct
{
}
pub trait IMTRAccessControlClusterAccessControlEntryStruct: Sized + std::ops::Deref {
    unsafe fn privilege(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, privilege)
    }
    unsafe fn setPrivilege_(&self, privilege: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPrivilege : privilege)
    }
    unsafe fn authMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, authMode)
    }
    unsafe fn setAuthMode_(&self, authMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAuthMode : authMode)
    }
    unsafe fn subjects(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, subjects)
    }
    unsafe fn setSubjects_(&self, subjects: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSubjects : subjects)
    }
    unsafe fn targets(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, targets)
    }
    unsafe fn setTargets_(&self, targets: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTargets : targets)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAccessControlClusterAccessControlEntry(pub id);
impl std::ops::Deref for MTRAccessControlClusterAccessControlEntry {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAccessControlClusterAccessControlEntry {}
impl MTRAccessControlClusterAccessControlEntry {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccessControlClusterAccessControlEntry").unwrap(), alloc) })
    }
}
impl IMTRAccessControlClusterAccessControlEntryStruct
    for MTRAccessControlClusterAccessControlEntry
{
}
impl PNSCopying for MTRAccessControlClusterAccessControlEntry {}
impl From<MTRAccessControlClusterAccessControlEntry>
    for MTRAccessControlClusterAccessControlEntryStruct
{
    fn from(
        child: MTRAccessControlClusterAccessControlEntry,
    ) -> MTRAccessControlClusterAccessControlEntryStruct {
        MTRAccessControlClusterAccessControlEntryStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRAccessControlClusterAccessControlEntryStruct>
    for MTRAccessControlClusterAccessControlEntry
{
    type Error = &'static str;
    fn try_from(
        parent: MTRAccessControlClusterAccessControlEntryStruct,
    ) -> Result<MTRAccessControlClusterAccessControlEntry, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAccessControlClusterAccessControlEntry").unwrap())
        };
        if is_kind_of {
            Ok(MTRAccessControlClusterAccessControlEntry(parent.0))
        } else {
            Err ("This MTRAccessControlClusterAccessControlEntryStruct cannot be downcasted to MTRAccessControlClusterAccessControlEntry" ,)
        }
    }
}
impl INSObject for MTRAccessControlClusterAccessControlEntry {}
impl PNSObject for MTRAccessControlClusterAccessControlEntry {}
impl IMTRAccessControlClusterAccessControlEntry for MTRAccessControlClusterAccessControlEntry {}
pub trait IMTRAccessControlClusterAccessControlEntry: Sized + std::ops::Deref {
    unsafe fn privilege(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, privilege)
    }
    unsafe fn setPrivilege_(&self, privilege: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPrivilege : privilege)
    }
    unsafe fn authMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, authMode)
    }
    unsafe fn setAuthMode_(&self, authMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAuthMode : authMode)
    }
    unsafe fn subjects(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, subjects)
    }
    unsafe fn setSubjects_(&self, subjects: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSubjects : subjects)
    }
    unsafe fn targets(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, targets)
    }
    unsafe fn setTargets_(&self, targets: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTargets : targets)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAccessControlClusterAccessControlExtensionStruct(pub id);
impl std::ops::Deref for MTRAccessControlClusterAccessControlExtensionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAccessControlClusterAccessControlExtensionStruct {}
impl MTRAccessControlClusterAccessControlExtensionStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccessControlClusterAccessControlExtensionStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRAccessControlClusterAccessControlExtensionStruct {}
impl INSObject for MTRAccessControlClusterAccessControlExtensionStruct {}
impl PNSObject for MTRAccessControlClusterAccessControlExtensionStruct {}
impl std::convert::TryFrom<NSObject> for MTRAccessControlClusterAccessControlExtensionStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRAccessControlClusterAccessControlExtensionStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAccessControlClusterAccessControlExtensionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRAccessControlClusterAccessControlExtensionStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRAccessControlClusterAccessControlExtensionStruct" ,)
        }
    }
}
impl IMTRAccessControlClusterAccessControlExtensionStruct
    for MTRAccessControlClusterAccessControlExtensionStruct
{
}
pub trait IMTRAccessControlClusterAccessControlExtensionStruct: Sized + std::ops::Deref {
    unsafe fn data(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn setData_(&self, data: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setData : data)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAccessControlClusterExtensionEntry(pub id);
impl std::ops::Deref for MTRAccessControlClusterExtensionEntry {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAccessControlClusterExtensionEntry {}
impl MTRAccessControlClusterExtensionEntry {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccessControlClusterExtensionEntry").unwrap(), alloc) })
    }
}
impl IMTRAccessControlClusterAccessControlExtensionStruct
    for MTRAccessControlClusterExtensionEntry
{
}
impl PNSCopying for MTRAccessControlClusterExtensionEntry {}
impl From<MTRAccessControlClusterExtensionEntry>
    for MTRAccessControlClusterAccessControlExtensionStruct
{
    fn from(
        child: MTRAccessControlClusterExtensionEntry,
    ) -> MTRAccessControlClusterAccessControlExtensionStruct {
        MTRAccessControlClusterAccessControlExtensionStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRAccessControlClusterAccessControlExtensionStruct>
    for MTRAccessControlClusterExtensionEntry
{
    type Error = &'static str;
    fn try_from(
        parent: MTRAccessControlClusterAccessControlExtensionStruct,
    ) -> Result<MTRAccessControlClusterExtensionEntry, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAccessControlClusterExtensionEntry").unwrap())
        };
        if is_kind_of {
            Ok(MTRAccessControlClusterExtensionEntry(parent.0))
        } else {
            Err ("This MTRAccessControlClusterAccessControlExtensionStruct cannot be downcasted to MTRAccessControlClusterExtensionEntry" ,)
        }
    }
}
impl INSObject for MTRAccessControlClusterExtensionEntry {}
impl PNSObject for MTRAccessControlClusterExtensionEntry {}
impl IMTRAccessControlClusterExtensionEntry for MTRAccessControlClusterExtensionEntry {}
pub trait IMTRAccessControlClusterExtensionEntry: Sized + std::ops::Deref {
    unsafe fn data(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn setData_(&self, data: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setData : data)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAccessControlClusterAccessControlEntryChangedEvent(pub id);
impl std::ops::Deref for MTRAccessControlClusterAccessControlEntryChangedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAccessControlClusterAccessControlEntryChangedEvent {}
impl MTRAccessControlClusterAccessControlEntryChangedEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccessControlClusterAccessControlEntryChangedEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRAccessControlClusterAccessControlEntryChangedEvent {}
impl INSObject for MTRAccessControlClusterAccessControlEntryChangedEvent {}
impl PNSObject for MTRAccessControlClusterAccessControlEntryChangedEvent {}
impl std::convert::TryFrom<NSObject> for MTRAccessControlClusterAccessControlEntryChangedEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRAccessControlClusterAccessControlEntryChangedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAccessControlClusterAccessControlEntryChangedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRAccessControlClusterAccessControlEntryChangedEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRAccessControlClusterAccessControlEntryChangedEvent" ,)
        }
    }
}
impl IMTRAccessControlClusterAccessControlEntryChangedEvent
    for MTRAccessControlClusterAccessControlEntryChangedEvent
{
}
pub trait IMTRAccessControlClusterAccessControlEntryChangedEvent: Sized + std::ops::Deref {
    unsafe fn adminNodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, adminNodeID)
    }
    unsafe fn setAdminNodeID_(&self, adminNodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAdminNodeID : adminNodeID)
    }
    unsafe fn adminPasscodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, adminPasscodeID)
    }
    unsafe fn setAdminPasscodeID_(&self, adminPasscodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAdminPasscodeID : adminPasscodeID)
    }
    unsafe fn changeType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, changeType)
    }
    unsafe fn setChangeType_(&self, changeType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChangeType : changeType)
    }
    unsafe fn latestValue(&self) -> MTRAccessControlClusterAccessControlEntryStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, latestValue)
    }
    unsafe fn setLatestValue_(&self, latestValue: MTRAccessControlClusterAccessControlEntryStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLatestValue : latestValue)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAccessControlClusterAccessControlExtensionChangedEvent(pub id);
impl std::ops::Deref for MTRAccessControlClusterAccessControlExtensionChangedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAccessControlClusterAccessControlExtensionChangedEvent {}
impl MTRAccessControlClusterAccessControlExtensionChangedEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccessControlClusterAccessControlExtensionChangedEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRAccessControlClusterAccessControlExtensionChangedEvent {}
impl INSObject for MTRAccessControlClusterAccessControlExtensionChangedEvent {}
impl PNSObject for MTRAccessControlClusterAccessControlExtensionChangedEvent {}
impl std::convert::TryFrom<NSObject> for MTRAccessControlClusterAccessControlExtensionChangedEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRAccessControlClusterAccessControlExtensionChangedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAccessControlClusterAccessControlExtensionChangedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRAccessControlClusterAccessControlExtensionChangedEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRAccessControlClusterAccessControlExtensionChangedEvent" ,)
        }
    }
}
impl IMTRAccessControlClusterAccessControlExtensionChangedEvent
    for MTRAccessControlClusterAccessControlExtensionChangedEvent
{
}
pub trait IMTRAccessControlClusterAccessControlExtensionChangedEvent:
    Sized + std::ops::Deref
{
    unsafe fn adminNodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, adminNodeID)
    }
    unsafe fn setAdminNodeID_(&self, adminNodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAdminNodeID : adminNodeID)
    }
    unsafe fn adminPasscodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, adminPasscodeID)
    }
    unsafe fn setAdminPasscodeID_(&self, adminPasscodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAdminPasscodeID : adminPasscodeID)
    }
    unsafe fn changeType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, changeType)
    }
    unsafe fn setChangeType_(&self, changeType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChangeType : changeType)
    }
    unsafe fn latestValue(&self) -> MTRAccessControlClusterAccessControlExtensionStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, latestValue)
    }
    unsafe fn setLatestValue_(
        &self,
        latestValue: MTRAccessControlClusterAccessControlExtensionStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLatestValue : latestValue)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAccessControlClusterFabricRestrictionReviewUpdateEvent(pub id);
impl std::ops::Deref for MTRAccessControlClusterFabricRestrictionReviewUpdateEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAccessControlClusterFabricRestrictionReviewUpdateEvent {}
impl MTRAccessControlClusterFabricRestrictionReviewUpdateEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccessControlClusterFabricRestrictionReviewUpdateEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRAccessControlClusterFabricRestrictionReviewUpdateEvent {}
impl INSObject for MTRAccessControlClusterFabricRestrictionReviewUpdateEvent {}
impl PNSObject for MTRAccessControlClusterFabricRestrictionReviewUpdateEvent {}
impl std::convert::TryFrom<NSObject> for MTRAccessControlClusterFabricRestrictionReviewUpdateEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRAccessControlClusterFabricRestrictionReviewUpdateEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAccessControlClusterFabricRestrictionReviewUpdateEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRAccessControlClusterFabricRestrictionReviewUpdateEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRAccessControlClusterFabricRestrictionReviewUpdateEvent" ,)
        }
    }
}
impl IMTRAccessControlClusterFabricRestrictionReviewUpdateEvent
    for MTRAccessControlClusterFabricRestrictionReviewUpdateEvent
{
}
pub trait IMTRAccessControlClusterFabricRestrictionReviewUpdateEvent:
    Sized + std::ops::Deref
{
    unsafe fn token(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, token)
    }
    unsafe fn setToken_(&self, token: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setToken : token)
    }
    unsafe fn instruction(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, instruction)
    }
    unsafe fn setInstruction_(&self, instruction: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInstruction : instruction)
    }
    unsafe fn arlRequestFlowUrl(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arlRequestFlowUrl)
    }
    unsafe fn setArlRequestFlowUrl_(&self, arlRequestFlowUrl: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArlRequestFlowUrl : arlRequestFlowUrl)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRActionsClusterActionStruct(pub id);
impl std::ops::Deref for MTRActionsClusterActionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRActionsClusterActionStruct {}
impl MTRActionsClusterActionStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRActionsClusterActionStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRActionsClusterActionStruct {}
impl INSObject for MTRActionsClusterActionStruct {}
impl PNSObject for MTRActionsClusterActionStruct {}
impl std::convert::TryFrom<NSObject> for MTRActionsClusterActionStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRActionsClusterActionStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRActionsClusterActionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRActionsClusterActionStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRActionsClusterActionStruct")
        }
    }
}
impl IMTRActionsClusterActionStruct for MTRActionsClusterActionStruct {}
pub trait IMTRActionsClusterActionStruct: Sized + std::ops::Deref {
    unsafe fn actionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, actionID)
    }
    unsafe fn setActionID_(&self, actionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActionID : actionID)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn type_(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, type)
    }
    unsafe fn setType_(&self, type_: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setType : type_)
    }
    unsafe fn endpointListID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpointListID)
    }
    unsafe fn setEndpointListID_(&self, endpointListID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpointListID : endpointListID)
    }
    unsafe fn supportedCommands(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, supportedCommands)
    }
    unsafe fn setSupportedCommands_(&self, supportedCommands: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSupportedCommands : supportedCommands)
    }
    unsafe fn state(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, state)
    }
    unsafe fn setState_(&self, state: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setState : state)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRActionsClusterEndpointListStruct(pub id);
impl std::ops::Deref for MTRActionsClusterEndpointListStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRActionsClusterEndpointListStruct {}
impl MTRActionsClusterEndpointListStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRActionsClusterEndpointListStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRActionsClusterEndpointListStruct {}
impl INSObject for MTRActionsClusterEndpointListStruct {}
impl PNSObject for MTRActionsClusterEndpointListStruct {}
impl std::convert::TryFrom<NSObject> for MTRActionsClusterEndpointListStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRActionsClusterEndpointListStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRActionsClusterEndpointListStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRActionsClusterEndpointListStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRActionsClusterEndpointListStruct")
        }
    }
}
impl IMTRActionsClusterEndpointListStruct for MTRActionsClusterEndpointListStruct {}
pub trait IMTRActionsClusterEndpointListStruct: Sized + std::ops::Deref {
    unsafe fn endpointListID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpointListID)
    }
    unsafe fn setEndpointListID_(&self, endpointListID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpointListID : endpointListID)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn type_(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, type)
    }
    unsafe fn setType_(&self, type_: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setType : type_)
    }
    unsafe fn endpoints(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoints)
    }
    unsafe fn setEndpoints_(&self, endpoints: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoints : endpoints)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRActionsClusterStateChangedEvent(pub id);
impl std::ops::Deref for MTRActionsClusterStateChangedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRActionsClusterStateChangedEvent {}
impl MTRActionsClusterStateChangedEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRActionsClusterStateChangedEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRActionsClusterStateChangedEvent {}
impl INSObject for MTRActionsClusterStateChangedEvent {}
impl PNSObject for MTRActionsClusterStateChangedEvent {}
impl std::convert::TryFrom<NSObject> for MTRActionsClusterStateChangedEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRActionsClusterStateChangedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRActionsClusterStateChangedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRActionsClusterStateChangedEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRActionsClusterStateChangedEvent")
        }
    }
}
impl IMTRActionsClusterStateChangedEvent for MTRActionsClusterStateChangedEvent {}
pub trait IMTRActionsClusterStateChangedEvent: Sized + std::ops::Deref {
    unsafe fn actionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, actionID)
    }
    unsafe fn setActionID_(&self, actionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActionID : actionID)
    }
    unsafe fn invokeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invokeID)
    }
    unsafe fn setInvokeID_(&self, invokeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInvokeID : invokeID)
    }
    unsafe fn getNewState(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewState)
    }
    unsafe fn setNewState_(&self, newState: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewState : newState)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRActionsClusterActionFailedEvent(pub id);
impl std::ops::Deref for MTRActionsClusterActionFailedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRActionsClusterActionFailedEvent {}
impl MTRActionsClusterActionFailedEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRActionsClusterActionFailedEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRActionsClusterActionFailedEvent {}
impl INSObject for MTRActionsClusterActionFailedEvent {}
impl PNSObject for MTRActionsClusterActionFailedEvent {}
impl std::convert::TryFrom<NSObject> for MTRActionsClusterActionFailedEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRActionsClusterActionFailedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRActionsClusterActionFailedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRActionsClusterActionFailedEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRActionsClusterActionFailedEvent")
        }
    }
}
impl IMTRActionsClusterActionFailedEvent for MTRActionsClusterActionFailedEvent {}
pub trait IMTRActionsClusterActionFailedEvent: Sized + std::ops::Deref {
    unsafe fn actionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, actionID)
    }
    unsafe fn setActionID_(&self, actionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActionID : actionID)
    }
    unsafe fn invokeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invokeID)
    }
    unsafe fn setInvokeID_(&self, invokeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInvokeID : invokeID)
    }
    unsafe fn getNewState(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewState)
    }
    unsafe fn setNewState_(&self, newState: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewState : newState)
    }
    unsafe fn error(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, error)
    }
    unsafe fn setError_(&self, error: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setError : error)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBasicInformationClusterCapabilityMinimaStruct(pub id);
impl std::ops::Deref for MTRBasicInformationClusterCapabilityMinimaStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBasicInformationClusterCapabilityMinimaStruct {}
impl MTRBasicInformationClusterCapabilityMinimaStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBasicInformationClusterCapabilityMinimaStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRBasicInformationClusterCapabilityMinimaStruct {}
impl INSObject for MTRBasicInformationClusterCapabilityMinimaStruct {}
impl PNSObject for MTRBasicInformationClusterCapabilityMinimaStruct {}
impl std::convert::TryFrom<NSObject> for MTRBasicInformationClusterCapabilityMinimaStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRBasicInformationClusterCapabilityMinimaStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBasicInformationClusterCapabilityMinimaStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRBasicInformationClusterCapabilityMinimaStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRBasicInformationClusterCapabilityMinimaStruct" ,)
        }
    }
}
impl IMTRBasicInformationClusterCapabilityMinimaStruct
    for MTRBasicInformationClusterCapabilityMinimaStruct
{
}
pub trait IMTRBasicInformationClusterCapabilityMinimaStruct: Sized + std::ops::Deref {
    unsafe fn caseSessionsPerFabric(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, caseSessionsPerFabric)
    }
    unsafe fn setCaseSessionsPerFabric_(&self, caseSessionsPerFabric: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCaseSessionsPerFabric : caseSessionsPerFabric)
    }
    unsafe fn subscriptionsPerFabric(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, subscriptionsPerFabric)
    }
    unsafe fn setSubscriptionsPerFabric_(&self, subscriptionsPerFabric: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSubscriptionsPerFabric : subscriptionsPerFabric)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBasicClusterCapabilityMinimaStruct(pub id);
impl std::ops::Deref for MTRBasicClusterCapabilityMinimaStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBasicClusterCapabilityMinimaStruct {}
impl MTRBasicClusterCapabilityMinimaStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBasicClusterCapabilityMinimaStruct").unwrap(), alloc) })
    }
}
impl IMTRBasicInformationClusterCapabilityMinimaStruct for MTRBasicClusterCapabilityMinimaStruct {}
impl PNSCopying for MTRBasicClusterCapabilityMinimaStruct {}
impl From<MTRBasicClusterCapabilityMinimaStruct>
    for MTRBasicInformationClusterCapabilityMinimaStruct
{
    fn from(
        child: MTRBasicClusterCapabilityMinimaStruct,
    ) -> MTRBasicInformationClusterCapabilityMinimaStruct {
        MTRBasicInformationClusterCapabilityMinimaStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRBasicInformationClusterCapabilityMinimaStruct>
    for MTRBasicClusterCapabilityMinimaStruct
{
    type Error = &'static str;
    fn try_from(
        parent: MTRBasicInformationClusterCapabilityMinimaStruct,
    ) -> Result<MTRBasicClusterCapabilityMinimaStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBasicClusterCapabilityMinimaStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRBasicClusterCapabilityMinimaStruct(parent.0))
        } else {
            Err ("This MTRBasicInformationClusterCapabilityMinimaStruct cannot be downcasted to MTRBasicClusterCapabilityMinimaStruct" ,)
        }
    }
}
impl INSObject for MTRBasicClusterCapabilityMinimaStruct {}
impl PNSObject for MTRBasicClusterCapabilityMinimaStruct {}
impl IMTRBasicClusterCapabilityMinimaStruct for MTRBasicClusterCapabilityMinimaStruct {}
pub trait IMTRBasicClusterCapabilityMinimaStruct: Sized + std::ops::Deref {
    unsafe fn caseSessionsPerFabric(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, caseSessionsPerFabric)
    }
    unsafe fn setCaseSessionsPerFabric_(&self, caseSessionsPerFabric: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCaseSessionsPerFabric : caseSessionsPerFabric)
    }
    unsafe fn subscriptionsPerFabric(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, subscriptionsPerFabric)
    }
    unsafe fn setSubscriptionsPerFabric_(&self, subscriptionsPerFabric: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSubscriptionsPerFabric : subscriptionsPerFabric)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBasicInformationClusterProductAppearanceStruct(pub id);
impl std::ops::Deref for MTRBasicInformationClusterProductAppearanceStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBasicInformationClusterProductAppearanceStruct {}
impl MTRBasicInformationClusterProductAppearanceStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBasicInformationClusterProductAppearanceStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRBasicInformationClusterProductAppearanceStruct {}
impl INSObject for MTRBasicInformationClusterProductAppearanceStruct {}
impl PNSObject for MTRBasicInformationClusterProductAppearanceStruct {}
impl std::convert::TryFrom<NSObject> for MTRBasicInformationClusterProductAppearanceStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRBasicInformationClusterProductAppearanceStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBasicInformationClusterProductAppearanceStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRBasicInformationClusterProductAppearanceStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRBasicInformationClusterProductAppearanceStruct" ,)
        }
    }
}
impl IMTRBasicInformationClusterProductAppearanceStruct
    for MTRBasicInformationClusterProductAppearanceStruct
{
}
pub trait IMTRBasicInformationClusterProductAppearanceStruct: Sized + std::ops::Deref {
    unsafe fn finish(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, finish)
    }
    unsafe fn setFinish_(&self, finish: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFinish : finish)
    }
    unsafe fn primaryColor(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, primaryColor)
    }
    unsafe fn setPrimaryColor_(&self, primaryColor: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPrimaryColor : primaryColor)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBasicInformationClusterStartUpEvent(pub id);
impl std::ops::Deref for MTRBasicInformationClusterStartUpEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBasicInformationClusterStartUpEvent {}
impl MTRBasicInformationClusterStartUpEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBasicInformationClusterStartUpEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRBasicInformationClusterStartUpEvent {}
impl INSObject for MTRBasicInformationClusterStartUpEvent {}
impl PNSObject for MTRBasicInformationClusterStartUpEvent {}
impl std::convert::TryFrom<NSObject> for MTRBasicInformationClusterStartUpEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRBasicInformationClusterStartUpEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBasicInformationClusterStartUpEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRBasicInformationClusterStartUpEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRBasicInformationClusterStartUpEvent")
        }
    }
}
impl IMTRBasicInformationClusterStartUpEvent for MTRBasicInformationClusterStartUpEvent {}
pub trait IMTRBasicInformationClusterStartUpEvent: Sized + std::ops::Deref {
    unsafe fn softwareVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, softwareVersion)
    }
    unsafe fn setSoftwareVersion_(&self, softwareVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSoftwareVersion : softwareVersion)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBasicClusterStartUpEvent(pub id);
impl std::ops::Deref for MTRBasicClusterStartUpEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBasicClusterStartUpEvent {}
impl MTRBasicClusterStartUpEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBasicClusterStartUpEvent").unwrap(), alloc) })
    }
}
impl IMTRBasicInformationClusterStartUpEvent for MTRBasicClusterStartUpEvent {}
impl PNSCopying for MTRBasicClusterStartUpEvent {}
impl From<MTRBasicClusterStartUpEvent> for MTRBasicInformationClusterStartUpEvent {
    fn from(child: MTRBasicClusterStartUpEvent) -> MTRBasicInformationClusterStartUpEvent {
        MTRBasicInformationClusterStartUpEvent(child.0)
    }
}
impl std::convert::TryFrom<MTRBasicInformationClusterStartUpEvent> for MTRBasicClusterStartUpEvent {
    type Error = &'static str;
    fn try_from(
        parent: MTRBasicInformationClusterStartUpEvent,
    ) -> Result<MTRBasicClusterStartUpEvent, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBasicClusterStartUpEvent").unwrap()) };
        if is_kind_of {
            Ok(MTRBasicClusterStartUpEvent(parent.0))
        } else {
            Err ("This MTRBasicInformationClusterStartUpEvent cannot be downcasted to MTRBasicClusterStartUpEvent" ,)
        }
    }
}
impl INSObject for MTRBasicClusterStartUpEvent {}
impl PNSObject for MTRBasicClusterStartUpEvent {}
impl IMTRBasicClusterStartUpEvent for MTRBasicClusterStartUpEvent {}
pub trait IMTRBasicClusterStartUpEvent: Sized + std::ops::Deref {
    unsafe fn softwareVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, softwareVersion)
    }
    unsafe fn setSoftwareVersion_(&self, softwareVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSoftwareVersion : softwareVersion)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBasicInformationClusterShutDownEvent(pub id);
impl std::ops::Deref for MTRBasicInformationClusterShutDownEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBasicInformationClusterShutDownEvent {}
impl MTRBasicInformationClusterShutDownEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBasicInformationClusterShutDownEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRBasicInformationClusterShutDownEvent {}
impl INSObject for MTRBasicInformationClusterShutDownEvent {}
impl PNSObject for MTRBasicInformationClusterShutDownEvent {}
impl std::convert::TryFrom<NSObject> for MTRBasicInformationClusterShutDownEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRBasicInformationClusterShutDownEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBasicInformationClusterShutDownEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRBasicInformationClusterShutDownEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRBasicInformationClusterShutDownEvent")
        }
    }
}
impl IMTRBasicInformationClusterShutDownEvent for MTRBasicInformationClusterShutDownEvent {}
pub trait IMTRBasicInformationClusterShutDownEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBasicClusterShutDownEvent(pub id);
impl std::ops::Deref for MTRBasicClusterShutDownEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBasicClusterShutDownEvent {}
impl MTRBasicClusterShutDownEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBasicClusterShutDownEvent").unwrap(), alloc) })
    }
}
impl IMTRBasicInformationClusterShutDownEvent for MTRBasicClusterShutDownEvent {}
impl PNSCopying for MTRBasicClusterShutDownEvent {}
impl From<MTRBasicClusterShutDownEvent> for MTRBasicInformationClusterShutDownEvent {
    fn from(child: MTRBasicClusterShutDownEvent) -> MTRBasicInformationClusterShutDownEvent {
        MTRBasicInformationClusterShutDownEvent(child.0)
    }
}
impl std::convert::TryFrom<MTRBasicInformationClusterShutDownEvent>
    for MTRBasicClusterShutDownEvent
{
    type Error = &'static str;
    fn try_from(
        parent: MTRBasicInformationClusterShutDownEvent,
    ) -> Result<MTRBasicClusterShutDownEvent, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBasicClusterShutDownEvent").unwrap()) };
        if is_kind_of {
            Ok(MTRBasicClusterShutDownEvent(parent.0))
        } else {
            Err ("This MTRBasicInformationClusterShutDownEvent cannot be downcasted to MTRBasicClusterShutDownEvent" ,)
        }
    }
}
impl INSObject for MTRBasicClusterShutDownEvent {}
impl PNSObject for MTRBasicClusterShutDownEvent {}
impl IMTRBasicClusterShutDownEvent for MTRBasicClusterShutDownEvent {}
pub trait IMTRBasicClusterShutDownEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBasicInformationClusterLeaveEvent(pub id);
impl std::ops::Deref for MTRBasicInformationClusterLeaveEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBasicInformationClusterLeaveEvent {}
impl MTRBasicInformationClusterLeaveEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBasicInformationClusterLeaveEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRBasicInformationClusterLeaveEvent {}
impl INSObject for MTRBasicInformationClusterLeaveEvent {}
impl PNSObject for MTRBasicInformationClusterLeaveEvent {}
impl std::convert::TryFrom<NSObject> for MTRBasicInformationClusterLeaveEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRBasicInformationClusterLeaveEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBasicInformationClusterLeaveEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRBasicInformationClusterLeaveEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRBasicInformationClusterLeaveEvent")
        }
    }
}
impl IMTRBasicInformationClusterLeaveEvent for MTRBasicInformationClusterLeaveEvent {}
pub trait IMTRBasicInformationClusterLeaveEvent: Sized + std::ops::Deref {
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBasicClusterLeaveEvent(pub id);
impl std::ops::Deref for MTRBasicClusterLeaveEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBasicClusterLeaveEvent {}
impl MTRBasicClusterLeaveEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBasicClusterLeaveEvent").unwrap(), alloc) })
    }
}
impl IMTRBasicInformationClusterLeaveEvent for MTRBasicClusterLeaveEvent {}
impl PNSCopying for MTRBasicClusterLeaveEvent {}
impl From<MTRBasicClusterLeaveEvent> for MTRBasicInformationClusterLeaveEvent {
    fn from(child: MTRBasicClusterLeaveEvent) -> MTRBasicInformationClusterLeaveEvent {
        MTRBasicInformationClusterLeaveEvent(child.0)
    }
}
impl std::convert::TryFrom<MTRBasicInformationClusterLeaveEvent> for MTRBasicClusterLeaveEvent {
    type Error = &'static str;
    fn try_from(
        parent: MTRBasicInformationClusterLeaveEvent,
    ) -> Result<MTRBasicClusterLeaveEvent, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBasicClusterLeaveEvent").unwrap()) };
        if is_kind_of {
            Ok(MTRBasicClusterLeaveEvent(parent.0))
        } else {
            Err ("This MTRBasicInformationClusterLeaveEvent cannot be downcasted to MTRBasicClusterLeaveEvent" ,)
        }
    }
}
impl INSObject for MTRBasicClusterLeaveEvent {}
impl PNSObject for MTRBasicClusterLeaveEvent {}
impl IMTRBasicClusterLeaveEvent for MTRBasicClusterLeaveEvent {}
pub trait IMTRBasicClusterLeaveEvent: Sized + std::ops::Deref {
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBasicInformationClusterReachableChangedEvent(pub id);
impl std::ops::Deref for MTRBasicInformationClusterReachableChangedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBasicInformationClusterReachableChangedEvent {}
impl MTRBasicInformationClusterReachableChangedEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBasicInformationClusterReachableChangedEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRBasicInformationClusterReachableChangedEvent {}
impl INSObject for MTRBasicInformationClusterReachableChangedEvent {}
impl PNSObject for MTRBasicInformationClusterReachableChangedEvent {}
impl std::convert::TryFrom<NSObject> for MTRBasicInformationClusterReachableChangedEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRBasicInformationClusterReachableChangedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBasicInformationClusterReachableChangedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRBasicInformationClusterReachableChangedEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRBasicInformationClusterReachableChangedEvent" ,)
        }
    }
}
impl IMTRBasicInformationClusterReachableChangedEvent
    for MTRBasicInformationClusterReachableChangedEvent
{
}
pub trait IMTRBasicInformationClusterReachableChangedEvent: Sized + std::ops::Deref {
    unsafe fn reachableNewValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reachableNewValue)
    }
    unsafe fn setReachableNewValue_(&self, reachableNewValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReachableNewValue : reachableNewValue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBasicClusterReachableChangedEvent(pub id);
impl std::ops::Deref for MTRBasicClusterReachableChangedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBasicClusterReachableChangedEvent {}
impl MTRBasicClusterReachableChangedEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBasicClusterReachableChangedEvent").unwrap(), alloc) })
    }
}
impl IMTRBasicInformationClusterReachableChangedEvent for MTRBasicClusterReachableChangedEvent {}
impl PNSCopying for MTRBasicClusterReachableChangedEvent {}
impl From<MTRBasicClusterReachableChangedEvent>
    for MTRBasicInformationClusterReachableChangedEvent
{
    fn from(
        child: MTRBasicClusterReachableChangedEvent,
    ) -> MTRBasicInformationClusterReachableChangedEvent {
        MTRBasicInformationClusterReachableChangedEvent(child.0)
    }
}
impl std::convert::TryFrom<MTRBasicInformationClusterReachableChangedEvent>
    for MTRBasicClusterReachableChangedEvent
{
    type Error = &'static str;
    fn try_from(
        parent: MTRBasicInformationClusterReachableChangedEvent,
    ) -> Result<MTRBasicClusterReachableChangedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBasicClusterReachableChangedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRBasicClusterReachableChangedEvent(parent.0))
        } else {
            Err ("This MTRBasicInformationClusterReachableChangedEvent cannot be downcasted to MTRBasicClusterReachableChangedEvent" ,)
        }
    }
}
impl INSObject for MTRBasicClusterReachableChangedEvent {}
impl PNSObject for MTRBasicClusterReachableChangedEvent {}
impl IMTRBasicClusterReachableChangedEvent for MTRBasicClusterReachableChangedEvent {}
pub trait IMTRBasicClusterReachableChangedEvent: Sized + std::ops::Deref {
    unsafe fn reachableNewValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reachableNewValue)
    }
    unsafe fn setReachableNewValue_(&self, reachableNewValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReachableNewValue : reachableNewValue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROTASoftwareUpdateRequestorClusterProviderLocation(pub id);
impl std::ops::Deref for MTROTASoftwareUpdateRequestorClusterProviderLocation {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROTASoftwareUpdateRequestorClusterProviderLocation {}
impl MTROTASoftwareUpdateRequestorClusterProviderLocation {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROTASoftwareUpdateRequestorClusterProviderLocation").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROTASoftwareUpdateRequestorClusterProviderLocation {}
impl INSObject for MTROTASoftwareUpdateRequestorClusterProviderLocation {}
impl PNSObject for MTROTASoftwareUpdateRequestorClusterProviderLocation {}
impl std::convert::TryFrom<NSObject> for MTROTASoftwareUpdateRequestorClusterProviderLocation {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROTASoftwareUpdateRequestorClusterProviderLocation, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROTASoftwareUpdateRequestorClusterProviderLocation").unwrap())
        };
        if is_kind_of {
            Ok(MTROTASoftwareUpdateRequestorClusterProviderLocation(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTROTASoftwareUpdateRequestorClusterProviderLocation" ,)
        }
    }
}
impl IMTROTASoftwareUpdateRequestorClusterProviderLocation
    for MTROTASoftwareUpdateRequestorClusterProviderLocation
{
}
pub trait IMTROTASoftwareUpdateRequestorClusterProviderLocation: Sized + std::ops::Deref {
    unsafe fn providerNodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, providerNodeID)
    }
    unsafe fn setProviderNodeID_(&self, providerNodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProviderNodeID : providerNodeID)
    }
    unsafe fn endpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn setEndpoint_(&self, endpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoint : endpoint)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROtaSoftwareUpdateRequestorClusterProviderLocation(pub id);
impl std::ops::Deref for MTROtaSoftwareUpdateRequestorClusterProviderLocation {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROtaSoftwareUpdateRequestorClusterProviderLocation {}
impl MTROtaSoftwareUpdateRequestorClusterProviderLocation {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROtaSoftwareUpdateRequestorClusterProviderLocation").unwrap(), alloc)
        })
    }
}
impl IMTROTASoftwareUpdateRequestorClusterProviderLocation
    for MTROtaSoftwareUpdateRequestorClusterProviderLocation
{
}
impl PNSCopying for MTROtaSoftwareUpdateRequestorClusterProviderLocation {}
impl From<MTROtaSoftwareUpdateRequestorClusterProviderLocation>
    for MTROTASoftwareUpdateRequestorClusterProviderLocation
{
    fn from(
        child: MTROtaSoftwareUpdateRequestorClusterProviderLocation,
    ) -> MTROTASoftwareUpdateRequestorClusterProviderLocation {
        MTROTASoftwareUpdateRequestorClusterProviderLocation(child.0)
    }
}
impl std::convert::TryFrom<MTROTASoftwareUpdateRequestorClusterProviderLocation>
    for MTROtaSoftwareUpdateRequestorClusterProviderLocation
{
    type Error = &'static str;
    fn try_from(
        parent: MTROTASoftwareUpdateRequestorClusterProviderLocation,
    ) -> Result<MTROtaSoftwareUpdateRequestorClusterProviderLocation, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROtaSoftwareUpdateRequestorClusterProviderLocation").unwrap())
        };
        if is_kind_of {
            Ok(MTROtaSoftwareUpdateRequestorClusterProviderLocation(
                parent.0,
            ))
        } else {
            Err ("This MTROTASoftwareUpdateRequestorClusterProviderLocation cannot be downcasted to MTROtaSoftwareUpdateRequestorClusterProviderLocation" ,)
        }
    }
}
impl INSObject for MTROtaSoftwareUpdateRequestorClusterProviderLocation {}
impl PNSObject for MTROtaSoftwareUpdateRequestorClusterProviderLocation {}
impl IMTROtaSoftwareUpdateRequestorClusterProviderLocation
    for MTROtaSoftwareUpdateRequestorClusterProviderLocation
{
}
pub trait IMTROtaSoftwareUpdateRequestorClusterProviderLocation: Sized + std::ops::Deref {
    unsafe fn providerNodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, providerNodeID)
    }
    unsafe fn setProviderNodeID_(&self, providerNodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProviderNodeID : providerNodeID)
    }
    unsafe fn endpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn setEndpoint_(&self, endpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoint : endpoint)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROTASoftwareUpdateRequestorClusterStateTransitionEvent(pub id);
impl std::ops::Deref for MTROTASoftwareUpdateRequestorClusterStateTransitionEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROTASoftwareUpdateRequestorClusterStateTransitionEvent {}
impl MTROTASoftwareUpdateRequestorClusterStateTransitionEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROTASoftwareUpdateRequestorClusterStateTransitionEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROTASoftwareUpdateRequestorClusterStateTransitionEvent {}
impl INSObject for MTROTASoftwareUpdateRequestorClusterStateTransitionEvent {}
impl PNSObject for MTROTASoftwareUpdateRequestorClusterStateTransitionEvent {}
impl std::convert::TryFrom<NSObject> for MTROTASoftwareUpdateRequestorClusterStateTransitionEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROTASoftwareUpdateRequestorClusterStateTransitionEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROTASoftwareUpdateRequestorClusterStateTransitionEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTROTASoftwareUpdateRequestorClusterStateTransitionEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTROTASoftwareUpdateRequestorClusterStateTransitionEvent" ,)
        }
    }
}
impl IMTROTASoftwareUpdateRequestorClusterStateTransitionEvent
    for MTROTASoftwareUpdateRequestorClusterStateTransitionEvent
{
}
pub trait IMTROTASoftwareUpdateRequestorClusterStateTransitionEvent:
    Sized + std::ops::Deref
{
    unsafe fn previousState(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previousState)
    }
    unsafe fn setPreviousState_(&self, previousState: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPreviousState : previousState)
    }
    unsafe fn getNewState(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewState)
    }
    unsafe fn setNewState_(&self, newState: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewState : newState)
    }
    unsafe fn reason(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reason)
    }
    unsafe fn setReason_(&self, reason: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReason : reason)
    }
    unsafe fn targetSoftwareVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, targetSoftwareVersion)
    }
    unsafe fn setTargetSoftwareVersion_(&self, targetSoftwareVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTargetSoftwareVersion : targetSoftwareVersion)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROtaSoftwareUpdateRequestorClusterStateTransitionEvent(pub id);
impl std::ops::Deref for MTROtaSoftwareUpdateRequestorClusterStateTransitionEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROtaSoftwareUpdateRequestorClusterStateTransitionEvent {}
impl MTROtaSoftwareUpdateRequestorClusterStateTransitionEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROtaSoftwareUpdateRequestorClusterStateTransitionEvent").unwrap(), alloc)
        })
    }
}
impl IMTROTASoftwareUpdateRequestorClusterStateTransitionEvent
    for MTROtaSoftwareUpdateRequestorClusterStateTransitionEvent
{
}
impl PNSCopying for MTROtaSoftwareUpdateRequestorClusterStateTransitionEvent {}
impl From<MTROtaSoftwareUpdateRequestorClusterStateTransitionEvent>
    for MTROTASoftwareUpdateRequestorClusterStateTransitionEvent
{
    fn from(
        child: MTROtaSoftwareUpdateRequestorClusterStateTransitionEvent,
    ) -> MTROTASoftwareUpdateRequestorClusterStateTransitionEvent {
        MTROTASoftwareUpdateRequestorClusterStateTransitionEvent(child.0)
    }
}
impl std::convert::TryFrom<MTROTASoftwareUpdateRequestorClusterStateTransitionEvent>
    for MTROtaSoftwareUpdateRequestorClusterStateTransitionEvent
{
    type Error = &'static str;
    fn try_from(
        parent: MTROTASoftwareUpdateRequestorClusterStateTransitionEvent,
    ) -> Result<MTROtaSoftwareUpdateRequestorClusterStateTransitionEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROtaSoftwareUpdateRequestorClusterStateTransitionEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTROtaSoftwareUpdateRequestorClusterStateTransitionEvent(
                parent.0,
            ))
        } else {
            Err ("This MTROTASoftwareUpdateRequestorClusterStateTransitionEvent cannot be downcasted to MTROtaSoftwareUpdateRequestorClusterStateTransitionEvent" ,)
        }
    }
}
impl INSObject for MTROtaSoftwareUpdateRequestorClusterStateTransitionEvent {}
impl PNSObject for MTROtaSoftwareUpdateRequestorClusterStateTransitionEvent {}
impl IMTROtaSoftwareUpdateRequestorClusterStateTransitionEvent
    for MTROtaSoftwareUpdateRequestorClusterStateTransitionEvent
{
}
pub trait IMTROtaSoftwareUpdateRequestorClusterStateTransitionEvent:
    Sized + std::ops::Deref
{
    unsafe fn previousState(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previousState)
    }
    unsafe fn setPreviousState_(&self, previousState: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPreviousState : previousState)
    }
    unsafe fn getNewState(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewState)
    }
    unsafe fn setNewState_(&self, newState: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewState : newState)
    }
    unsafe fn reason(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reason)
    }
    unsafe fn setReason_(&self, reason: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReason : reason)
    }
    unsafe fn targetSoftwareVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, targetSoftwareVersion)
    }
    unsafe fn setTargetSoftwareVersion_(&self, targetSoftwareVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTargetSoftwareVersion : targetSoftwareVersion)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent(pub id);
impl std::ops::Deref for MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent {}
impl MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent {}
impl INSObject for MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent {}
impl PNSObject for MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent {}
impl std::convert::TryFrom<NSObject> for MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent" ,)
        }
    }
}
impl IMTROTASoftwareUpdateRequestorClusterVersionAppliedEvent
    for MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent
{
}
pub trait IMTROTASoftwareUpdateRequestorClusterVersionAppliedEvent:
    Sized + std::ops::Deref
{
    unsafe fn softwareVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, softwareVersion)
    }
    unsafe fn setSoftwareVersion_(&self, softwareVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSoftwareVersion : softwareVersion)
    }
    unsafe fn productID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, productID)
    }
    unsafe fn setProductID_(&self, productID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProductID : productID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent(pub id);
impl std::ops::Deref for MTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent {}
impl MTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent").unwrap(), alloc)
        })
    }
}
impl IMTROTASoftwareUpdateRequestorClusterVersionAppliedEvent
    for MTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent
{
}
impl PNSCopying for MTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent {}
impl From<MTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent>
    for MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent
{
    fn from(
        child: MTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent,
    ) -> MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent {
        MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent(child.0)
    }
}
impl std::convert::TryFrom<MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent>
    for MTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent
{
    type Error = &'static str;
    fn try_from(
        parent: MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent,
    ) -> Result<MTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent(
                parent.0,
            ))
        } else {
            Err ("This MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent cannot be downcasted to MTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent" ,)
        }
    }
}
impl INSObject for MTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent {}
impl PNSObject for MTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent {}
impl IMTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent
    for MTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent
{
}
pub trait IMTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent:
    Sized + std::ops::Deref
{
    unsafe fn softwareVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, softwareVersion)
    }
    unsafe fn setSoftwareVersion_(&self, softwareVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSoftwareVersion : softwareVersion)
    }
    unsafe fn productID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, productID)
    }
    unsafe fn setProductID_(&self, productID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProductID : productID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent(pub id);
impl std::ops::Deref for MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent {}
impl MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent {}
impl INSObject for MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent {}
impl PNSObject for MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent {}
impl std::convert::TryFrom<NSObject> for MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent" ,)
        }
    }
}
impl IMTROTASoftwareUpdateRequestorClusterDownloadErrorEvent
    for MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent
{
}
pub trait IMTROTASoftwareUpdateRequestorClusterDownloadErrorEvent: Sized + std::ops::Deref {
    unsafe fn softwareVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, softwareVersion)
    }
    unsafe fn setSoftwareVersion_(&self, softwareVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSoftwareVersion : softwareVersion)
    }
    unsafe fn bytesDownloaded(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, bytesDownloaded)
    }
    unsafe fn setBytesDownloaded_(&self, bytesDownloaded: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBytesDownloaded : bytesDownloaded)
    }
    unsafe fn progressPercent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, progressPercent)
    }
    unsafe fn setProgressPercent_(&self, progressPercent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProgressPercent : progressPercent)
    }
    unsafe fn platformCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, platformCode)
    }
    unsafe fn setPlatformCode_(&self, platformCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPlatformCode : platformCode)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent(pub id);
impl std::ops::Deref for MTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent {}
impl MTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent").unwrap(), alloc)
        })
    }
}
impl IMTROTASoftwareUpdateRequestorClusterDownloadErrorEvent
    for MTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent
{
}
impl PNSCopying for MTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent {}
impl From<MTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent>
    for MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent
{
    fn from(
        child: MTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent,
    ) -> MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent {
        MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent(child.0)
    }
}
impl std::convert::TryFrom<MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent>
    for MTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent
{
    type Error = &'static str;
    fn try_from(
        parent: MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent,
    ) -> Result<MTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent(
                parent.0,
            ))
        } else {
            Err ("This MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent cannot be downcasted to MTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent" ,)
        }
    }
}
impl INSObject for MTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent {}
impl PNSObject for MTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent {}
impl IMTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent
    for MTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent
{
}
pub trait IMTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent: Sized + std::ops::Deref {
    unsafe fn softwareVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, softwareVersion)
    }
    unsafe fn setSoftwareVersion_(&self, softwareVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSoftwareVersion : softwareVersion)
    }
    unsafe fn bytesDownloaded(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, bytesDownloaded)
    }
    unsafe fn setBytesDownloaded_(&self, bytesDownloaded: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBytesDownloaded : bytesDownloaded)
    }
    unsafe fn progressPercent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, progressPercent)
    }
    unsafe fn setProgressPercent_(&self, progressPercent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProgressPercent : progressPercent)
    }
    unsafe fn platformCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, platformCode)
    }
    unsafe fn setPlatformCode_(&self, platformCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPlatformCode : platformCode)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPowerSourceClusterBatChargeFaultChangeType(pub id);
impl std::ops::Deref for MTRPowerSourceClusterBatChargeFaultChangeType {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPowerSourceClusterBatChargeFaultChangeType {}
impl MTRPowerSourceClusterBatChargeFaultChangeType {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPowerSourceClusterBatChargeFaultChangeType").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRPowerSourceClusterBatChargeFaultChangeType {}
impl INSObject for MTRPowerSourceClusterBatChargeFaultChangeType {}
impl PNSObject for MTRPowerSourceClusterBatChargeFaultChangeType {}
impl std::convert::TryFrom<NSObject> for MTRPowerSourceClusterBatChargeFaultChangeType {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPowerSourceClusterBatChargeFaultChangeType, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPowerSourceClusterBatChargeFaultChangeType").unwrap())
        };
        if is_kind_of {
            Ok(MTRPowerSourceClusterBatChargeFaultChangeType(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPowerSourceClusterBatChargeFaultChangeType" ,)
        }
    }
}
impl IMTRPowerSourceClusterBatChargeFaultChangeType
    for MTRPowerSourceClusterBatChargeFaultChangeType
{
}
pub trait IMTRPowerSourceClusterBatChargeFaultChangeType: Sized + std::ops::Deref {
    unsafe fn current(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, current)
    }
    unsafe fn setCurrent_(&self, current: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrent : current)
    }
    unsafe fn previous(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previous)
    }
    unsafe fn setPrevious_(&self, previous: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPrevious : previous)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPowerSourceClusterBatFaultChangeType(pub id);
impl std::ops::Deref for MTRPowerSourceClusterBatFaultChangeType {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPowerSourceClusterBatFaultChangeType {}
impl MTRPowerSourceClusterBatFaultChangeType {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPowerSourceClusterBatFaultChangeType").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRPowerSourceClusterBatFaultChangeType {}
impl INSObject for MTRPowerSourceClusterBatFaultChangeType {}
impl PNSObject for MTRPowerSourceClusterBatFaultChangeType {}
impl std::convert::TryFrom<NSObject> for MTRPowerSourceClusterBatFaultChangeType {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRPowerSourceClusterBatFaultChangeType, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPowerSourceClusterBatFaultChangeType").unwrap())
        };
        if is_kind_of {
            Ok(MTRPowerSourceClusterBatFaultChangeType(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRPowerSourceClusterBatFaultChangeType")
        }
    }
}
impl IMTRPowerSourceClusterBatFaultChangeType for MTRPowerSourceClusterBatFaultChangeType {}
pub trait IMTRPowerSourceClusterBatFaultChangeType: Sized + std::ops::Deref {
    unsafe fn current(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, current)
    }
    unsafe fn setCurrent_(&self, current: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrent : current)
    }
    unsafe fn previous(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previous)
    }
    unsafe fn setPrevious_(&self, previous: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPrevious : previous)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPowerSourceClusterWiredFaultChangeType(pub id);
impl std::ops::Deref for MTRPowerSourceClusterWiredFaultChangeType {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPowerSourceClusterWiredFaultChangeType {}
impl MTRPowerSourceClusterWiredFaultChangeType {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPowerSourceClusterWiredFaultChangeType").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRPowerSourceClusterWiredFaultChangeType {}
impl INSObject for MTRPowerSourceClusterWiredFaultChangeType {}
impl PNSObject for MTRPowerSourceClusterWiredFaultChangeType {}
impl std::convert::TryFrom<NSObject> for MTRPowerSourceClusterWiredFaultChangeType {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPowerSourceClusterWiredFaultChangeType, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPowerSourceClusterWiredFaultChangeType").unwrap())
        };
        if is_kind_of {
            Ok(MTRPowerSourceClusterWiredFaultChangeType(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRPowerSourceClusterWiredFaultChangeType")
        }
    }
}
impl IMTRPowerSourceClusterWiredFaultChangeType for MTRPowerSourceClusterWiredFaultChangeType {}
pub trait IMTRPowerSourceClusterWiredFaultChangeType: Sized + std::ops::Deref {
    unsafe fn current(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, current)
    }
    unsafe fn setCurrent_(&self, current: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrent : current)
    }
    unsafe fn previous(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previous)
    }
    unsafe fn setPrevious_(&self, previous: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPrevious : previous)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPowerSourceClusterWiredFaultChangeEvent(pub id);
impl std::ops::Deref for MTRPowerSourceClusterWiredFaultChangeEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPowerSourceClusterWiredFaultChangeEvent {}
impl MTRPowerSourceClusterWiredFaultChangeEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPowerSourceClusterWiredFaultChangeEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRPowerSourceClusterWiredFaultChangeEvent {}
impl INSObject for MTRPowerSourceClusterWiredFaultChangeEvent {}
impl PNSObject for MTRPowerSourceClusterWiredFaultChangeEvent {}
impl std::convert::TryFrom<NSObject> for MTRPowerSourceClusterWiredFaultChangeEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPowerSourceClusterWiredFaultChangeEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPowerSourceClusterWiredFaultChangeEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPowerSourceClusterWiredFaultChangeEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRPowerSourceClusterWiredFaultChangeEvent")
        }
    }
}
impl IMTRPowerSourceClusterWiredFaultChangeEvent for MTRPowerSourceClusterWiredFaultChangeEvent {}
pub trait IMTRPowerSourceClusterWiredFaultChangeEvent: Sized + std::ops::Deref {
    unsafe fn current(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, current)
    }
    unsafe fn setCurrent_(&self, current: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrent : current)
    }
    unsafe fn previous(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previous)
    }
    unsafe fn setPrevious_(&self, previous: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPrevious : previous)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPowerSourceClusterBatFaultChangeEvent(pub id);
impl std::ops::Deref for MTRPowerSourceClusterBatFaultChangeEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPowerSourceClusterBatFaultChangeEvent {}
impl MTRPowerSourceClusterBatFaultChangeEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPowerSourceClusterBatFaultChangeEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRPowerSourceClusterBatFaultChangeEvent {}
impl INSObject for MTRPowerSourceClusterBatFaultChangeEvent {}
impl PNSObject for MTRPowerSourceClusterBatFaultChangeEvent {}
impl std::convert::TryFrom<NSObject> for MTRPowerSourceClusterBatFaultChangeEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRPowerSourceClusterBatFaultChangeEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPowerSourceClusterBatFaultChangeEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPowerSourceClusterBatFaultChangeEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRPowerSourceClusterBatFaultChangeEvent")
        }
    }
}
impl IMTRPowerSourceClusterBatFaultChangeEvent for MTRPowerSourceClusterBatFaultChangeEvent {}
pub trait IMTRPowerSourceClusterBatFaultChangeEvent: Sized + std::ops::Deref {
    unsafe fn current(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, current)
    }
    unsafe fn setCurrent_(&self, current: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrent : current)
    }
    unsafe fn previous(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previous)
    }
    unsafe fn setPrevious_(&self, previous: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPrevious : previous)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPowerSourceClusterBatChargeFaultChangeEvent(pub id);
impl std::ops::Deref for MTRPowerSourceClusterBatChargeFaultChangeEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPowerSourceClusterBatChargeFaultChangeEvent {}
impl MTRPowerSourceClusterBatChargeFaultChangeEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPowerSourceClusterBatChargeFaultChangeEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPowerSourceClusterBatChargeFaultChangeEvent {}
impl INSObject for MTRPowerSourceClusterBatChargeFaultChangeEvent {}
impl PNSObject for MTRPowerSourceClusterBatChargeFaultChangeEvent {}
impl std::convert::TryFrom<NSObject> for MTRPowerSourceClusterBatChargeFaultChangeEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPowerSourceClusterBatChargeFaultChangeEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPowerSourceClusterBatChargeFaultChangeEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPowerSourceClusterBatChargeFaultChangeEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPowerSourceClusterBatChargeFaultChangeEvent" ,)
        }
    }
}
impl IMTRPowerSourceClusterBatChargeFaultChangeEvent
    for MTRPowerSourceClusterBatChargeFaultChangeEvent
{
}
pub trait IMTRPowerSourceClusterBatChargeFaultChangeEvent: Sized + std::ops::Deref {
    unsafe fn current(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, current)
    }
    unsafe fn setCurrent_(&self, current: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrent : current)
    }
    unsafe fn previous(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previous)
    }
    unsafe fn setPrevious_(&self, previous: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPrevious : previous)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGeneralCommissioningClusterBasicCommissioningInfo(pub id);
impl std::ops::Deref for MTRGeneralCommissioningClusterBasicCommissioningInfo {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGeneralCommissioningClusterBasicCommissioningInfo {}
impl MTRGeneralCommissioningClusterBasicCommissioningInfo {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGeneralCommissioningClusterBasicCommissioningInfo").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGeneralCommissioningClusterBasicCommissioningInfo {}
impl INSObject for MTRGeneralCommissioningClusterBasicCommissioningInfo {}
impl PNSObject for MTRGeneralCommissioningClusterBasicCommissioningInfo {}
impl std::convert::TryFrom<NSObject> for MTRGeneralCommissioningClusterBasicCommissioningInfo {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGeneralCommissioningClusterBasicCommissioningInfo, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGeneralCommissioningClusterBasicCommissioningInfo").unwrap())
        };
        if is_kind_of {
            Ok(MTRGeneralCommissioningClusterBasicCommissioningInfo(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGeneralCommissioningClusterBasicCommissioningInfo" ,)
        }
    }
}
impl IMTRGeneralCommissioningClusterBasicCommissioningInfo
    for MTRGeneralCommissioningClusterBasicCommissioningInfo
{
}
pub trait IMTRGeneralCommissioningClusterBasicCommissioningInfo: Sized + std::ops::Deref {
    unsafe fn failSafeExpiryLengthSeconds(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, failSafeExpiryLengthSeconds)
    }
    unsafe fn setFailSafeExpiryLengthSeconds_(&self, failSafeExpiryLengthSeconds: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFailSafeExpiryLengthSeconds : failSafeExpiryLengthSeconds)
    }
    unsafe fn maxCumulativeFailsafeSeconds(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxCumulativeFailsafeSeconds)
    }
    unsafe fn setMaxCumulativeFailsafeSeconds_(&self, maxCumulativeFailsafeSeconds: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxCumulativeFailsafeSeconds : maxCumulativeFailsafeSeconds)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRNetworkCommissioningClusterNetworkInfoStruct(pub id);
impl std::ops::Deref for MTRNetworkCommissioningClusterNetworkInfoStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRNetworkCommissioningClusterNetworkInfoStruct {}
impl MTRNetworkCommissioningClusterNetworkInfoStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterNetworkInfoStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRNetworkCommissioningClusterNetworkInfoStruct {}
impl INSObject for MTRNetworkCommissioningClusterNetworkInfoStruct {}
impl PNSObject for MTRNetworkCommissioningClusterNetworkInfoStruct {}
impl std::convert::TryFrom<NSObject> for MTRNetworkCommissioningClusterNetworkInfoStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRNetworkCommissioningClusterNetworkInfoStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterNetworkInfoStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRNetworkCommissioningClusterNetworkInfoStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRNetworkCommissioningClusterNetworkInfoStruct" ,)
        }
    }
}
impl IMTRNetworkCommissioningClusterNetworkInfoStruct
    for MTRNetworkCommissioningClusterNetworkInfoStruct
{
}
pub trait IMTRNetworkCommissioningClusterNetworkInfoStruct: Sized + std::ops::Deref {
    unsafe fn networkID(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkID)
    }
    unsafe fn setNetworkID_(&self, networkID: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNetworkID : networkID)
    }
    unsafe fn connected(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, connected)
    }
    unsafe fn setConnected_(&self, connected: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setConnected : connected)
    }
    unsafe fn networkIdentifier(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkIdentifier)
    }
    unsafe fn setNetworkIdentifier_(&self, networkIdentifier: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNetworkIdentifier : networkIdentifier)
    }
    unsafe fn clientIdentifier(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, clientIdentifier)
    }
    unsafe fn setClientIdentifier_(&self, clientIdentifier: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setClientIdentifier : clientIdentifier)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRNetworkCommissioningClusterNetworkInfo(pub id);
impl std::ops::Deref for MTRNetworkCommissioningClusterNetworkInfo {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRNetworkCommissioningClusterNetworkInfo {}
impl MTRNetworkCommissioningClusterNetworkInfo {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterNetworkInfo").unwrap(), alloc) })
    }
}
impl IMTRNetworkCommissioningClusterNetworkInfoStruct
    for MTRNetworkCommissioningClusterNetworkInfo
{
}
impl PNSCopying for MTRNetworkCommissioningClusterNetworkInfo {}
impl From<MTRNetworkCommissioningClusterNetworkInfo>
    for MTRNetworkCommissioningClusterNetworkInfoStruct
{
    fn from(
        child: MTRNetworkCommissioningClusterNetworkInfo,
    ) -> MTRNetworkCommissioningClusterNetworkInfoStruct {
        MTRNetworkCommissioningClusterNetworkInfoStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRNetworkCommissioningClusterNetworkInfoStruct>
    for MTRNetworkCommissioningClusterNetworkInfo
{
    type Error = &'static str;
    fn try_from(
        parent: MTRNetworkCommissioningClusterNetworkInfoStruct,
    ) -> Result<MTRNetworkCommissioningClusterNetworkInfo, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterNetworkInfo").unwrap())
        };
        if is_kind_of {
            Ok(MTRNetworkCommissioningClusterNetworkInfo(parent.0))
        } else {
            Err ("This MTRNetworkCommissioningClusterNetworkInfoStruct cannot be downcasted to MTRNetworkCommissioningClusterNetworkInfo" ,)
        }
    }
}
impl INSObject for MTRNetworkCommissioningClusterNetworkInfo {}
impl PNSObject for MTRNetworkCommissioningClusterNetworkInfo {}
impl IMTRNetworkCommissioningClusterNetworkInfo for MTRNetworkCommissioningClusterNetworkInfo {}
pub trait IMTRNetworkCommissioningClusterNetworkInfo: Sized + std::ops::Deref {
    unsafe fn networkID(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkID)
    }
    unsafe fn setNetworkID_(&self, networkID: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNetworkID : networkID)
    }
    unsafe fn connected(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, connected)
    }
    unsafe fn setConnected_(&self, connected: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setConnected : connected)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct(pub id);
impl std::ops::Deref for MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct {}
impl MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct {}
impl INSObject for MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct {}
impl PNSObject for MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct" ,)
        }
    }
}
impl IMTRNetworkCommissioningClusterThreadInterfaceScanResultStruct
    for MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct
{
}
pub trait IMTRNetworkCommissioningClusterThreadInterfaceScanResultStruct:
    Sized + std::ops::Deref
{
    unsafe fn panId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, panId)
    }
    unsafe fn setPanId_(&self, panId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPanId : panId)
    }
    unsafe fn extendedPanId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, extendedPanId)
    }
    unsafe fn setExtendedPanId_(&self, extendedPanId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExtendedPanId : extendedPanId)
    }
    unsafe fn networkName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkName)
    }
    unsafe fn setNetworkName_(&self, networkName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNetworkName : networkName)
    }
    unsafe fn channel(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, channel)
    }
    unsafe fn setChannel_(&self, channel: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChannel : channel)
    }
    unsafe fn version(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, version)
    }
    unsafe fn setVersion_(&self, version: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVersion : version)
    }
    unsafe fn extendedAddress(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, extendedAddress)
    }
    unsafe fn setExtendedAddress_(&self, extendedAddress: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExtendedAddress : extendedAddress)
    }
    unsafe fn rssi(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rssi)
    }
    unsafe fn setRssi_(&self, rssi: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRssi : rssi)
    }
    unsafe fn lqi(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lqi)
    }
    unsafe fn setLqi_(&self, lqi: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLqi : lqi)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRNetworkCommissioningClusterThreadInterfaceScanResult(pub id);
impl std::ops::Deref for MTRNetworkCommissioningClusterThreadInterfaceScanResult {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRNetworkCommissioningClusterThreadInterfaceScanResult {}
impl MTRNetworkCommissioningClusterThreadInterfaceScanResult {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterThreadInterfaceScanResult").unwrap(), alloc)
        })
    }
}
impl IMTRNetworkCommissioningClusterThreadInterfaceScanResultStruct
    for MTRNetworkCommissioningClusterThreadInterfaceScanResult
{
}
impl PNSCopying for MTRNetworkCommissioningClusterThreadInterfaceScanResult {}
impl From<MTRNetworkCommissioningClusterThreadInterfaceScanResult>
    for MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct
{
    fn from(
        child: MTRNetworkCommissioningClusterThreadInterfaceScanResult,
    ) -> MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct {
        MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct>
    for MTRNetworkCommissioningClusterThreadInterfaceScanResult
{
    type Error = &'static str;
    fn try_from(
        parent: MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct,
    ) -> Result<MTRNetworkCommissioningClusterThreadInterfaceScanResult, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterThreadInterfaceScanResult").unwrap())
        };
        if is_kind_of {
            Ok(MTRNetworkCommissioningClusterThreadInterfaceScanResult(
                parent.0,
            ))
        } else {
            Err ("This MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct cannot be downcasted to MTRNetworkCommissioningClusterThreadInterfaceScanResult" ,)
        }
    }
}
impl INSObject for MTRNetworkCommissioningClusterThreadInterfaceScanResult {}
impl PNSObject for MTRNetworkCommissioningClusterThreadInterfaceScanResult {}
impl IMTRNetworkCommissioningClusterThreadInterfaceScanResult
    for MTRNetworkCommissioningClusterThreadInterfaceScanResult
{
}
pub trait IMTRNetworkCommissioningClusterThreadInterfaceScanResult:
    Sized + std::ops::Deref
{
    unsafe fn panId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, panId)
    }
    unsafe fn setPanId_(&self, panId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPanId : panId)
    }
    unsafe fn extendedPanId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, extendedPanId)
    }
    unsafe fn setExtendedPanId_(&self, extendedPanId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExtendedPanId : extendedPanId)
    }
    unsafe fn networkName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkName)
    }
    unsafe fn setNetworkName_(&self, networkName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNetworkName : networkName)
    }
    unsafe fn channel(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, channel)
    }
    unsafe fn setChannel_(&self, channel: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChannel : channel)
    }
    unsafe fn version(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, version)
    }
    unsafe fn setVersion_(&self, version: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVersion : version)
    }
    unsafe fn extendedAddress(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, extendedAddress)
    }
    unsafe fn setExtendedAddress_(&self, extendedAddress: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExtendedAddress : extendedAddress)
    }
    unsafe fn rssi(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rssi)
    }
    unsafe fn setRssi_(&self, rssi: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRssi : rssi)
    }
    unsafe fn lqi(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lqi)
    }
    unsafe fn setLqi_(&self, lqi: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLqi : lqi)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct(pub id);
impl std::ops::Deref for MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct {}
impl MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct {}
impl INSObject for MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct {}
impl PNSObject for MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct" ,)
        }
    }
}
impl IMTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct
    for MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct
{
}
pub trait IMTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct:
    Sized + std::ops::Deref
{
    unsafe fn security(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, security)
    }
    unsafe fn setSecurity_(&self, security: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSecurity : security)
    }
    unsafe fn ssid(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ssid)
    }
    unsafe fn setSsid_(&self, ssid: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSsid : ssid)
    }
    unsafe fn bssid(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, bssid)
    }
    unsafe fn setBssid_(&self, bssid: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBssid : bssid)
    }
    unsafe fn channel(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, channel)
    }
    unsafe fn setChannel_(&self, channel: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChannel : channel)
    }
    unsafe fn wiFiBand(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, wiFiBand)
    }
    unsafe fn setWiFiBand_(&self, wiFiBand: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWiFiBand : wiFiBand)
    }
    unsafe fn rssi(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rssi)
    }
    unsafe fn setRssi_(&self, rssi: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRssi : rssi)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRNetworkCommissioningClusterWiFiInterfaceScanResult(pub id);
impl std::ops::Deref for MTRNetworkCommissioningClusterWiFiInterfaceScanResult {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRNetworkCommissioningClusterWiFiInterfaceScanResult {}
impl MTRNetworkCommissioningClusterWiFiInterfaceScanResult {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterWiFiInterfaceScanResult").unwrap(), alloc)
        })
    }
}
impl IMTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct
    for MTRNetworkCommissioningClusterWiFiInterfaceScanResult
{
}
impl PNSCopying for MTRNetworkCommissioningClusterWiFiInterfaceScanResult {}
impl From<MTRNetworkCommissioningClusterWiFiInterfaceScanResult>
    for MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct
{
    fn from(
        child: MTRNetworkCommissioningClusterWiFiInterfaceScanResult,
    ) -> MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct {
        MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct>
    for MTRNetworkCommissioningClusterWiFiInterfaceScanResult
{
    type Error = &'static str;
    fn try_from(
        parent: MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct,
    ) -> Result<MTRNetworkCommissioningClusterWiFiInterfaceScanResult, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterWiFiInterfaceScanResult").unwrap())
        };
        if is_kind_of {
            Ok(MTRNetworkCommissioningClusterWiFiInterfaceScanResult(
                parent.0,
            ))
        } else {
            Err ("This MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct cannot be downcasted to MTRNetworkCommissioningClusterWiFiInterfaceScanResult" ,)
        }
    }
}
impl INSObject for MTRNetworkCommissioningClusterWiFiInterfaceScanResult {}
impl PNSObject for MTRNetworkCommissioningClusterWiFiInterfaceScanResult {}
impl IMTRNetworkCommissioningClusterWiFiInterfaceScanResult
    for MTRNetworkCommissioningClusterWiFiInterfaceScanResult
{
}
pub trait IMTRNetworkCommissioningClusterWiFiInterfaceScanResult: Sized + std::ops::Deref {
    unsafe fn security(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, security)
    }
    unsafe fn setSecurity_(&self, security: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSecurity : security)
    }
    unsafe fn ssid(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ssid)
    }
    unsafe fn setSsid_(&self, ssid: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSsid : ssid)
    }
    unsafe fn bssid(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, bssid)
    }
    unsafe fn setBssid_(&self, bssid: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBssid : bssid)
    }
    unsafe fn channel(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, channel)
    }
    unsafe fn setChannel_(&self, channel: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChannel : channel)
    }
    unsafe fn wiFiBand(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, wiFiBand)
    }
    unsafe fn setWiFiBand_(&self, wiFiBand: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWiFiBand : wiFiBand)
    }
    unsafe fn rssi(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rssi)
    }
    unsafe fn setRssi_(&self, rssi: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRssi : rssi)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGeneralDiagnosticsClusterNetworkInterface(pub id);
impl std::ops::Deref for MTRGeneralDiagnosticsClusterNetworkInterface {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGeneralDiagnosticsClusterNetworkInterface {}
impl MTRGeneralDiagnosticsClusterNetworkInterface {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterNetworkInterface").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRGeneralDiagnosticsClusterNetworkInterface {}
impl INSObject for MTRGeneralDiagnosticsClusterNetworkInterface {}
impl PNSObject for MTRGeneralDiagnosticsClusterNetworkInterface {}
impl std::convert::TryFrom<NSObject> for MTRGeneralDiagnosticsClusterNetworkInterface {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGeneralDiagnosticsClusterNetworkInterface, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterNetworkInterface").unwrap())
        };
        if is_kind_of {
            Ok(MTRGeneralDiagnosticsClusterNetworkInterface(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGeneralDiagnosticsClusterNetworkInterface" ,)
        }
    }
}
impl IMTRGeneralDiagnosticsClusterNetworkInterface
    for MTRGeneralDiagnosticsClusterNetworkInterface
{
}
pub trait IMTRGeneralDiagnosticsClusterNetworkInterface: Sized + std::ops::Deref {
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn isOperational(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isOperational)
    }
    unsafe fn setIsOperational_(&self, isOperational: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIsOperational : isOperational)
    }
    unsafe fn offPremiseServicesReachableIPv4(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, offPremiseServicesReachableIPv4)
    }
    unsafe fn setOffPremiseServicesReachableIPv4_(&self, offPremiseServicesReachableIPv4: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOffPremiseServicesReachableIPv4 : offPremiseServicesReachableIPv4)
    }
    unsafe fn offPremiseServicesReachableIPv6(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, offPremiseServicesReachableIPv6)
    }
    unsafe fn setOffPremiseServicesReachableIPv6_(&self, offPremiseServicesReachableIPv6: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOffPremiseServicesReachableIPv6 : offPremiseServicesReachableIPv6)
    }
    unsafe fn hardwareAddress(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hardwareAddress)
    }
    unsafe fn setHardwareAddress_(&self, hardwareAddress: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHardwareAddress : hardwareAddress)
    }
    unsafe fn iPv4Addresses(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, iPv4Addresses)
    }
    unsafe fn setIPv4Addresses_(&self, iPv4Addresses: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIPv4Addresses : iPv4Addresses)
    }
    unsafe fn iPv6Addresses(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, iPv6Addresses)
    }
    unsafe fn setIPv6Addresses_(&self, iPv6Addresses: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIPv6Addresses : iPv6Addresses)
    }
    unsafe fn type_(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, type)
    }
    unsafe fn setType_(&self, type_: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setType : type_)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGeneralDiagnosticsClusterNetworkInterfaceType(pub id);
impl std::ops::Deref for MTRGeneralDiagnosticsClusterNetworkInterfaceType {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGeneralDiagnosticsClusterNetworkInterfaceType {}
impl MTRGeneralDiagnosticsClusterNetworkInterfaceType {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterNetworkInterfaceType").unwrap(), alloc)
        })
    }
}
impl IMTRGeneralDiagnosticsClusterNetworkInterface
    for MTRGeneralDiagnosticsClusterNetworkInterfaceType
{
}
impl PNSCopying for MTRGeneralDiagnosticsClusterNetworkInterfaceType {}
impl From<MTRGeneralDiagnosticsClusterNetworkInterfaceType>
    for MTRGeneralDiagnosticsClusterNetworkInterface
{
    fn from(
        child: MTRGeneralDiagnosticsClusterNetworkInterfaceType,
    ) -> MTRGeneralDiagnosticsClusterNetworkInterface {
        MTRGeneralDiagnosticsClusterNetworkInterface(child.0)
    }
}
impl std::convert::TryFrom<MTRGeneralDiagnosticsClusterNetworkInterface>
    for MTRGeneralDiagnosticsClusterNetworkInterfaceType
{
    type Error = &'static str;
    fn try_from(
        parent: MTRGeneralDiagnosticsClusterNetworkInterface,
    ) -> Result<MTRGeneralDiagnosticsClusterNetworkInterfaceType, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterNetworkInterfaceType").unwrap())
        };
        if is_kind_of {
            Ok(MTRGeneralDiagnosticsClusterNetworkInterfaceType(parent.0))
        } else {
            Err ("This MTRGeneralDiagnosticsClusterNetworkInterface cannot be downcasted to MTRGeneralDiagnosticsClusterNetworkInterfaceType" ,)
        }
    }
}
impl INSObject for MTRGeneralDiagnosticsClusterNetworkInterfaceType {}
impl PNSObject for MTRGeneralDiagnosticsClusterNetworkInterfaceType {}
impl IMTRGeneralDiagnosticsClusterNetworkInterfaceType
    for MTRGeneralDiagnosticsClusterNetworkInterfaceType
{
}
pub trait IMTRGeneralDiagnosticsClusterNetworkInterfaceType: Sized + std::ops::Deref {
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn isOperational(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isOperational)
    }
    unsafe fn setIsOperational_(&self, isOperational: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIsOperational : isOperational)
    }
    unsafe fn offPremiseServicesReachableIPv4(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, offPremiseServicesReachableIPv4)
    }
    unsafe fn setOffPremiseServicesReachableIPv4_(&self, offPremiseServicesReachableIPv4: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOffPremiseServicesReachableIPv4 : offPremiseServicesReachableIPv4)
    }
    unsafe fn offPremiseServicesReachableIPv6(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, offPremiseServicesReachableIPv6)
    }
    unsafe fn setOffPremiseServicesReachableIPv6_(&self, offPremiseServicesReachableIPv6: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOffPremiseServicesReachableIPv6 : offPremiseServicesReachableIPv6)
    }
    unsafe fn hardwareAddress(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hardwareAddress)
    }
    unsafe fn setHardwareAddress_(&self, hardwareAddress: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHardwareAddress : hardwareAddress)
    }
    unsafe fn iPv4Addresses(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, iPv4Addresses)
    }
    unsafe fn setIPv4Addresses_(&self, iPv4Addresses: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIPv4Addresses : iPv4Addresses)
    }
    unsafe fn iPv6Addresses(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, iPv6Addresses)
    }
    unsafe fn setIPv6Addresses_(&self, iPv6Addresses: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIPv6Addresses : iPv6Addresses)
    }
    unsafe fn type_(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, type)
    }
    unsafe fn setType_(&self, type_: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setType : type_)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGeneralDiagnosticsClusterHardwareFaultChangeEvent(pub id);
impl std::ops::Deref for MTRGeneralDiagnosticsClusterHardwareFaultChangeEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGeneralDiagnosticsClusterHardwareFaultChangeEvent {}
impl MTRGeneralDiagnosticsClusterHardwareFaultChangeEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterHardwareFaultChangeEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGeneralDiagnosticsClusterHardwareFaultChangeEvent {}
impl INSObject for MTRGeneralDiagnosticsClusterHardwareFaultChangeEvent {}
impl PNSObject for MTRGeneralDiagnosticsClusterHardwareFaultChangeEvent {}
impl std::convert::TryFrom<NSObject> for MTRGeneralDiagnosticsClusterHardwareFaultChangeEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGeneralDiagnosticsClusterHardwareFaultChangeEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterHardwareFaultChangeEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRGeneralDiagnosticsClusterHardwareFaultChangeEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGeneralDiagnosticsClusterHardwareFaultChangeEvent" ,)
        }
    }
}
impl IMTRGeneralDiagnosticsClusterHardwareFaultChangeEvent
    for MTRGeneralDiagnosticsClusterHardwareFaultChangeEvent
{
}
pub trait IMTRGeneralDiagnosticsClusterHardwareFaultChangeEvent: Sized + std::ops::Deref {
    unsafe fn current(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, current)
    }
    unsafe fn setCurrent_(&self, current: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrent : current)
    }
    unsafe fn previous(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previous)
    }
    unsafe fn setPrevious_(&self, previous: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPrevious : previous)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGeneralDiagnosticsClusterRadioFaultChangeEvent(pub id);
impl std::ops::Deref for MTRGeneralDiagnosticsClusterRadioFaultChangeEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGeneralDiagnosticsClusterRadioFaultChangeEvent {}
impl MTRGeneralDiagnosticsClusterRadioFaultChangeEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterRadioFaultChangeEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGeneralDiagnosticsClusterRadioFaultChangeEvent {}
impl INSObject for MTRGeneralDiagnosticsClusterRadioFaultChangeEvent {}
impl PNSObject for MTRGeneralDiagnosticsClusterRadioFaultChangeEvent {}
impl std::convert::TryFrom<NSObject> for MTRGeneralDiagnosticsClusterRadioFaultChangeEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGeneralDiagnosticsClusterRadioFaultChangeEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterRadioFaultChangeEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRGeneralDiagnosticsClusterRadioFaultChangeEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGeneralDiagnosticsClusterRadioFaultChangeEvent" ,)
        }
    }
}
impl IMTRGeneralDiagnosticsClusterRadioFaultChangeEvent
    for MTRGeneralDiagnosticsClusterRadioFaultChangeEvent
{
}
pub trait IMTRGeneralDiagnosticsClusterRadioFaultChangeEvent: Sized + std::ops::Deref {
    unsafe fn current(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, current)
    }
    unsafe fn setCurrent_(&self, current: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrent : current)
    }
    unsafe fn previous(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previous)
    }
    unsafe fn setPrevious_(&self, previous: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPrevious : previous)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGeneralDiagnosticsClusterNetworkFaultChangeEvent(pub id);
impl std::ops::Deref for MTRGeneralDiagnosticsClusterNetworkFaultChangeEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGeneralDiagnosticsClusterNetworkFaultChangeEvent {}
impl MTRGeneralDiagnosticsClusterNetworkFaultChangeEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterNetworkFaultChangeEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGeneralDiagnosticsClusterNetworkFaultChangeEvent {}
impl INSObject for MTRGeneralDiagnosticsClusterNetworkFaultChangeEvent {}
impl PNSObject for MTRGeneralDiagnosticsClusterNetworkFaultChangeEvent {}
impl std::convert::TryFrom<NSObject> for MTRGeneralDiagnosticsClusterNetworkFaultChangeEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGeneralDiagnosticsClusterNetworkFaultChangeEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterNetworkFaultChangeEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRGeneralDiagnosticsClusterNetworkFaultChangeEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGeneralDiagnosticsClusterNetworkFaultChangeEvent" ,)
        }
    }
}
impl IMTRGeneralDiagnosticsClusterNetworkFaultChangeEvent
    for MTRGeneralDiagnosticsClusterNetworkFaultChangeEvent
{
}
pub trait IMTRGeneralDiagnosticsClusterNetworkFaultChangeEvent: Sized + std::ops::Deref {
    unsafe fn current(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, current)
    }
    unsafe fn setCurrent_(&self, current: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrent : current)
    }
    unsafe fn previous(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previous)
    }
    unsafe fn setPrevious_(&self, previous: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPrevious : previous)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGeneralDiagnosticsClusterBootReasonEvent(pub id);
impl std::ops::Deref for MTRGeneralDiagnosticsClusterBootReasonEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGeneralDiagnosticsClusterBootReasonEvent {}
impl MTRGeneralDiagnosticsClusterBootReasonEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterBootReasonEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRGeneralDiagnosticsClusterBootReasonEvent {}
impl INSObject for MTRGeneralDiagnosticsClusterBootReasonEvent {}
impl PNSObject for MTRGeneralDiagnosticsClusterBootReasonEvent {}
impl std::convert::TryFrom<NSObject> for MTRGeneralDiagnosticsClusterBootReasonEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGeneralDiagnosticsClusterBootReasonEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterBootReasonEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRGeneralDiagnosticsClusterBootReasonEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRGeneralDiagnosticsClusterBootReasonEvent")
        }
    }
}
impl IMTRGeneralDiagnosticsClusterBootReasonEvent for MTRGeneralDiagnosticsClusterBootReasonEvent {}
pub trait IMTRGeneralDiagnosticsClusterBootReasonEvent: Sized + std::ops::Deref {
    unsafe fn bootReason(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, bootReason)
    }
    unsafe fn setBootReason_(&self, bootReason: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBootReason : bootReason)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSoftwareDiagnosticsClusterThreadMetricsStruct(pub id);
impl std::ops::Deref for MTRSoftwareDiagnosticsClusterThreadMetricsStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSoftwareDiagnosticsClusterThreadMetricsStruct {}
impl MTRSoftwareDiagnosticsClusterThreadMetricsStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSoftwareDiagnosticsClusterThreadMetricsStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRSoftwareDiagnosticsClusterThreadMetricsStruct {}
impl INSObject for MTRSoftwareDiagnosticsClusterThreadMetricsStruct {}
impl PNSObject for MTRSoftwareDiagnosticsClusterThreadMetricsStruct {}
impl std::convert::TryFrom<NSObject> for MTRSoftwareDiagnosticsClusterThreadMetricsStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRSoftwareDiagnosticsClusterThreadMetricsStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSoftwareDiagnosticsClusterThreadMetricsStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRSoftwareDiagnosticsClusterThreadMetricsStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRSoftwareDiagnosticsClusterThreadMetricsStruct" ,)
        }
    }
}
impl IMTRSoftwareDiagnosticsClusterThreadMetricsStruct
    for MTRSoftwareDiagnosticsClusterThreadMetricsStruct
{
}
pub trait IMTRSoftwareDiagnosticsClusterThreadMetricsStruct: Sized + std::ops::Deref {
    unsafe fn id(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, id)
    }
    unsafe fn setId_(&self, id: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setId : id)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn stackFreeCurrent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stackFreeCurrent)
    }
    unsafe fn setStackFreeCurrent_(&self, stackFreeCurrent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStackFreeCurrent : stackFreeCurrent)
    }
    unsafe fn stackFreeMinimum(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stackFreeMinimum)
    }
    unsafe fn setStackFreeMinimum_(&self, stackFreeMinimum: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStackFreeMinimum : stackFreeMinimum)
    }
    unsafe fn stackSize(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stackSize)
    }
    unsafe fn setStackSize_(&self, stackSize: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStackSize : stackSize)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSoftwareDiagnosticsClusterThreadMetrics(pub id);
impl std::ops::Deref for MTRSoftwareDiagnosticsClusterThreadMetrics {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSoftwareDiagnosticsClusterThreadMetrics {}
impl MTRSoftwareDiagnosticsClusterThreadMetrics {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSoftwareDiagnosticsClusterThreadMetrics").unwrap(), alloc) })
    }
}
impl IMTRSoftwareDiagnosticsClusterThreadMetricsStruct
    for MTRSoftwareDiagnosticsClusterThreadMetrics
{
}
impl PNSCopying for MTRSoftwareDiagnosticsClusterThreadMetrics {}
impl From<MTRSoftwareDiagnosticsClusterThreadMetrics>
    for MTRSoftwareDiagnosticsClusterThreadMetricsStruct
{
    fn from(
        child: MTRSoftwareDiagnosticsClusterThreadMetrics,
    ) -> MTRSoftwareDiagnosticsClusterThreadMetricsStruct {
        MTRSoftwareDiagnosticsClusterThreadMetricsStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRSoftwareDiagnosticsClusterThreadMetricsStruct>
    for MTRSoftwareDiagnosticsClusterThreadMetrics
{
    type Error = &'static str;
    fn try_from(
        parent: MTRSoftwareDiagnosticsClusterThreadMetricsStruct,
    ) -> Result<MTRSoftwareDiagnosticsClusterThreadMetrics, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSoftwareDiagnosticsClusterThreadMetrics").unwrap())
        };
        if is_kind_of {
            Ok(MTRSoftwareDiagnosticsClusterThreadMetrics(parent.0))
        } else {
            Err ("This MTRSoftwareDiagnosticsClusterThreadMetricsStruct cannot be downcasted to MTRSoftwareDiagnosticsClusterThreadMetrics" ,)
        }
    }
}
impl INSObject for MTRSoftwareDiagnosticsClusterThreadMetrics {}
impl PNSObject for MTRSoftwareDiagnosticsClusterThreadMetrics {}
impl IMTRSoftwareDiagnosticsClusterThreadMetrics for MTRSoftwareDiagnosticsClusterThreadMetrics {}
pub trait IMTRSoftwareDiagnosticsClusterThreadMetrics: Sized + std::ops::Deref {
    unsafe fn id(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, id)
    }
    unsafe fn setId_(&self, id: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setId : id)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn stackFreeCurrent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stackFreeCurrent)
    }
    unsafe fn setStackFreeCurrent_(&self, stackFreeCurrent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStackFreeCurrent : stackFreeCurrent)
    }
    unsafe fn stackFreeMinimum(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stackFreeMinimum)
    }
    unsafe fn setStackFreeMinimum_(&self, stackFreeMinimum: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStackFreeMinimum : stackFreeMinimum)
    }
    unsafe fn stackSize(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stackSize)
    }
    unsafe fn setStackSize_(&self, stackSize: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStackSize : stackSize)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSoftwareDiagnosticsClusterSoftwareFaultEvent(pub id);
impl std::ops::Deref for MTRSoftwareDiagnosticsClusterSoftwareFaultEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSoftwareDiagnosticsClusterSoftwareFaultEvent {}
impl MTRSoftwareDiagnosticsClusterSoftwareFaultEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSoftwareDiagnosticsClusterSoftwareFaultEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRSoftwareDiagnosticsClusterSoftwareFaultEvent {}
impl INSObject for MTRSoftwareDiagnosticsClusterSoftwareFaultEvent {}
impl PNSObject for MTRSoftwareDiagnosticsClusterSoftwareFaultEvent {}
impl std::convert::TryFrom<NSObject> for MTRSoftwareDiagnosticsClusterSoftwareFaultEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRSoftwareDiagnosticsClusterSoftwareFaultEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSoftwareDiagnosticsClusterSoftwareFaultEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRSoftwareDiagnosticsClusterSoftwareFaultEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRSoftwareDiagnosticsClusterSoftwareFaultEvent" ,)
        }
    }
}
impl IMTRSoftwareDiagnosticsClusterSoftwareFaultEvent
    for MTRSoftwareDiagnosticsClusterSoftwareFaultEvent
{
}
pub trait IMTRSoftwareDiagnosticsClusterSoftwareFaultEvent: Sized + std::ops::Deref {
    unsafe fn id(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, id)
    }
    unsafe fn setId_(&self, id: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setId : id)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn faultRecording(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, faultRecording)
    }
    unsafe fn setFaultRecording_(&self, faultRecording: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFaultRecording : faultRecording)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThreadNetworkDiagnosticsClusterNeighborTableStruct(pub id);
impl std::ops::Deref for MTRThreadNetworkDiagnosticsClusterNeighborTableStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThreadNetworkDiagnosticsClusterNeighborTableStruct {}
impl MTRThreadNetworkDiagnosticsClusterNeighborTableStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThreadNetworkDiagnosticsClusterNeighborTableStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThreadNetworkDiagnosticsClusterNeighborTableStruct {}
impl INSObject for MTRThreadNetworkDiagnosticsClusterNeighborTableStruct {}
impl PNSObject for MTRThreadNetworkDiagnosticsClusterNeighborTableStruct {}
impl std::convert::TryFrom<NSObject> for MTRThreadNetworkDiagnosticsClusterNeighborTableStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThreadNetworkDiagnosticsClusterNeighborTableStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThreadNetworkDiagnosticsClusterNeighborTableStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRThreadNetworkDiagnosticsClusterNeighborTableStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThreadNetworkDiagnosticsClusterNeighborTableStruct" ,)
        }
    }
}
impl IMTRThreadNetworkDiagnosticsClusterNeighborTableStruct
    for MTRThreadNetworkDiagnosticsClusterNeighborTableStruct
{
}
pub trait IMTRThreadNetworkDiagnosticsClusterNeighborTableStruct: Sized + std::ops::Deref {
    unsafe fn extAddress(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, extAddress)
    }
    unsafe fn setExtAddress_(&self, extAddress: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExtAddress : extAddress)
    }
    unsafe fn age(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, age)
    }
    unsafe fn setAge_(&self, age: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAge : age)
    }
    unsafe fn rloc16(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rloc16)
    }
    unsafe fn setRloc16_(&self, rloc16: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRloc16 : rloc16)
    }
    unsafe fn linkFrameCounter(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, linkFrameCounter)
    }
    unsafe fn setLinkFrameCounter_(&self, linkFrameCounter: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLinkFrameCounter : linkFrameCounter)
    }
    unsafe fn mleFrameCounter(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mleFrameCounter)
    }
    unsafe fn setMleFrameCounter_(&self, mleFrameCounter: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMleFrameCounter : mleFrameCounter)
    }
    unsafe fn lqi(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lqi)
    }
    unsafe fn setLqi_(&self, lqi: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLqi : lqi)
    }
    unsafe fn averageRssi(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, averageRssi)
    }
    unsafe fn setAverageRssi_(&self, averageRssi: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAverageRssi : averageRssi)
    }
    unsafe fn lastRssi(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lastRssi)
    }
    unsafe fn setLastRssi_(&self, lastRssi: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLastRssi : lastRssi)
    }
    unsafe fn frameErrorRate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, frameErrorRate)
    }
    unsafe fn setFrameErrorRate_(&self, frameErrorRate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFrameErrorRate : frameErrorRate)
    }
    unsafe fn messageErrorRate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, messageErrorRate)
    }
    unsafe fn setMessageErrorRate_(&self, messageErrorRate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMessageErrorRate : messageErrorRate)
    }
    unsafe fn rxOnWhenIdle(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rxOnWhenIdle)
    }
    unsafe fn setRxOnWhenIdle_(&self, rxOnWhenIdle: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRxOnWhenIdle : rxOnWhenIdle)
    }
    unsafe fn fullThreadDevice(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fullThreadDevice)
    }
    unsafe fn setFullThreadDevice_(&self, fullThreadDevice: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFullThreadDevice : fullThreadDevice)
    }
    unsafe fn fullNetworkData(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fullNetworkData)
    }
    unsafe fn setFullNetworkData_(&self, fullNetworkData: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFullNetworkData : fullNetworkData)
    }
    unsafe fn isChild(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isChild)
    }
    unsafe fn setIsChild_(&self, isChild: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIsChild : isChild)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThreadNetworkDiagnosticsClusterNeighborTable(pub id);
impl std::ops::Deref for MTRThreadNetworkDiagnosticsClusterNeighborTable {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThreadNetworkDiagnosticsClusterNeighborTable {}
impl MTRThreadNetworkDiagnosticsClusterNeighborTable {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThreadNetworkDiagnosticsClusterNeighborTable").unwrap(), alloc)
        })
    }
}
impl IMTRThreadNetworkDiagnosticsClusterNeighborTableStruct
    for MTRThreadNetworkDiagnosticsClusterNeighborTable
{
}
impl PNSCopying for MTRThreadNetworkDiagnosticsClusterNeighborTable {}
impl From<MTRThreadNetworkDiagnosticsClusterNeighborTable>
    for MTRThreadNetworkDiagnosticsClusterNeighborTableStruct
{
    fn from(
        child: MTRThreadNetworkDiagnosticsClusterNeighborTable,
    ) -> MTRThreadNetworkDiagnosticsClusterNeighborTableStruct {
        MTRThreadNetworkDiagnosticsClusterNeighborTableStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRThreadNetworkDiagnosticsClusterNeighborTableStruct>
    for MTRThreadNetworkDiagnosticsClusterNeighborTable
{
    type Error = &'static str;
    fn try_from(
        parent: MTRThreadNetworkDiagnosticsClusterNeighborTableStruct,
    ) -> Result<MTRThreadNetworkDiagnosticsClusterNeighborTable, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThreadNetworkDiagnosticsClusterNeighborTable").unwrap())
        };
        if is_kind_of {
            Ok(MTRThreadNetworkDiagnosticsClusterNeighborTable(parent.0))
        } else {
            Err ("This MTRThreadNetworkDiagnosticsClusterNeighborTableStruct cannot be downcasted to MTRThreadNetworkDiagnosticsClusterNeighborTable" ,)
        }
    }
}
impl INSObject for MTRThreadNetworkDiagnosticsClusterNeighborTable {}
impl PNSObject for MTRThreadNetworkDiagnosticsClusterNeighborTable {}
impl IMTRThreadNetworkDiagnosticsClusterNeighborTable
    for MTRThreadNetworkDiagnosticsClusterNeighborTable
{
}
pub trait IMTRThreadNetworkDiagnosticsClusterNeighborTable: Sized + std::ops::Deref {
    unsafe fn extAddress(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, extAddress)
    }
    unsafe fn setExtAddress_(&self, extAddress: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExtAddress : extAddress)
    }
    unsafe fn age(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, age)
    }
    unsafe fn setAge_(&self, age: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAge : age)
    }
    unsafe fn rloc16(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rloc16)
    }
    unsafe fn setRloc16_(&self, rloc16: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRloc16 : rloc16)
    }
    unsafe fn linkFrameCounter(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, linkFrameCounter)
    }
    unsafe fn setLinkFrameCounter_(&self, linkFrameCounter: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLinkFrameCounter : linkFrameCounter)
    }
    unsafe fn mleFrameCounter(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mleFrameCounter)
    }
    unsafe fn setMleFrameCounter_(&self, mleFrameCounter: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMleFrameCounter : mleFrameCounter)
    }
    unsafe fn lqi(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lqi)
    }
    unsafe fn setLqi_(&self, lqi: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLqi : lqi)
    }
    unsafe fn averageRssi(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, averageRssi)
    }
    unsafe fn setAverageRssi_(&self, averageRssi: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAverageRssi : averageRssi)
    }
    unsafe fn lastRssi(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lastRssi)
    }
    unsafe fn setLastRssi_(&self, lastRssi: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLastRssi : lastRssi)
    }
    unsafe fn frameErrorRate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, frameErrorRate)
    }
    unsafe fn setFrameErrorRate_(&self, frameErrorRate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFrameErrorRate : frameErrorRate)
    }
    unsafe fn messageErrorRate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, messageErrorRate)
    }
    unsafe fn setMessageErrorRate_(&self, messageErrorRate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMessageErrorRate : messageErrorRate)
    }
    unsafe fn rxOnWhenIdle(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rxOnWhenIdle)
    }
    unsafe fn setRxOnWhenIdle_(&self, rxOnWhenIdle: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRxOnWhenIdle : rxOnWhenIdle)
    }
    unsafe fn fullThreadDevice(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fullThreadDevice)
    }
    unsafe fn setFullThreadDevice_(&self, fullThreadDevice: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFullThreadDevice : fullThreadDevice)
    }
    unsafe fn fullNetworkData(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fullNetworkData)
    }
    unsafe fn setFullNetworkData_(&self, fullNetworkData: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFullNetworkData : fullNetworkData)
    }
    unsafe fn isChild(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isChild)
    }
    unsafe fn setIsChild_(&self, isChild: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIsChild : isChild)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents(pub id);
impl std::ops::Deref for MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents {}
impl MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents {}
impl INSObject for MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents {}
impl PNSObject for MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents {}
impl std::convert::TryFrom<NSObject>
    for MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents").unwrap())
        };
        if is_kind_of {
            Ok(MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents" ,)
        }
    }
}
impl IMTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents
    for MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents
{
}
pub trait IMTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents:
    Sized + std::ops::Deref
{
    unsafe fn activeTimestampPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, activeTimestampPresent)
    }
    unsafe fn setActiveTimestampPresent_(&self, activeTimestampPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActiveTimestampPresent : activeTimestampPresent)
    }
    unsafe fn pendingTimestampPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pendingTimestampPresent)
    }
    unsafe fn setPendingTimestampPresent_(&self, pendingTimestampPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPendingTimestampPresent : pendingTimestampPresent)
    }
    unsafe fn masterKeyPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, masterKeyPresent)
    }
    unsafe fn setMasterKeyPresent_(&self, masterKeyPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMasterKeyPresent : masterKeyPresent)
    }
    unsafe fn networkNamePresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkNamePresent)
    }
    unsafe fn setNetworkNamePresent_(&self, networkNamePresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNetworkNamePresent : networkNamePresent)
    }
    unsafe fn extendedPanIdPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, extendedPanIdPresent)
    }
    unsafe fn setExtendedPanIdPresent_(&self, extendedPanIdPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExtendedPanIdPresent : extendedPanIdPresent)
    }
    unsafe fn meshLocalPrefixPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, meshLocalPrefixPresent)
    }
    unsafe fn setMeshLocalPrefixPresent_(&self, meshLocalPrefixPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMeshLocalPrefixPresent : meshLocalPrefixPresent)
    }
    unsafe fn delayPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delayPresent)
    }
    unsafe fn setDelayPresent_(&self, delayPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelayPresent : delayPresent)
    }
    unsafe fn panIdPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, panIdPresent)
    }
    unsafe fn setPanIdPresent_(&self, panIdPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPanIdPresent : panIdPresent)
    }
    unsafe fn channelPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, channelPresent)
    }
    unsafe fn setChannelPresent_(&self, channelPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChannelPresent : channelPresent)
    }
    unsafe fn pskcPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pskcPresent)
    }
    unsafe fn setPskcPresent_(&self, pskcPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPskcPresent : pskcPresent)
    }
    unsafe fn securityPolicyPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, securityPolicyPresent)
    }
    unsafe fn setSecurityPolicyPresent_(&self, securityPolicyPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSecurityPolicyPresent : securityPolicyPresent)
    }
    unsafe fn channelMaskPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, channelMaskPresent)
    }
    unsafe fn setChannelMaskPresent_(&self, channelMaskPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChannelMaskPresent : channelMaskPresent)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThreadNetworkDiagnosticsClusterRouteTableStruct(pub id);
impl std::ops::Deref for MTRThreadNetworkDiagnosticsClusterRouteTableStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThreadNetworkDiagnosticsClusterRouteTableStruct {}
impl MTRThreadNetworkDiagnosticsClusterRouteTableStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThreadNetworkDiagnosticsClusterRouteTableStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThreadNetworkDiagnosticsClusterRouteTableStruct {}
impl INSObject for MTRThreadNetworkDiagnosticsClusterRouteTableStruct {}
impl PNSObject for MTRThreadNetworkDiagnosticsClusterRouteTableStruct {}
impl std::convert::TryFrom<NSObject> for MTRThreadNetworkDiagnosticsClusterRouteTableStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThreadNetworkDiagnosticsClusterRouteTableStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThreadNetworkDiagnosticsClusterRouteTableStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRThreadNetworkDiagnosticsClusterRouteTableStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThreadNetworkDiagnosticsClusterRouteTableStruct" ,)
        }
    }
}
impl IMTRThreadNetworkDiagnosticsClusterRouteTableStruct
    for MTRThreadNetworkDiagnosticsClusterRouteTableStruct
{
}
pub trait IMTRThreadNetworkDiagnosticsClusterRouteTableStruct: Sized + std::ops::Deref {
    unsafe fn extAddress(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, extAddress)
    }
    unsafe fn setExtAddress_(&self, extAddress: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExtAddress : extAddress)
    }
    unsafe fn rloc16(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rloc16)
    }
    unsafe fn setRloc16_(&self, rloc16: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRloc16 : rloc16)
    }
    unsafe fn routerId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, routerId)
    }
    unsafe fn setRouterId_(&self, routerId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRouterId : routerId)
    }
    unsafe fn nextHop(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nextHop)
    }
    unsafe fn setNextHop_(&self, nextHop: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNextHop : nextHop)
    }
    unsafe fn pathCost(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pathCost)
    }
    unsafe fn setPathCost_(&self, pathCost: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPathCost : pathCost)
    }
    unsafe fn lqiIn(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lqiIn)
    }
    unsafe fn setLqiIn_(&self, lqiIn: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLqiIn : lqiIn)
    }
    unsafe fn lqiOut(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lqiOut)
    }
    unsafe fn setLqiOut_(&self, lqiOut: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLqiOut : lqiOut)
    }
    unsafe fn age(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, age)
    }
    unsafe fn setAge_(&self, age: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAge : age)
    }
    unsafe fn allocated(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allocated)
    }
    unsafe fn setAllocated_(&self, allocated: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAllocated : allocated)
    }
    unsafe fn linkEstablished(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, linkEstablished)
    }
    unsafe fn setLinkEstablished_(&self, linkEstablished: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLinkEstablished : linkEstablished)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThreadNetworkDiagnosticsClusterRouteTable(pub id);
impl std::ops::Deref for MTRThreadNetworkDiagnosticsClusterRouteTable {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThreadNetworkDiagnosticsClusterRouteTable {}
impl MTRThreadNetworkDiagnosticsClusterRouteTable {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThreadNetworkDiagnosticsClusterRouteTable").unwrap(), alloc) })
    }
}
impl IMTRThreadNetworkDiagnosticsClusterRouteTableStruct
    for MTRThreadNetworkDiagnosticsClusterRouteTable
{
}
impl PNSCopying for MTRThreadNetworkDiagnosticsClusterRouteTable {}
impl From<MTRThreadNetworkDiagnosticsClusterRouteTable>
    for MTRThreadNetworkDiagnosticsClusterRouteTableStruct
{
    fn from(
        child: MTRThreadNetworkDiagnosticsClusterRouteTable,
    ) -> MTRThreadNetworkDiagnosticsClusterRouteTableStruct {
        MTRThreadNetworkDiagnosticsClusterRouteTableStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRThreadNetworkDiagnosticsClusterRouteTableStruct>
    for MTRThreadNetworkDiagnosticsClusterRouteTable
{
    type Error = &'static str;
    fn try_from(
        parent: MTRThreadNetworkDiagnosticsClusterRouteTableStruct,
    ) -> Result<MTRThreadNetworkDiagnosticsClusterRouteTable, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThreadNetworkDiagnosticsClusterRouteTable").unwrap())
        };
        if is_kind_of {
            Ok(MTRThreadNetworkDiagnosticsClusterRouteTable(parent.0))
        } else {
            Err ("This MTRThreadNetworkDiagnosticsClusterRouteTableStruct cannot be downcasted to MTRThreadNetworkDiagnosticsClusterRouteTable" ,)
        }
    }
}
impl INSObject for MTRThreadNetworkDiagnosticsClusterRouteTable {}
impl PNSObject for MTRThreadNetworkDiagnosticsClusterRouteTable {}
impl IMTRThreadNetworkDiagnosticsClusterRouteTable
    for MTRThreadNetworkDiagnosticsClusterRouteTable
{
}
pub trait IMTRThreadNetworkDiagnosticsClusterRouteTable: Sized + std::ops::Deref {
    unsafe fn extAddress(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, extAddress)
    }
    unsafe fn setExtAddress_(&self, extAddress: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExtAddress : extAddress)
    }
    unsafe fn rloc16(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rloc16)
    }
    unsafe fn setRloc16_(&self, rloc16: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRloc16 : rloc16)
    }
    unsafe fn routerId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, routerId)
    }
    unsafe fn setRouterId_(&self, routerId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRouterId : routerId)
    }
    unsafe fn nextHop(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nextHop)
    }
    unsafe fn setNextHop_(&self, nextHop: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNextHop : nextHop)
    }
    unsafe fn pathCost(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pathCost)
    }
    unsafe fn setPathCost_(&self, pathCost: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPathCost : pathCost)
    }
    unsafe fn lqiIn(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lqiIn)
    }
    unsafe fn setLqiIn_(&self, lqiIn: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLqiIn : lqiIn)
    }
    unsafe fn lqiOut(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lqiOut)
    }
    unsafe fn setLqiOut_(&self, lqiOut: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLqiOut : lqiOut)
    }
    unsafe fn age(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, age)
    }
    unsafe fn setAge_(&self, age: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAge : age)
    }
    unsafe fn allocated(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allocated)
    }
    unsafe fn setAllocated_(&self, allocated: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAllocated : allocated)
    }
    unsafe fn linkEstablished(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, linkEstablished)
    }
    unsafe fn setLinkEstablished_(&self, linkEstablished: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLinkEstablished : linkEstablished)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThreadNetworkDiagnosticsClusterSecurityPolicy(pub id);
impl std::ops::Deref for MTRThreadNetworkDiagnosticsClusterSecurityPolicy {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThreadNetworkDiagnosticsClusterSecurityPolicy {}
impl MTRThreadNetworkDiagnosticsClusterSecurityPolicy {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThreadNetworkDiagnosticsClusterSecurityPolicy").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThreadNetworkDiagnosticsClusterSecurityPolicy {}
impl INSObject for MTRThreadNetworkDiagnosticsClusterSecurityPolicy {}
impl PNSObject for MTRThreadNetworkDiagnosticsClusterSecurityPolicy {}
impl std::convert::TryFrom<NSObject> for MTRThreadNetworkDiagnosticsClusterSecurityPolicy {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThreadNetworkDiagnosticsClusterSecurityPolicy, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThreadNetworkDiagnosticsClusterSecurityPolicy").unwrap())
        };
        if is_kind_of {
            Ok(MTRThreadNetworkDiagnosticsClusterSecurityPolicy(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThreadNetworkDiagnosticsClusterSecurityPolicy" ,)
        }
    }
}
impl IMTRThreadNetworkDiagnosticsClusterSecurityPolicy
    for MTRThreadNetworkDiagnosticsClusterSecurityPolicy
{
}
pub trait IMTRThreadNetworkDiagnosticsClusterSecurityPolicy: Sized + std::ops::Deref {
    unsafe fn rotationTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rotationTime)
    }
    unsafe fn setRotationTime_(&self, rotationTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRotationTime : rotationTime)
    }
    unsafe fn flags(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, flags)
    }
    unsafe fn setFlags_(&self, flags: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFlags : flags)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThreadNetworkDiagnosticsClusterConnectionStatusEvent(pub id);
impl std::ops::Deref for MTRThreadNetworkDiagnosticsClusterConnectionStatusEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThreadNetworkDiagnosticsClusterConnectionStatusEvent {}
impl MTRThreadNetworkDiagnosticsClusterConnectionStatusEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThreadNetworkDiagnosticsClusterConnectionStatusEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThreadNetworkDiagnosticsClusterConnectionStatusEvent {}
impl INSObject for MTRThreadNetworkDiagnosticsClusterConnectionStatusEvent {}
impl PNSObject for MTRThreadNetworkDiagnosticsClusterConnectionStatusEvent {}
impl std::convert::TryFrom<NSObject> for MTRThreadNetworkDiagnosticsClusterConnectionStatusEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThreadNetworkDiagnosticsClusterConnectionStatusEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThreadNetworkDiagnosticsClusterConnectionStatusEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRThreadNetworkDiagnosticsClusterConnectionStatusEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThreadNetworkDiagnosticsClusterConnectionStatusEvent" ,)
        }
    }
}
impl IMTRThreadNetworkDiagnosticsClusterConnectionStatusEvent
    for MTRThreadNetworkDiagnosticsClusterConnectionStatusEvent
{
}
pub trait IMTRThreadNetworkDiagnosticsClusterConnectionStatusEvent:
    Sized + std::ops::Deref
{
    unsafe fn connectionStatus(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, connectionStatus)
    }
    unsafe fn setConnectionStatus_(&self, connectionStatus: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setConnectionStatus : connectionStatus)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThreadNetworkDiagnosticsClusterNetworkFaultChangeEvent(pub id);
impl std::ops::Deref for MTRThreadNetworkDiagnosticsClusterNetworkFaultChangeEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThreadNetworkDiagnosticsClusterNetworkFaultChangeEvent {}
impl MTRThreadNetworkDiagnosticsClusterNetworkFaultChangeEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThreadNetworkDiagnosticsClusterNetworkFaultChangeEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThreadNetworkDiagnosticsClusterNetworkFaultChangeEvent {}
impl INSObject for MTRThreadNetworkDiagnosticsClusterNetworkFaultChangeEvent {}
impl PNSObject for MTRThreadNetworkDiagnosticsClusterNetworkFaultChangeEvent {}
impl std::convert::TryFrom<NSObject> for MTRThreadNetworkDiagnosticsClusterNetworkFaultChangeEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThreadNetworkDiagnosticsClusterNetworkFaultChangeEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThreadNetworkDiagnosticsClusterNetworkFaultChangeEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRThreadNetworkDiagnosticsClusterNetworkFaultChangeEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThreadNetworkDiagnosticsClusterNetworkFaultChangeEvent" ,)
        }
    }
}
impl IMTRThreadNetworkDiagnosticsClusterNetworkFaultChangeEvent
    for MTRThreadNetworkDiagnosticsClusterNetworkFaultChangeEvent
{
}
pub trait IMTRThreadNetworkDiagnosticsClusterNetworkFaultChangeEvent:
    Sized + std::ops::Deref
{
    unsafe fn current(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, current)
    }
    unsafe fn setCurrent_(&self, current: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrent : current)
    }
    unsafe fn previous(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previous)
    }
    unsafe fn setPrevious_(&self, previous: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPrevious : previous)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWiFiNetworkDiagnosticsClusterDisconnectionEvent(pub id);
impl std::ops::Deref for MTRWiFiNetworkDiagnosticsClusterDisconnectionEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWiFiNetworkDiagnosticsClusterDisconnectionEvent {}
impl MTRWiFiNetworkDiagnosticsClusterDisconnectionEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWiFiNetworkDiagnosticsClusterDisconnectionEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWiFiNetworkDiagnosticsClusterDisconnectionEvent {}
impl INSObject for MTRWiFiNetworkDiagnosticsClusterDisconnectionEvent {}
impl PNSObject for MTRWiFiNetworkDiagnosticsClusterDisconnectionEvent {}
impl std::convert::TryFrom<NSObject> for MTRWiFiNetworkDiagnosticsClusterDisconnectionEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWiFiNetworkDiagnosticsClusterDisconnectionEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWiFiNetworkDiagnosticsClusterDisconnectionEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRWiFiNetworkDiagnosticsClusterDisconnectionEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWiFiNetworkDiagnosticsClusterDisconnectionEvent" ,)
        }
    }
}
impl IMTRWiFiNetworkDiagnosticsClusterDisconnectionEvent
    for MTRWiFiNetworkDiagnosticsClusterDisconnectionEvent
{
}
pub trait IMTRWiFiNetworkDiagnosticsClusterDisconnectionEvent: Sized + std::ops::Deref {
    unsafe fn reasonCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reasonCode)
    }
    unsafe fn setReasonCode_(&self, reasonCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReasonCode : reasonCode)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWiFiNetworkDiagnosticsClusterAssociationFailureEvent(pub id);
impl std::ops::Deref for MTRWiFiNetworkDiagnosticsClusterAssociationFailureEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWiFiNetworkDiagnosticsClusterAssociationFailureEvent {}
impl MTRWiFiNetworkDiagnosticsClusterAssociationFailureEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWiFiNetworkDiagnosticsClusterAssociationFailureEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWiFiNetworkDiagnosticsClusterAssociationFailureEvent {}
impl INSObject for MTRWiFiNetworkDiagnosticsClusterAssociationFailureEvent {}
impl PNSObject for MTRWiFiNetworkDiagnosticsClusterAssociationFailureEvent {}
impl std::convert::TryFrom<NSObject> for MTRWiFiNetworkDiagnosticsClusterAssociationFailureEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWiFiNetworkDiagnosticsClusterAssociationFailureEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWiFiNetworkDiagnosticsClusterAssociationFailureEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRWiFiNetworkDiagnosticsClusterAssociationFailureEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWiFiNetworkDiagnosticsClusterAssociationFailureEvent" ,)
        }
    }
}
impl IMTRWiFiNetworkDiagnosticsClusterAssociationFailureEvent
    for MTRWiFiNetworkDiagnosticsClusterAssociationFailureEvent
{
}
pub trait IMTRWiFiNetworkDiagnosticsClusterAssociationFailureEvent:
    Sized + std::ops::Deref
{
    unsafe fn associationFailureCause(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, associationFailureCause)
    }
    unsafe fn setAssociationFailureCause_(&self, associationFailureCause: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAssociationFailureCause : associationFailureCause)
    }
    unsafe fn associationFailure(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, associationFailure)
    }
    unsafe fn setAssociationFailure_(&self, associationFailure: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAssociationFailure : associationFailure)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWiFiNetworkDiagnosticsClusterConnectionStatusEvent(pub id);
impl std::ops::Deref for MTRWiFiNetworkDiagnosticsClusterConnectionStatusEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWiFiNetworkDiagnosticsClusterConnectionStatusEvent {}
impl MTRWiFiNetworkDiagnosticsClusterConnectionStatusEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWiFiNetworkDiagnosticsClusterConnectionStatusEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWiFiNetworkDiagnosticsClusterConnectionStatusEvent {}
impl INSObject for MTRWiFiNetworkDiagnosticsClusterConnectionStatusEvent {}
impl PNSObject for MTRWiFiNetworkDiagnosticsClusterConnectionStatusEvent {}
impl std::convert::TryFrom<NSObject> for MTRWiFiNetworkDiagnosticsClusterConnectionStatusEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWiFiNetworkDiagnosticsClusterConnectionStatusEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWiFiNetworkDiagnosticsClusterConnectionStatusEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRWiFiNetworkDiagnosticsClusterConnectionStatusEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWiFiNetworkDiagnosticsClusterConnectionStatusEvent" ,)
        }
    }
}
impl IMTRWiFiNetworkDiagnosticsClusterConnectionStatusEvent
    for MTRWiFiNetworkDiagnosticsClusterConnectionStatusEvent
{
}
pub trait IMTRWiFiNetworkDiagnosticsClusterConnectionStatusEvent: Sized + std::ops::Deref {
    unsafe fn connectionStatus(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, connectionStatus)
    }
    unsafe fn setConnectionStatus_(&self, connectionStatus: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setConnectionStatus : connectionStatus)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimeSynchronizationClusterDSTOffsetStruct(pub id);
impl std::ops::Deref for MTRTimeSynchronizationClusterDSTOffsetStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimeSynchronizationClusterDSTOffsetStruct {}
impl MTRTimeSynchronizationClusterDSTOffsetStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterDSTOffsetStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRTimeSynchronizationClusterDSTOffsetStruct {}
impl INSObject for MTRTimeSynchronizationClusterDSTOffsetStruct {}
impl PNSObject for MTRTimeSynchronizationClusterDSTOffsetStruct {}
impl std::convert::TryFrom<NSObject> for MTRTimeSynchronizationClusterDSTOffsetStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTimeSynchronizationClusterDSTOffsetStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterDSTOffsetStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRTimeSynchronizationClusterDSTOffsetStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTimeSynchronizationClusterDSTOffsetStruct" ,)
        }
    }
}
impl IMTRTimeSynchronizationClusterDSTOffsetStruct
    for MTRTimeSynchronizationClusterDSTOffsetStruct
{
}
pub trait IMTRTimeSynchronizationClusterDSTOffsetStruct: Sized + std::ops::Deref {
    unsafe fn offset(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, offset)
    }
    unsafe fn setOffset_(&self, offset: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOffset : offset)
    }
    unsafe fn validStarting(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, validStarting)
    }
    unsafe fn setValidStarting_(&self, validStarting: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValidStarting : validStarting)
    }
    unsafe fn validUntil(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, validUntil)
    }
    unsafe fn setValidUntil_(&self, validUntil: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValidUntil : validUntil)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimeSynchronizationClusterDstOffsetType(pub id);
impl std::ops::Deref for MTRTimeSynchronizationClusterDstOffsetType {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimeSynchronizationClusterDstOffsetType {}
impl MTRTimeSynchronizationClusterDstOffsetType {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterDstOffsetType").unwrap(), alloc) })
    }
}
impl IMTRTimeSynchronizationClusterDSTOffsetStruct for MTRTimeSynchronizationClusterDstOffsetType {}
impl PNSCopying for MTRTimeSynchronizationClusterDstOffsetType {}
impl From<MTRTimeSynchronizationClusterDstOffsetType>
    for MTRTimeSynchronizationClusterDSTOffsetStruct
{
    fn from(
        child: MTRTimeSynchronizationClusterDstOffsetType,
    ) -> MTRTimeSynchronizationClusterDSTOffsetStruct {
        MTRTimeSynchronizationClusterDSTOffsetStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRTimeSynchronizationClusterDSTOffsetStruct>
    for MTRTimeSynchronizationClusterDstOffsetType
{
    type Error = &'static str;
    fn try_from(
        parent: MTRTimeSynchronizationClusterDSTOffsetStruct,
    ) -> Result<MTRTimeSynchronizationClusterDstOffsetType, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterDstOffsetType").unwrap())
        };
        if is_kind_of {
            Ok(MTRTimeSynchronizationClusterDstOffsetType(parent.0))
        } else {
            Err ("This MTRTimeSynchronizationClusterDSTOffsetStruct cannot be downcasted to MTRTimeSynchronizationClusterDstOffsetType" ,)
        }
    }
}
impl INSObject for MTRTimeSynchronizationClusterDstOffsetType {}
impl PNSObject for MTRTimeSynchronizationClusterDstOffsetType {}
impl IMTRTimeSynchronizationClusterDstOffsetType for MTRTimeSynchronizationClusterDstOffsetType {}
pub trait IMTRTimeSynchronizationClusterDstOffsetType: Sized + std::ops::Deref {
    unsafe fn offset(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, offset)
    }
    unsafe fn setOffset_(&self, offset: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOffset : offset)
    }
    unsafe fn validStarting(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, validStarting)
    }
    unsafe fn setValidStarting_(&self, validStarting: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValidStarting : validStarting)
    }
    unsafe fn validUntil(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, validUntil)
    }
    unsafe fn setValidUntil_(&self, validUntil: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValidUntil : validUntil)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct(pub id);
impl std::ops::Deref for MTRTimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct {}
impl MTRTimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct {}
impl INSObject for MTRTimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct {}
impl PNSObject for MTRTimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRTimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRTimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct" ,)
        }
    }
}
impl IMTRTimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct
    for MTRTimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct
{
}
pub trait IMTRTimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct:
    Sized + std::ops::Deref
{
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn endpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn setEndpoint_(&self, endpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoint : endpoint)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimeSynchronizationClusterTimeZoneStruct(pub id);
impl std::ops::Deref for MTRTimeSynchronizationClusterTimeZoneStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimeSynchronizationClusterTimeZoneStruct {}
impl MTRTimeSynchronizationClusterTimeZoneStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterTimeZoneStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRTimeSynchronizationClusterTimeZoneStruct {}
impl INSObject for MTRTimeSynchronizationClusterTimeZoneStruct {}
impl PNSObject for MTRTimeSynchronizationClusterTimeZoneStruct {}
impl std::convert::TryFrom<NSObject> for MTRTimeSynchronizationClusterTimeZoneStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTimeSynchronizationClusterTimeZoneStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterTimeZoneStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRTimeSynchronizationClusterTimeZoneStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRTimeSynchronizationClusterTimeZoneStruct")
        }
    }
}
impl IMTRTimeSynchronizationClusterTimeZoneStruct for MTRTimeSynchronizationClusterTimeZoneStruct {}
pub trait IMTRTimeSynchronizationClusterTimeZoneStruct: Sized + std::ops::Deref {
    unsafe fn offset(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, offset)
    }
    unsafe fn setOffset_(&self, offset: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOffset : offset)
    }
    unsafe fn validAt(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, validAt)
    }
    unsafe fn setValidAt_(&self, validAt: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValidAt : validAt)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimeSynchronizationClusterTimeZoneType(pub id);
impl std::ops::Deref for MTRTimeSynchronizationClusterTimeZoneType {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimeSynchronizationClusterTimeZoneType {}
impl MTRTimeSynchronizationClusterTimeZoneType {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterTimeZoneType").unwrap(), alloc) })
    }
}
impl IMTRTimeSynchronizationClusterTimeZoneStruct for MTRTimeSynchronizationClusterTimeZoneType {}
impl PNSCopying for MTRTimeSynchronizationClusterTimeZoneType {}
impl From<MTRTimeSynchronizationClusterTimeZoneType>
    for MTRTimeSynchronizationClusterTimeZoneStruct
{
    fn from(
        child: MTRTimeSynchronizationClusterTimeZoneType,
    ) -> MTRTimeSynchronizationClusterTimeZoneStruct {
        MTRTimeSynchronizationClusterTimeZoneStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRTimeSynchronizationClusterTimeZoneStruct>
    for MTRTimeSynchronizationClusterTimeZoneType
{
    type Error = &'static str;
    fn try_from(
        parent: MTRTimeSynchronizationClusterTimeZoneStruct,
    ) -> Result<MTRTimeSynchronizationClusterTimeZoneType, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterTimeZoneType").unwrap())
        };
        if is_kind_of {
            Ok(MTRTimeSynchronizationClusterTimeZoneType(parent.0))
        } else {
            Err ("This MTRTimeSynchronizationClusterTimeZoneStruct cannot be downcasted to MTRTimeSynchronizationClusterTimeZoneType" ,)
        }
    }
}
impl INSObject for MTRTimeSynchronizationClusterTimeZoneType {}
impl PNSObject for MTRTimeSynchronizationClusterTimeZoneType {}
impl IMTRTimeSynchronizationClusterTimeZoneType for MTRTimeSynchronizationClusterTimeZoneType {}
pub trait IMTRTimeSynchronizationClusterTimeZoneType: Sized + std::ops::Deref {
    unsafe fn offset(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, offset)
    }
    unsafe fn setOffset_(&self, offset: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOffset : offset)
    }
    unsafe fn validAt(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, validAt)
    }
    unsafe fn setValidAt_(&self, validAt: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValidAt : validAt)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimeSynchronizationClusterTrustedTimeSourceStruct(pub id);
impl std::ops::Deref for MTRTimeSynchronizationClusterTrustedTimeSourceStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimeSynchronizationClusterTrustedTimeSourceStruct {}
impl MTRTimeSynchronizationClusterTrustedTimeSourceStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterTrustedTimeSourceStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTimeSynchronizationClusterTrustedTimeSourceStruct {}
impl INSObject for MTRTimeSynchronizationClusterTrustedTimeSourceStruct {}
impl PNSObject for MTRTimeSynchronizationClusterTrustedTimeSourceStruct {}
impl std::convert::TryFrom<NSObject> for MTRTimeSynchronizationClusterTrustedTimeSourceStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTimeSynchronizationClusterTrustedTimeSourceStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterTrustedTimeSourceStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRTimeSynchronizationClusterTrustedTimeSourceStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTimeSynchronizationClusterTrustedTimeSourceStruct" ,)
        }
    }
}
impl IMTRTimeSynchronizationClusterTrustedTimeSourceStruct
    for MTRTimeSynchronizationClusterTrustedTimeSourceStruct
{
}
pub trait IMTRTimeSynchronizationClusterTrustedTimeSourceStruct: Sized + std::ops::Deref {
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn endpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn setEndpoint_(&self, endpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoint : endpoint)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimeSynchronizationClusterDSTTableEmptyEvent(pub id);
impl std::ops::Deref for MTRTimeSynchronizationClusterDSTTableEmptyEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimeSynchronizationClusterDSTTableEmptyEvent {}
impl MTRTimeSynchronizationClusterDSTTableEmptyEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterDSTTableEmptyEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTimeSynchronizationClusterDSTTableEmptyEvent {}
impl INSObject for MTRTimeSynchronizationClusterDSTTableEmptyEvent {}
impl PNSObject for MTRTimeSynchronizationClusterDSTTableEmptyEvent {}
impl std::convert::TryFrom<NSObject> for MTRTimeSynchronizationClusterDSTTableEmptyEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTimeSynchronizationClusterDSTTableEmptyEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterDSTTableEmptyEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRTimeSynchronizationClusterDSTTableEmptyEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTimeSynchronizationClusterDSTTableEmptyEvent" ,)
        }
    }
}
impl IMTRTimeSynchronizationClusterDSTTableEmptyEvent
    for MTRTimeSynchronizationClusterDSTTableEmptyEvent
{
}
pub trait IMTRTimeSynchronizationClusterDSTTableEmptyEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimeSynchronizationClusterDSTStatusEvent(pub id);
impl std::ops::Deref for MTRTimeSynchronizationClusterDSTStatusEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimeSynchronizationClusterDSTStatusEvent {}
impl MTRTimeSynchronizationClusterDSTStatusEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterDSTStatusEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRTimeSynchronizationClusterDSTStatusEvent {}
impl INSObject for MTRTimeSynchronizationClusterDSTStatusEvent {}
impl PNSObject for MTRTimeSynchronizationClusterDSTStatusEvent {}
impl std::convert::TryFrom<NSObject> for MTRTimeSynchronizationClusterDSTStatusEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTimeSynchronizationClusterDSTStatusEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterDSTStatusEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRTimeSynchronizationClusterDSTStatusEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRTimeSynchronizationClusterDSTStatusEvent")
        }
    }
}
impl IMTRTimeSynchronizationClusterDSTStatusEvent for MTRTimeSynchronizationClusterDSTStatusEvent {}
pub trait IMTRTimeSynchronizationClusterDSTStatusEvent: Sized + std::ops::Deref {
    unsafe fn dstOffsetActive(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dstOffsetActive)
    }
    unsafe fn setDstOffsetActive_(&self, dstOffsetActive: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDstOffsetActive : dstOffsetActive)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimeSynchronizationClusterTimeZoneStatusEvent(pub id);
impl std::ops::Deref for MTRTimeSynchronizationClusterTimeZoneStatusEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimeSynchronizationClusterTimeZoneStatusEvent {}
impl MTRTimeSynchronizationClusterTimeZoneStatusEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterTimeZoneStatusEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTimeSynchronizationClusterTimeZoneStatusEvent {}
impl INSObject for MTRTimeSynchronizationClusterTimeZoneStatusEvent {}
impl PNSObject for MTRTimeSynchronizationClusterTimeZoneStatusEvent {}
impl std::convert::TryFrom<NSObject> for MTRTimeSynchronizationClusterTimeZoneStatusEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTimeSynchronizationClusterTimeZoneStatusEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterTimeZoneStatusEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRTimeSynchronizationClusterTimeZoneStatusEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTimeSynchronizationClusterTimeZoneStatusEvent" ,)
        }
    }
}
impl IMTRTimeSynchronizationClusterTimeZoneStatusEvent
    for MTRTimeSynchronizationClusterTimeZoneStatusEvent
{
}
pub trait IMTRTimeSynchronizationClusterTimeZoneStatusEvent: Sized + std::ops::Deref {
    unsafe fn offset(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, offset)
    }
    unsafe fn setOffset_(&self, offset: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOffset : offset)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimeSynchronizationClusterTimeFailureEvent(pub id);
impl std::ops::Deref for MTRTimeSynchronizationClusterTimeFailureEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimeSynchronizationClusterTimeFailureEvent {}
impl MTRTimeSynchronizationClusterTimeFailureEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterTimeFailureEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRTimeSynchronizationClusterTimeFailureEvent {}
impl INSObject for MTRTimeSynchronizationClusterTimeFailureEvent {}
impl PNSObject for MTRTimeSynchronizationClusterTimeFailureEvent {}
impl std::convert::TryFrom<NSObject> for MTRTimeSynchronizationClusterTimeFailureEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTimeSynchronizationClusterTimeFailureEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterTimeFailureEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRTimeSynchronizationClusterTimeFailureEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTimeSynchronizationClusterTimeFailureEvent" ,)
        }
    }
}
impl IMTRTimeSynchronizationClusterTimeFailureEvent
    for MTRTimeSynchronizationClusterTimeFailureEvent
{
}
pub trait IMTRTimeSynchronizationClusterTimeFailureEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimeSynchronizationClusterMissingTrustedTimeSourceEvent(pub id);
impl std::ops::Deref for MTRTimeSynchronizationClusterMissingTrustedTimeSourceEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimeSynchronizationClusterMissingTrustedTimeSourceEvent {}
impl MTRTimeSynchronizationClusterMissingTrustedTimeSourceEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterMissingTrustedTimeSourceEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTimeSynchronizationClusterMissingTrustedTimeSourceEvent {}
impl INSObject for MTRTimeSynchronizationClusterMissingTrustedTimeSourceEvent {}
impl PNSObject for MTRTimeSynchronizationClusterMissingTrustedTimeSourceEvent {}
impl std::convert::TryFrom<NSObject>
    for MTRTimeSynchronizationClusterMissingTrustedTimeSourceEvent
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTimeSynchronizationClusterMissingTrustedTimeSourceEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterMissingTrustedTimeSourceEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRTimeSynchronizationClusterMissingTrustedTimeSourceEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTimeSynchronizationClusterMissingTrustedTimeSourceEvent" ,)
        }
    }
}
impl IMTRTimeSynchronizationClusterMissingTrustedTimeSourceEvent
    for MTRTimeSynchronizationClusterMissingTrustedTimeSourceEvent
{
}
pub trait IMTRTimeSynchronizationClusterMissingTrustedTimeSourceEvent:
    Sized + std::ops::Deref
{
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBridgedDeviceBasicInformationClusterProductAppearanceStruct(pub id);
impl std::ops::Deref for MTRBridgedDeviceBasicInformationClusterProductAppearanceStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBridgedDeviceBasicInformationClusterProductAppearanceStruct {}
impl MTRBridgedDeviceBasicInformationClusterProductAppearanceStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicInformationClusterProductAppearanceStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRBridgedDeviceBasicInformationClusterProductAppearanceStruct {}
impl INSObject for MTRBridgedDeviceBasicInformationClusterProductAppearanceStruct {}
impl PNSObject for MTRBridgedDeviceBasicInformationClusterProductAppearanceStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRBridgedDeviceBasicInformationClusterProductAppearanceStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRBridgedDeviceBasicInformationClusterProductAppearanceStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicInformationClusterProductAppearanceStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRBridgedDeviceBasicInformationClusterProductAppearanceStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRBridgedDeviceBasicInformationClusterProductAppearanceStruct" ,)
        }
    }
}
impl IMTRBridgedDeviceBasicInformationClusterProductAppearanceStruct
    for MTRBridgedDeviceBasicInformationClusterProductAppearanceStruct
{
}
pub trait IMTRBridgedDeviceBasicInformationClusterProductAppearanceStruct:
    Sized + std::ops::Deref
{
    unsafe fn finish(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, finish)
    }
    unsafe fn setFinish_(&self, finish: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFinish : finish)
    }
    unsafe fn primaryColor(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, primaryColor)
    }
    unsafe fn setPrimaryColor_(&self, primaryColor: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPrimaryColor : primaryColor)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBridgedDeviceBasicInformationClusterStartUpEvent(pub id);
impl std::ops::Deref for MTRBridgedDeviceBasicInformationClusterStartUpEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBridgedDeviceBasicInformationClusterStartUpEvent {}
impl MTRBridgedDeviceBasicInformationClusterStartUpEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicInformationClusterStartUpEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRBridgedDeviceBasicInformationClusterStartUpEvent {}
impl INSObject for MTRBridgedDeviceBasicInformationClusterStartUpEvent {}
impl PNSObject for MTRBridgedDeviceBasicInformationClusterStartUpEvent {}
impl std::convert::TryFrom<NSObject> for MTRBridgedDeviceBasicInformationClusterStartUpEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRBridgedDeviceBasicInformationClusterStartUpEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicInformationClusterStartUpEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRBridgedDeviceBasicInformationClusterStartUpEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRBridgedDeviceBasicInformationClusterStartUpEvent" ,)
        }
    }
}
impl IMTRBridgedDeviceBasicInformationClusterStartUpEvent
    for MTRBridgedDeviceBasicInformationClusterStartUpEvent
{
}
pub trait IMTRBridgedDeviceBasicInformationClusterStartUpEvent: Sized + std::ops::Deref {
    unsafe fn softwareVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, softwareVersion)
    }
    unsafe fn setSoftwareVersion_(&self, softwareVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSoftwareVersion : softwareVersion)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBridgedDeviceBasicClusterStartUpEvent(pub id);
impl std::ops::Deref for MTRBridgedDeviceBasicClusterStartUpEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBridgedDeviceBasicClusterStartUpEvent {}
impl MTRBridgedDeviceBasicClusterStartUpEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicClusterStartUpEvent").unwrap(), alloc) })
    }
}
impl IMTRBridgedDeviceBasicInformationClusterStartUpEvent
    for MTRBridgedDeviceBasicClusterStartUpEvent
{
}
impl PNSCopying for MTRBridgedDeviceBasicClusterStartUpEvent {}
impl From<MTRBridgedDeviceBasicClusterStartUpEvent>
    for MTRBridgedDeviceBasicInformationClusterStartUpEvent
{
    fn from(
        child: MTRBridgedDeviceBasicClusterStartUpEvent,
    ) -> MTRBridgedDeviceBasicInformationClusterStartUpEvent {
        MTRBridgedDeviceBasicInformationClusterStartUpEvent(child.0)
    }
}
impl std::convert::TryFrom<MTRBridgedDeviceBasicInformationClusterStartUpEvent>
    for MTRBridgedDeviceBasicClusterStartUpEvent
{
    type Error = &'static str;
    fn try_from(
        parent: MTRBridgedDeviceBasicInformationClusterStartUpEvent,
    ) -> Result<MTRBridgedDeviceBasicClusterStartUpEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicClusterStartUpEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRBridgedDeviceBasicClusterStartUpEvent(parent.0))
        } else {
            Err ("This MTRBridgedDeviceBasicInformationClusterStartUpEvent cannot be downcasted to MTRBridgedDeviceBasicClusterStartUpEvent" ,)
        }
    }
}
impl INSObject for MTRBridgedDeviceBasicClusterStartUpEvent {}
impl PNSObject for MTRBridgedDeviceBasicClusterStartUpEvent {}
impl IMTRBridgedDeviceBasicClusterStartUpEvent for MTRBridgedDeviceBasicClusterStartUpEvent {}
pub trait IMTRBridgedDeviceBasicClusterStartUpEvent: Sized + std::ops::Deref {
    unsafe fn softwareVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, softwareVersion)
    }
    unsafe fn setSoftwareVersion_(&self, softwareVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSoftwareVersion : softwareVersion)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBridgedDeviceBasicInformationClusterShutDownEvent(pub id);
impl std::ops::Deref for MTRBridgedDeviceBasicInformationClusterShutDownEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBridgedDeviceBasicInformationClusterShutDownEvent {}
impl MTRBridgedDeviceBasicInformationClusterShutDownEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicInformationClusterShutDownEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRBridgedDeviceBasicInformationClusterShutDownEvent {}
impl INSObject for MTRBridgedDeviceBasicInformationClusterShutDownEvent {}
impl PNSObject for MTRBridgedDeviceBasicInformationClusterShutDownEvent {}
impl std::convert::TryFrom<NSObject> for MTRBridgedDeviceBasicInformationClusterShutDownEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRBridgedDeviceBasicInformationClusterShutDownEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicInformationClusterShutDownEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRBridgedDeviceBasicInformationClusterShutDownEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRBridgedDeviceBasicInformationClusterShutDownEvent" ,)
        }
    }
}
impl IMTRBridgedDeviceBasicInformationClusterShutDownEvent
    for MTRBridgedDeviceBasicInformationClusterShutDownEvent
{
}
pub trait IMTRBridgedDeviceBasicInformationClusterShutDownEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBridgedDeviceBasicClusterShutDownEvent(pub id);
impl std::ops::Deref for MTRBridgedDeviceBasicClusterShutDownEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBridgedDeviceBasicClusterShutDownEvent {}
impl MTRBridgedDeviceBasicClusterShutDownEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicClusterShutDownEvent").unwrap(), alloc) })
    }
}
impl IMTRBridgedDeviceBasicInformationClusterShutDownEvent
    for MTRBridgedDeviceBasicClusterShutDownEvent
{
}
impl PNSCopying for MTRBridgedDeviceBasicClusterShutDownEvent {}
impl From<MTRBridgedDeviceBasicClusterShutDownEvent>
    for MTRBridgedDeviceBasicInformationClusterShutDownEvent
{
    fn from(
        child: MTRBridgedDeviceBasicClusterShutDownEvent,
    ) -> MTRBridgedDeviceBasicInformationClusterShutDownEvent {
        MTRBridgedDeviceBasicInformationClusterShutDownEvent(child.0)
    }
}
impl std::convert::TryFrom<MTRBridgedDeviceBasicInformationClusterShutDownEvent>
    for MTRBridgedDeviceBasicClusterShutDownEvent
{
    type Error = &'static str;
    fn try_from(
        parent: MTRBridgedDeviceBasicInformationClusterShutDownEvent,
    ) -> Result<MTRBridgedDeviceBasicClusterShutDownEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicClusterShutDownEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRBridgedDeviceBasicClusterShutDownEvent(parent.0))
        } else {
            Err ("This MTRBridgedDeviceBasicInformationClusterShutDownEvent cannot be downcasted to MTRBridgedDeviceBasicClusterShutDownEvent" ,)
        }
    }
}
impl INSObject for MTRBridgedDeviceBasicClusterShutDownEvent {}
impl PNSObject for MTRBridgedDeviceBasicClusterShutDownEvent {}
impl IMTRBridgedDeviceBasicClusterShutDownEvent for MTRBridgedDeviceBasicClusterShutDownEvent {}
pub trait IMTRBridgedDeviceBasicClusterShutDownEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBridgedDeviceBasicInformationClusterLeaveEvent(pub id);
impl std::ops::Deref for MTRBridgedDeviceBasicInformationClusterLeaveEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBridgedDeviceBasicInformationClusterLeaveEvent {}
impl MTRBridgedDeviceBasicInformationClusterLeaveEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicInformationClusterLeaveEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRBridgedDeviceBasicInformationClusterLeaveEvent {}
impl INSObject for MTRBridgedDeviceBasicInformationClusterLeaveEvent {}
impl PNSObject for MTRBridgedDeviceBasicInformationClusterLeaveEvent {}
impl std::convert::TryFrom<NSObject> for MTRBridgedDeviceBasicInformationClusterLeaveEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRBridgedDeviceBasicInformationClusterLeaveEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicInformationClusterLeaveEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRBridgedDeviceBasicInformationClusterLeaveEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRBridgedDeviceBasicInformationClusterLeaveEvent" ,)
        }
    }
}
impl IMTRBridgedDeviceBasicInformationClusterLeaveEvent
    for MTRBridgedDeviceBasicInformationClusterLeaveEvent
{
}
pub trait IMTRBridgedDeviceBasicInformationClusterLeaveEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBridgedDeviceBasicClusterLeaveEvent(pub id);
impl std::ops::Deref for MTRBridgedDeviceBasicClusterLeaveEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBridgedDeviceBasicClusterLeaveEvent {}
impl MTRBridgedDeviceBasicClusterLeaveEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicClusterLeaveEvent").unwrap(), alloc) })
    }
}
impl IMTRBridgedDeviceBasicInformationClusterLeaveEvent for MTRBridgedDeviceBasicClusterLeaveEvent {}
impl PNSCopying for MTRBridgedDeviceBasicClusterLeaveEvent {}
impl From<MTRBridgedDeviceBasicClusterLeaveEvent>
    for MTRBridgedDeviceBasicInformationClusterLeaveEvent
{
    fn from(
        child: MTRBridgedDeviceBasicClusterLeaveEvent,
    ) -> MTRBridgedDeviceBasicInformationClusterLeaveEvent {
        MTRBridgedDeviceBasicInformationClusterLeaveEvent(child.0)
    }
}
impl std::convert::TryFrom<MTRBridgedDeviceBasicInformationClusterLeaveEvent>
    for MTRBridgedDeviceBasicClusterLeaveEvent
{
    type Error = &'static str;
    fn try_from(
        parent: MTRBridgedDeviceBasicInformationClusterLeaveEvent,
    ) -> Result<MTRBridgedDeviceBasicClusterLeaveEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicClusterLeaveEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRBridgedDeviceBasicClusterLeaveEvent(parent.0))
        } else {
            Err ("This MTRBridgedDeviceBasicInformationClusterLeaveEvent cannot be downcasted to MTRBridgedDeviceBasicClusterLeaveEvent" ,)
        }
    }
}
impl INSObject for MTRBridgedDeviceBasicClusterLeaveEvent {}
impl PNSObject for MTRBridgedDeviceBasicClusterLeaveEvent {}
impl IMTRBridgedDeviceBasicClusterLeaveEvent for MTRBridgedDeviceBasicClusterLeaveEvent {}
pub trait IMTRBridgedDeviceBasicClusterLeaveEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBridgedDeviceBasicInformationClusterReachableChangedEvent(pub id);
impl std::ops::Deref for MTRBridgedDeviceBasicInformationClusterReachableChangedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBridgedDeviceBasicInformationClusterReachableChangedEvent {}
impl MTRBridgedDeviceBasicInformationClusterReachableChangedEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicInformationClusterReachableChangedEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRBridgedDeviceBasicInformationClusterReachableChangedEvent {}
impl INSObject for MTRBridgedDeviceBasicInformationClusterReachableChangedEvent {}
impl PNSObject for MTRBridgedDeviceBasicInformationClusterReachableChangedEvent {}
impl std::convert::TryFrom<NSObject>
    for MTRBridgedDeviceBasicInformationClusterReachableChangedEvent
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRBridgedDeviceBasicInformationClusterReachableChangedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicInformationClusterReachableChangedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRBridgedDeviceBasicInformationClusterReachableChangedEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRBridgedDeviceBasicInformationClusterReachableChangedEvent" ,)
        }
    }
}
impl IMTRBridgedDeviceBasicInformationClusterReachableChangedEvent
    for MTRBridgedDeviceBasicInformationClusterReachableChangedEvent
{
}
pub trait IMTRBridgedDeviceBasicInformationClusterReachableChangedEvent:
    Sized + std::ops::Deref
{
    unsafe fn reachableNewValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reachableNewValue)
    }
    unsafe fn setReachableNewValue_(&self, reachableNewValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReachableNewValue : reachableNewValue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBridgedDeviceBasicClusterReachableChangedEvent(pub id);
impl std::ops::Deref for MTRBridgedDeviceBasicClusterReachableChangedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBridgedDeviceBasicClusterReachableChangedEvent {}
impl MTRBridgedDeviceBasicClusterReachableChangedEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicClusterReachableChangedEvent").unwrap(), alloc)
        })
    }
}
impl IMTRBridgedDeviceBasicInformationClusterReachableChangedEvent
    for MTRBridgedDeviceBasicClusterReachableChangedEvent
{
}
impl PNSCopying for MTRBridgedDeviceBasicClusterReachableChangedEvent {}
impl From<MTRBridgedDeviceBasicClusterReachableChangedEvent>
    for MTRBridgedDeviceBasicInformationClusterReachableChangedEvent
{
    fn from(
        child: MTRBridgedDeviceBasicClusterReachableChangedEvent,
    ) -> MTRBridgedDeviceBasicInformationClusterReachableChangedEvent {
        MTRBridgedDeviceBasicInformationClusterReachableChangedEvent(child.0)
    }
}
impl std::convert::TryFrom<MTRBridgedDeviceBasicInformationClusterReachableChangedEvent>
    for MTRBridgedDeviceBasicClusterReachableChangedEvent
{
    type Error = &'static str;
    fn try_from(
        parent: MTRBridgedDeviceBasicInformationClusterReachableChangedEvent,
    ) -> Result<MTRBridgedDeviceBasicClusterReachableChangedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicClusterReachableChangedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRBridgedDeviceBasicClusterReachableChangedEvent(parent.0))
        } else {
            Err ("This MTRBridgedDeviceBasicInformationClusterReachableChangedEvent cannot be downcasted to MTRBridgedDeviceBasicClusterReachableChangedEvent" ,)
        }
    }
}
impl INSObject for MTRBridgedDeviceBasicClusterReachableChangedEvent {}
impl PNSObject for MTRBridgedDeviceBasicClusterReachableChangedEvent {}
impl IMTRBridgedDeviceBasicClusterReachableChangedEvent
    for MTRBridgedDeviceBasicClusterReachableChangedEvent
{
}
pub trait IMTRBridgedDeviceBasicClusterReachableChangedEvent: Sized + std::ops::Deref {
    unsafe fn reachableNewValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reachableNewValue)
    }
    unsafe fn setReachableNewValue_(&self, reachableNewValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReachableNewValue : reachableNewValue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBridgedDeviceBasicInformationClusterActiveChangedEvent(pub id);
impl std::ops::Deref for MTRBridgedDeviceBasicInformationClusterActiveChangedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBridgedDeviceBasicInformationClusterActiveChangedEvent {}
impl MTRBridgedDeviceBasicInformationClusterActiveChangedEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicInformationClusterActiveChangedEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRBridgedDeviceBasicInformationClusterActiveChangedEvent {}
impl INSObject for MTRBridgedDeviceBasicInformationClusterActiveChangedEvent {}
impl PNSObject for MTRBridgedDeviceBasicInformationClusterActiveChangedEvent {}
impl std::convert::TryFrom<NSObject> for MTRBridgedDeviceBasicInformationClusterActiveChangedEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRBridgedDeviceBasicInformationClusterActiveChangedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicInformationClusterActiveChangedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRBridgedDeviceBasicInformationClusterActiveChangedEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRBridgedDeviceBasicInformationClusterActiveChangedEvent" ,)
        }
    }
}
impl IMTRBridgedDeviceBasicInformationClusterActiveChangedEvent
    for MTRBridgedDeviceBasicInformationClusterActiveChangedEvent
{
}
pub trait IMTRBridgedDeviceBasicInformationClusterActiveChangedEvent:
    Sized + std::ops::Deref
{
    unsafe fn promisedActiveDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, promisedActiveDuration)
    }
    unsafe fn setPromisedActiveDuration_(&self, promisedActiveDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPromisedActiveDuration : promisedActiveDuration)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSwitchClusterSwitchLatchedEvent(pub id);
impl std::ops::Deref for MTRSwitchClusterSwitchLatchedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSwitchClusterSwitchLatchedEvent {}
impl MTRSwitchClusterSwitchLatchedEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSwitchClusterSwitchLatchedEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSwitchClusterSwitchLatchedEvent {}
impl INSObject for MTRSwitchClusterSwitchLatchedEvent {}
impl PNSObject for MTRSwitchClusterSwitchLatchedEvent {}
impl std::convert::TryFrom<NSObject> for MTRSwitchClusterSwitchLatchedEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRSwitchClusterSwitchLatchedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSwitchClusterSwitchLatchedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRSwitchClusterSwitchLatchedEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRSwitchClusterSwitchLatchedEvent")
        }
    }
}
impl IMTRSwitchClusterSwitchLatchedEvent for MTRSwitchClusterSwitchLatchedEvent {}
pub trait IMTRSwitchClusterSwitchLatchedEvent: Sized + std::ops::Deref {
    unsafe fn getNewPosition(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewPosition)
    }
    unsafe fn setNewPosition_(&self, newPosition: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewPosition : newPosition)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSwitchClusterInitialPressEvent(pub id);
impl std::ops::Deref for MTRSwitchClusterInitialPressEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSwitchClusterInitialPressEvent {}
impl MTRSwitchClusterInitialPressEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSwitchClusterInitialPressEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSwitchClusterInitialPressEvent {}
impl INSObject for MTRSwitchClusterInitialPressEvent {}
impl PNSObject for MTRSwitchClusterInitialPressEvent {}
impl std::convert::TryFrom<NSObject> for MTRSwitchClusterInitialPressEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRSwitchClusterInitialPressEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSwitchClusterInitialPressEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRSwitchClusterInitialPressEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRSwitchClusterInitialPressEvent")
        }
    }
}
impl IMTRSwitchClusterInitialPressEvent for MTRSwitchClusterInitialPressEvent {}
pub trait IMTRSwitchClusterInitialPressEvent: Sized + std::ops::Deref {
    unsafe fn getNewPosition(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewPosition)
    }
    unsafe fn setNewPosition_(&self, newPosition: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewPosition : newPosition)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSwitchClusterLongPressEvent(pub id);
impl std::ops::Deref for MTRSwitchClusterLongPressEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSwitchClusterLongPressEvent {}
impl MTRSwitchClusterLongPressEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSwitchClusterLongPressEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSwitchClusterLongPressEvent {}
impl INSObject for MTRSwitchClusterLongPressEvent {}
impl PNSObject for MTRSwitchClusterLongPressEvent {}
impl std::convert::TryFrom<NSObject> for MTRSwitchClusterLongPressEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRSwitchClusterLongPressEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSwitchClusterLongPressEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRSwitchClusterLongPressEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRSwitchClusterLongPressEvent")
        }
    }
}
impl IMTRSwitchClusterLongPressEvent for MTRSwitchClusterLongPressEvent {}
pub trait IMTRSwitchClusterLongPressEvent: Sized + std::ops::Deref {
    unsafe fn getNewPosition(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewPosition)
    }
    unsafe fn setNewPosition_(&self, newPosition: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewPosition : newPosition)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSwitchClusterShortReleaseEvent(pub id);
impl std::ops::Deref for MTRSwitchClusterShortReleaseEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSwitchClusterShortReleaseEvent {}
impl MTRSwitchClusterShortReleaseEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSwitchClusterShortReleaseEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSwitchClusterShortReleaseEvent {}
impl INSObject for MTRSwitchClusterShortReleaseEvent {}
impl PNSObject for MTRSwitchClusterShortReleaseEvent {}
impl std::convert::TryFrom<NSObject> for MTRSwitchClusterShortReleaseEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRSwitchClusterShortReleaseEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSwitchClusterShortReleaseEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRSwitchClusterShortReleaseEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRSwitchClusterShortReleaseEvent")
        }
    }
}
impl IMTRSwitchClusterShortReleaseEvent for MTRSwitchClusterShortReleaseEvent {}
pub trait IMTRSwitchClusterShortReleaseEvent: Sized + std::ops::Deref {
    unsafe fn previousPosition(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previousPosition)
    }
    unsafe fn setPreviousPosition_(&self, previousPosition: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPreviousPosition : previousPosition)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSwitchClusterLongReleaseEvent(pub id);
impl std::ops::Deref for MTRSwitchClusterLongReleaseEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSwitchClusterLongReleaseEvent {}
impl MTRSwitchClusterLongReleaseEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSwitchClusterLongReleaseEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSwitchClusterLongReleaseEvent {}
impl INSObject for MTRSwitchClusterLongReleaseEvent {}
impl PNSObject for MTRSwitchClusterLongReleaseEvent {}
impl std::convert::TryFrom<NSObject> for MTRSwitchClusterLongReleaseEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRSwitchClusterLongReleaseEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSwitchClusterLongReleaseEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRSwitchClusterLongReleaseEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRSwitchClusterLongReleaseEvent")
        }
    }
}
impl IMTRSwitchClusterLongReleaseEvent for MTRSwitchClusterLongReleaseEvent {}
pub trait IMTRSwitchClusterLongReleaseEvent: Sized + std::ops::Deref {
    unsafe fn previousPosition(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previousPosition)
    }
    unsafe fn setPreviousPosition_(&self, previousPosition: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPreviousPosition : previousPosition)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSwitchClusterMultiPressOngoingEvent(pub id);
impl std::ops::Deref for MTRSwitchClusterMultiPressOngoingEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSwitchClusterMultiPressOngoingEvent {}
impl MTRSwitchClusterMultiPressOngoingEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSwitchClusterMultiPressOngoingEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSwitchClusterMultiPressOngoingEvent {}
impl INSObject for MTRSwitchClusterMultiPressOngoingEvent {}
impl PNSObject for MTRSwitchClusterMultiPressOngoingEvent {}
impl std::convert::TryFrom<NSObject> for MTRSwitchClusterMultiPressOngoingEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRSwitchClusterMultiPressOngoingEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSwitchClusterMultiPressOngoingEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRSwitchClusterMultiPressOngoingEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRSwitchClusterMultiPressOngoingEvent")
        }
    }
}
impl IMTRSwitchClusterMultiPressOngoingEvent for MTRSwitchClusterMultiPressOngoingEvent {}
pub trait IMTRSwitchClusterMultiPressOngoingEvent: Sized + std::ops::Deref {
    unsafe fn getNewPosition(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewPosition)
    }
    unsafe fn setNewPosition_(&self, newPosition: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewPosition : newPosition)
    }
    unsafe fn currentNumberOfPressesCounted(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentNumberOfPressesCounted)
    }
    unsafe fn setCurrentNumberOfPressesCounted_(&self, currentNumberOfPressesCounted: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrentNumberOfPressesCounted : currentNumberOfPressesCounted)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSwitchClusterMultiPressCompleteEvent(pub id);
impl std::ops::Deref for MTRSwitchClusterMultiPressCompleteEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSwitchClusterMultiPressCompleteEvent {}
impl MTRSwitchClusterMultiPressCompleteEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSwitchClusterMultiPressCompleteEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSwitchClusterMultiPressCompleteEvent {}
impl INSObject for MTRSwitchClusterMultiPressCompleteEvent {}
impl PNSObject for MTRSwitchClusterMultiPressCompleteEvent {}
impl std::convert::TryFrom<NSObject> for MTRSwitchClusterMultiPressCompleteEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRSwitchClusterMultiPressCompleteEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSwitchClusterMultiPressCompleteEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRSwitchClusterMultiPressCompleteEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRSwitchClusterMultiPressCompleteEvent")
        }
    }
}
impl IMTRSwitchClusterMultiPressCompleteEvent for MTRSwitchClusterMultiPressCompleteEvent {}
pub trait IMTRSwitchClusterMultiPressCompleteEvent: Sized + std::ops::Deref {
    unsafe fn previousPosition(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previousPosition)
    }
    unsafe fn setPreviousPosition_(&self, previousPosition: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPreviousPosition : previousPosition)
    }
    unsafe fn getNewPosition(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewPosition)
    }
    unsafe fn setNewPosition_(&self, newPosition: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewPosition : newPosition)
    }
    unsafe fn totalNumberOfPressesCounted(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, totalNumberOfPressesCounted)
    }
    unsafe fn setTotalNumberOfPressesCounted_(&self, totalNumberOfPressesCounted: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTotalNumberOfPressesCounted : totalNumberOfPressesCounted)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalCredentialsClusterFabricDescriptorStruct(pub id);
impl std::ops::Deref for MTROperationalCredentialsClusterFabricDescriptorStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalCredentialsClusterFabricDescriptorStruct {}
impl MTROperationalCredentialsClusterFabricDescriptorStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterFabricDescriptorStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROperationalCredentialsClusterFabricDescriptorStruct {}
impl INSObject for MTROperationalCredentialsClusterFabricDescriptorStruct {}
impl PNSObject for MTROperationalCredentialsClusterFabricDescriptorStruct {}
impl std::convert::TryFrom<NSObject> for MTROperationalCredentialsClusterFabricDescriptorStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalCredentialsClusterFabricDescriptorStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterFabricDescriptorStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalCredentialsClusterFabricDescriptorStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTROperationalCredentialsClusterFabricDescriptorStruct" ,)
        }
    }
}
impl IMTROperationalCredentialsClusterFabricDescriptorStruct
    for MTROperationalCredentialsClusterFabricDescriptorStruct
{
}
pub trait IMTROperationalCredentialsClusterFabricDescriptorStruct: Sized + std::ops::Deref {
    unsafe fn rootPublicKey(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rootPublicKey)
    }
    unsafe fn setRootPublicKey_(&self, rootPublicKey: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRootPublicKey : rootPublicKey)
    }
    unsafe fn vendorID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vendorID)
    }
    unsafe fn setVendorID_(&self, vendorID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVendorID : vendorID)
    }
    unsafe fn vendorId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vendorId)
    }
    unsafe fn setVendorId_(&self, vendorId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVendorId : vendorId)
    }
    unsafe fn fabricID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricID)
    }
    unsafe fn setFabricID_(&self, fabricID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricID : fabricID)
    }
    unsafe fn fabricId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricId)
    }
    unsafe fn setFabricId_(&self, fabricId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricId : fabricId)
    }
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn nodeId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeId)
    }
    unsafe fn setNodeId_(&self, nodeId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeId : nodeId)
    }
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
    unsafe fn vidVerificationStatement(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vidVerificationStatement)
    }
    unsafe fn setVidVerificationStatement_(&self, vidVerificationStatement: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVidVerificationStatement : vidVerificationStatement)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalCredentialsClusterFabricDescriptor(pub id);
impl std::ops::Deref for MTROperationalCredentialsClusterFabricDescriptor {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalCredentialsClusterFabricDescriptor {}
impl MTROperationalCredentialsClusterFabricDescriptor {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterFabricDescriptor").unwrap(), alloc)
        })
    }
}
impl IMTROperationalCredentialsClusterFabricDescriptorStruct
    for MTROperationalCredentialsClusterFabricDescriptor
{
}
impl PNSCopying for MTROperationalCredentialsClusterFabricDescriptor {}
impl From<MTROperationalCredentialsClusterFabricDescriptor>
    for MTROperationalCredentialsClusterFabricDescriptorStruct
{
    fn from(
        child: MTROperationalCredentialsClusterFabricDescriptor,
    ) -> MTROperationalCredentialsClusterFabricDescriptorStruct {
        MTROperationalCredentialsClusterFabricDescriptorStruct(child.0)
    }
}
impl std::convert::TryFrom<MTROperationalCredentialsClusterFabricDescriptorStruct>
    for MTROperationalCredentialsClusterFabricDescriptor
{
    type Error = &'static str;
    fn try_from(
        parent: MTROperationalCredentialsClusterFabricDescriptorStruct,
    ) -> Result<MTROperationalCredentialsClusterFabricDescriptor, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterFabricDescriptor").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalCredentialsClusterFabricDescriptor(parent.0))
        } else {
            Err ("This MTROperationalCredentialsClusterFabricDescriptorStruct cannot be downcasted to MTROperationalCredentialsClusterFabricDescriptor" ,)
        }
    }
}
impl INSObject for MTROperationalCredentialsClusterFabricDescriptor {}
impl PNSObject for MTROperationalCredentialsClusterFabricDescriptor {}
impl IMTROperationalCredentialsClusterFabricDescriptor
    for MTROperationalCredentialsClusterFabricDescriptor
{
}
pub trait IMTROperationalCredentialsClusterFabricDescriptor: Sized + std::ops::Deref {
    unsafe fn rootPublicKey(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rootPublicKey)
    }
    unsafe fn setRootPublicKey_(&self, rootPublicKey: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRootPublicKey : rootPublicKey)
    }
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalCredentialsClusterNOCStruct(pub id);
impl std::ops::Deref for MTROperationalCredentialsClusterNOCStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalCredentialsClusterNOCStruct {}
impl MTROperationalCredentialsClusterNOCStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterNOCStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTROperationalCredentialsClusterNOCStruct {}
impl INSObject for MTROperationalCredentialsClusterNOCStruct {}
impl PNSObject for MTROperationalCredentialsClusterNOCStruct {}
impl std::convert::TryFrom<NSObject> for MTROperationalCredentialsClusterNOCStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalCredentialsClusterNOCStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterNOCStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalCredentialsClusterNOCStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTROperationalCredentialsClusterNOCStruct")
        }
    }
}
impl IMTROperationalCredentialsClusterNOCStruct for MTROperationalCredentialsClusterNOCStruct {}
pub trait IMTROperationalCredentialsClusterNOCStruct: Sized + std::ops::Deref {
    unsafe fn noc(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, noc)
    }
    unsafe fn setNoc_(&self, noc: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNoc : noc)
    }
    unsafe fn icac(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, icac)
    }
    unsafe fn setIcac_(&self, icac: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIcac : icac)
    }
    unsafe fn vvsc(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vvsc)
    }
    unsafe fn setVvsc_(&self, vvsc: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVvsc : vvsc)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupKeyManagementClusterGroupInfoMapStruct(pub id);
impl std::ops::Deref for MTRGroupKeyManagementClusterGroupInfoMapStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupKeyManagementClusterGroupInfoMapStruct {}
impl MTRGroupKeyManagementClusterGroupInfoMapStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupKeyManagementClusterGroupInfoMapStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGroupKeyManagementClusterGroupInfoMapStruct {}
impl INSObject for MTRGroupKeyManagementClusterGroupInfoMapStruct {}
impl PNSObject for MTRGroupKeyManagementClusterGroupInfoMapStruct {}
impl std::convert::TryFrom<NSObject> for MTRGroupKeyManagementClusterGroupInfoMapStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGroupKeyManagementClusterGroupInfoMapStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupKeyManagementClusterGroupInfoMapStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupKeyManagementClusterGroupInfoMapStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGroupKeyManagementClusterGroupInfoMapStruct" ,)
        }
    }
}
impl IMTRGroupKeyManagementClusterGroupInfoMapStruct
    for MTRGroupKeyManagementClusterGroupInfoMapStruct
{
}
pub trait IMTRGroupKeyManagementClusterGroupInfoMapStruct: Sized + std::ops::Deref {
    unsafe fn groupId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupId)
    }
    unsafe fn setGroupId_(&self, groupId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupId : groupId)
    }
    unsafe fn endpoints(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoints)
    }
    unsafe fn setEndpoints_(&self, endpoints: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoints : endpoints)
    }
    unsafe fn groupName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupName)
    }
    unsafe fn setGroupName_(&self, groupName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupName : groupName)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupKeyManagementClusterGroupKeyMapStruct(pub id);
impl std::ops::Deref for MTRGroupKeyManagementClusterGroupKeyMapStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupKeyManagementClusterGroupKeyMapStruct {}
impl MTRGroupKeyManagementClusterGroupKeyMapStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupKeyManagementClusterGroupKeyMapStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRGroupKeyManagementClusterGroupKeyMapStruct {}
impl INSObject for MTRGroupKeyManagementClusterGroupKeyMapStruct {}
impl PNSObject for MTRGroupKeyManagementClusterGroupKeyMapStruct {}
impl std::convert::TryFrom<NSObject> for MTRGroupKeyManagementClusterGroupKeyMapStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGroupKeyManagementClusterGroupKeyMapStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupKeyManagementClusterGroupKeyMapStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupKeyManagementClusterGroupKeyMapStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGroupKeyManagementClusterGroupKeyMapStruct" ,)
        }
    }
}
impl IMTRGroupKeyManagementClusterGroupKeyMapStruct
    for MTRGroupKeyManagementClusterGroupKeyMapStruct
{
}
pub trait IMTRGroupKeyManagementClusterGroupKeyMapStruct: Sized + std::ops::Deref {
    unsafe fn groupId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupId)
    }
    unsafe fn setGroupId_(&self, groupId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupId : groupId)
    }
    unsafe fn groupKeySetID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupKeySetID)
    }
    unsafe fn setGroupKeySetID_(&self, groupKeySetID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupKeySetID : groupKeySetID)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupKeyManagementClusterGroupKeySetStruct(pub id);
impl std::ops::Deref for MTRGroupKeyManagementClusterGroupKeySetStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupKeyManagementClusterGroupKeySetStruct {}
impl MTRGroupKeyManagementClusterGroupKeySetStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupKeyManagementClusterGroupKeySetStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRGroupKeyManagementClusterGroupKeySetStruct {}
impl INSObject for MTRGroupKeyManagementClusterGroupKeySetStruct {}
impl PNSObject for MTRGroupKeyManagementClusterGroupKeySetStruct {}
impl std::convert::TryFrom<NSObject> for MTRGroupKeyManagementClusterGroupKeySetStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGroupKeyManagementClusterGroupKeySetStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupKeyManagementClusterGroupKeySetStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupKeyManagementClusterGroupKeySetStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGroupKeyManagementClusterGroupKeySetStruct" ,)
        }
    }
}
impl IMTRGroupKeyManagementClusterGroupKeySetStruct
    for MTRGroupKeyManagementClusterGroupKeySetStruct
{
}
pub trait IMTRGroupKeyManagementClusterGroupKeySetStruct: Sized + std::ops::Deref {
    unsafe fn groupKeySetID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupKeySetID)
    }
    unsafe fn setGroupKeySetID_(&self, groupKeySetID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupKeySetID : groupKeySetID)
    }
    unsafe fn groupKeySecurityPolicy(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupKeySecurityPolicy)
    }
    unsafe fn setGroupKeySecurityPolicy_(&self, groupKeySecurityPolicy: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupKeySecurityPolicy : groupKeySecurityPolicy)
    }
    unsafe fn epochKey0(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, epochKey0)
    }
    unsafe fn setEpochKey0_(&self, epochKey0: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEpochKey0 : epochKey0)
    }
    unsafe fn epochStartTime0(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, epochStartTime0)
    }
    unsafe fn setEpochStartTime0_(&self, epochStartTime0: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEpochStartTime0 : epochStartTime0)
    }
    unsafe fn epochKey1(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, epochKey1)
    }
    unsafe fn setEpochKey1_(&self, epochKey1: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEpochKey1 : epochKey1)
    }
    unsafe fn epochStartTime1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, epochStartTime1)
    }
    unsafe fn setEpochStartTime1_(&self, epochStartTime1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEpochStartTime1 : epochStartTime1)
    }
    unsafe fn epochKey2(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, epochKey2)
    }
    unsafe fn setEpochKey2_(&self, epochKey2: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEpochKey2 : epochKey2)
    }
    unsafe fn epochStartTime2(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, epochStartTime2)
    }
    unsafe fn setEpochStartTime2_(&self, epochStartTime2: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEpochStartTime2 : epochStartTime2)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRFixedLabelClusterLabelStruct(pub id);
impl std::ops::Deref for MTRFixedLabelClusterLabelStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRFixedLabelClusterLabelStruct {}
impl MTRFixedLabelClusterLabelStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRFixedLabelClusterLabelStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRFixedLabelClusterLabelStruct {}
impl INSObject for MTRFixedLabelClusterLabelStruct {}
impl PNSObject for MTRFixedLabelClusterLabelStruct {}
impl std::convert::TryFrom<NSObject> for MTRFixedLabelClusterLabelStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRFixedLabelClusterLabelStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRFixedLabelClusterLabelStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRFixedLabelClusterLabelStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRFixedLabelClusterLabelStruct")
        }
    }
}
impl IMTRFixedLabelClusterLabelStruct for MTRFixedLabelClusterLabelStruct {}
pub trait IMTRFixedLabelClusterLabelStruct: Sized + std::ops::Deref {
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
    unsafe fn value(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUserLabelClusterLabelStruct(pub id);
impl std::ops::Deref for MTRUserLabelClusterLabelStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUserLabelClusterLabelStruct {}
impl MTRUserLabelClusterLabelStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUserLabelClusterLabelStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRUserLabelClusterLabelStruct {}
impl INSObject for MTRUserLabelClusterLabelStruct {}
impl PNSObject for MTRUserLabelClusterLabelStruct {}
impl std::convert::TryFrom<NSObject> for MTRUserLabelClusterLabelStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRUserLabelClusterLabelStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUserLabelClusterLabelStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRUserLabelClusterLabelStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRUserLabelClusterLabelStruct")
        }
    }
}
impl IMTRUserLabelClusterLabelStruct for MTRUserLabelClusterLabelStruct {}
pub trait IMTRUserLabelClusterLabelStruct: Sized + std::ops::Deref {
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
    unsafe fn value(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBooleanStateClusterStateChangeEvent(pub id);
impl std::ops::Deref for MTRBooleanStateClusterStateChangeEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBooleanStateClusterStateChangeEvent {}
impl MTRBooleanStateClusterStateChangeEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBooleanStateClusterStateChangeEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRBooleanStateClusterStateChangeEvent {}
impl INSObject for MTRBooleanStateClusterStateChangeEvent {}
impl PNSObject for MTRBooleanStateClusterStateChangeEvent {}
impl std::convert::TryFrom<NSObject> for MTRBooleanStateClusterStateChangeEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRBooleanStateClusterStateChangeEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBooleanStateClusterStateChangeEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRBooleanStateClusterStateChangeEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRBooleanStateClusterStateChangeEvent")
        }
    }
}
impl IMTRBooleanStateClusterStateChangeEvent for MTRBooleanStateClusterStateChangeEvent {}
pub trait IMTRBooleanStateClusterStateChangeEvent: Sized + std::ops::Deref {
    unsafe fn stateValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stateValue)
    }
    unsafe fn setStateValue_(&self, stateValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStateValue : stateValue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRICDManagementClusterMonitoringRegistrationStruct(pub id);
impl std::ops::Deref for MTRICDManagementClusterMonitoringRegistrationStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRICDManagementClusterMonitoringRegistrationStruct {}
impl MTRICDManagementClusterMonitoringRegistrationStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRICDManagementClusterMonitoringRegistrationStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRICDManagementClusterMonitoringRegistrationStruct {}
impl INSObject for MTRICDManagementClusterMonitoringRegistrationStruct {}
impl PNSObject for MTRICDManagementClusterMonitoringRegistrationStruct {}
impl std::convert::TryFrom<NSObject> for MTRICDManagementClusterMonitoringRegistrationStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRICDManagementClusterMonitoringRegistrationStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRICDManagementClusterMonitoringRegistrationStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRICDManagementClusterMonitoringRegistrationStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRICDManagementClusterMonitoringRegistrationStruct" ,)
        }
    }
}
impl IMTRICDManagementClusterMonitoringRegistrationStruct
    for MTRICDManagementClusterMonitoringRegistrationStruct
{
}
pub trait IMTRICDManagementClusterMonitoringRegistrationStruct: Sized + std::ops::Deref {
    unsafe fn checkInNodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, checkInNodeID)
    }
    unsafe fn setCheckInNodeID_(&self, checkInNodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCheckInNodeID : checkInNodeID)
    }
    unsafe fn monitoredSubject(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, monitoredSubject)
    }
    unsafe fn setMonitoredSubject_(&self, monitoredSubject: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMonitoredSubject : monitoredSubject)
    }
    unsafe fn clientType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, clientType)
    }
    unsafe fn setClientType_(&self, clientType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setClientType : clientType)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROvenCavityOperationalStateClusterErrorStateStruct(pub id);
impl std::ops::Deref for MTROvenCavityOperationalStateClusterErrorStateStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROvenCavityOperationalStateClusterErrorStateStruct {}
impl MTROvenCavityOperationalStateClusterErrorStateStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROvenCavityOperationalStateClusterErrorStateStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROvenCavityOperationalStateClusterErrorStateStruct {}
impl INSObject for MTROvenCavityOperationalStateClusterErrorStateStruct {}
impl PNSObject for MTROvenCavityOperationalStateClusterErrorStateStruct {}
impl std::convert::TryFrom<NSObject> for MTROvenCavityOperationalStateClusterErrorStateStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROvenCavityOperationalStateClusterErrorStateStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROvenCavityOperationalStateClusterErrorStateStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTROvenCavityOperationalStateClusterErrorStateStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTROvenCavityOperationalStateClusterErrorStateStruct" ,)
        }
    }
}
impl IMTROvenCavityOperationalStateClusterErrorStateStruct
    for MTROvenCavityOperationalStateClusterErrorStateStruct
{
}
pub trait IMTROvenCavityOperationalStateClusterErrorStateStruct: Sized + std::ops::Deref {
    unsafe fn errorStateID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, errorStateID)
    }
    unsafe fn setErrorStateID_(&self, errorStateID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setErrorStateID : errorStateID)
    }
    unsafe fn errorStateLabel(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, errorStateLabel)
    }
    unsafe fn setErrorStateLabel_(&self, errorStateLabel: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setErrorStateLabel : errorStateLabel)
    }
    unsafe fn errorStateDetails(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, errorStateDetails)
    }
    unsafe fn setErrorStateDetails_(&self, errorStateDetails: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setErrorStateDetails : errorStateDetails)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROvenCavityOperationalStateClusterOperationalStateStruct(pub id);
impl std::ops::Deref for MTROvenCavityOperationalStateClusterOperationalStateStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROvenCavityOperationalStateClusterOperationalStateStruct {}
impl MTROvenCavityOperationalStateClusterOperationalStateStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROvenCavityOperationalStateClusterOperationalStateStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROvenCavityOperationalStateClusterOperationalStateStruct {}
impl INSObject for MTROvenCavityOperationalStateClusterOperationalStateStruct {}
impl PNSObject for MTROvenCavityOperationalStateClusterOperationalStateStruct {}
impl std::convert::TryFrom<NSObject>
    for MTROvenCavityOperationalStateClusterOperationalStateStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROvenCavityOperationalStateClusterOperationalStateStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROvenCavityOperationalStateClusterOperationalStateStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTROvenCavityOperationalStateClusterOperationalStateStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTROvenCavityOperationalStateClusterOperationalStateStruct" ,)
        }
    }
}
impl IMTROvenCavityOperationalStateClusterOperationalStateStruct
    for MTROvenCavityOperationalStateClusterOperationalStateStruct
{
}
pub trait IMTROvenCavityOperationalStateClusterOperationalStateStruct:
    Sized + std::ops::Deref
{
    unsafe fn operationalStateID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationalStateID)
    }
    unsafe fn setOperationalStateID_(&self, operationalStateID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationalStateID : operationalStateID)
    }
    unsafe fn operationalStateLabel(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationalStateLabel)
    }
    unsafe fn setOperationalStateLabel_(&self, operationalStateLabel: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationalStateLabel : operationalStateLabel)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROvenCavityOperationalStateClusterOperationalErrorEvent(pub id);
impl std::ops::Deref for MTROvenCavityOperationalStateClusterOperationalErrorEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROvenCavityOperationalStateClusterOperationalErrorEvent {}
impl MTROvenCavityOperationalStateClusterOperationalErrorEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROvenCavityOperationalStateClusterOperationalErrorEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROvenCavityOperationalStateClusterOperationalErrorEvent {}
impl INSObject for MTROvenCavityOperationalStateClusterOperationalErrorEvent {}
impl PNSObject for MTROvenCavityOperationalStateClusterOperationalErrorEvent {}
impl std::convert::TryFrom<NSObject> for MTROvenCavityOperationalStateClusterOperationalErrorEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROvenCavityOperationalStateClusterOperationalErrorEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROvenCavityOperationalStateClusterOperationalErrorEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTROvenCavityOperationalStateClusterOperationalErrorEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTROvenCavityOperationalStateClusterOperationalErrorEvent" ,)
        }
    }
}
impl IMTROvenCavityOperationalStateClusterOperationalErrorEvent
    for MTROvenCavityOperationalStateClusterOperationalErrorEvent
{
}
pub trait IMTROvenCavityOperationalStateClusterOperationalErrorEvent:
    Sized + std::ops::Deref
{
    unsafe fn errorState(&self) -> MTROvenCavityOperationalStateClusterErrorStateStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, errorState)
    }
    unsafe fn setErrorState_(
        &self,
        errorState: MTROvenCavityOperationalStateClusterErrorStateStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setErrorState : errorState)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROvenCavityOperationalStateClusterOperationCompletionEvent(pub id);
impl std::ops::Deref for MTROvenCavityOperationalStateClusterOperationCompletionEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROvenCavityOperationalStateClusterOperationCompletionEvent {}
impl MTROvenCavityOperationalStateClusterOperationCompletionEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROvenCavityOperationalStateClusterOperationCompletionEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROvenCavityOperationalStateClusterOperationCompletionEvent {}
impl INSObject for MTROvenCavityOperationalStateClusterOperationCompletionEvent {}
impl PNSObject for MTROvenCavityOperationalStateClusterOperationCompletionEvent {}
impl std::convert::TryFrom<NSObject>
    for MTROvenCavityOperationalStateClusterOperationCompletionEvent
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROvenCavityOperationalStateClusterOperationCompletionEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROvenCavityOperationalStateClusterOperationCompletionEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTROvenCavityOperationalStateClusterOperationCompletionEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROvenCavityOperationalStateClusterOperationCompletionEvent" ,)
        }
    }
}
impl IMTROvenCavityOperationalStateClusterOperationCompletionEvent
    for MTROvenCavityOperationalStateClusterOperationCompletionEvent
{
}
pub trait IMTROvenCavityOperationalStateClusterOperationCompletionEvent:
    Sized + std::ops::Deref
{
    unsafe fn completionErrorCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, completionErrorCode)
    }
    unsafe fn setCompletionErrorCode_(&self, completionErrorCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCompletionErrorCode : completionErrorCode)
    }
    unsafe fn totalOperationalTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, totalOperationalTime)
    }
    unsafe fn setTotalOperationalTime_(&self, totalOperationalTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTotalOperationalTime : totalOperationalTime)
    }
    unsafe fn pausedTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pausedTime)
    }
    unsafe fn setPausedTime_(&self, pausedTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPausedTime : pausedTime)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROvenModeClusterModeTagStruct(pub id);
impl std::ops::Deref for MTROvenModeClusterModeTagStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROvenModeClusterModeTagStruct {}
impl MTROvenModeClusterModeTagStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROvenModeClusterModeTagStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTROvenModeClusterModeTagStruct {}
impl INSObject for MTROvenModeClusterModeTagStruct {}
impl PNSObject for MTROvenModeClusterModeTagStruct {}
impl std::convert::TryFrom<NSObject> for MTROvenModeClusterModeTagStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTROvenModeClusterModeTagStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROvenModeClusterModeTagStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTROvenModeClusterModeTagStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTROvenModeClusterModeTagStruct")
        }
    }
}
impl IMTROvenModeClusterModeTagStruct for MTROvenModeClusterModeTagStruct {}
pub trait IMTROvenModeClusterModeTagStruct: Sized + std::ops::Deref {
    unsafe fn mfgCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mfgCode)
    }
    unsafe fn setMfgCode_(&self, mfgCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMfgCode : mfgCode)
    }
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROvenModeClusterModeOptionStruct(pub id);
impl std::ops::Deref for MTROvenModeClusterModeOptionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROvenModeClusterModeOptionStruct {}
impl MTROvenModeClusterModeOptionStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROvenModeClusterModeOptionStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTROvenModeClusterModeOptionStruct {}
impl INSObject for MTROvenModeClusterModeOptionStruct {}
impl PNSObject for MTROvenModeClusterModeOptionStruct {}
impl std::convert::TryFrom<NSObject> for MTROvenModeClusterModeOptionStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTROvenModeClusterModeOptionStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROvenModeClusterModeOptionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTROvenModeClusterModeOptionStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTROvenModeClusterModeOptionStruct")
        }
    }
}
impl IMTROvenModeClusterModeOptionStruct for MTROvenModeClusterModeOptionStruct {}
pub trait IMTROvenModeClusterModeOptionStruct: Sized + std::ops::Deref {
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
    unsafe fn mode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mode)
    }
    unsafe fn setMode_(&self, mode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMode : mode)
    }
    unsafe fn modeTags(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, modeTags)
    }
    unsafe fn setModeTags_(&self, modeTags: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setModeTags : modeTags)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRModeSelectClusterSemanticTagStruct(pub id);
impl std::ops::Deref for MTRModeSelectClusterSemanticTagStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRModeSelectClusterSemanticTagStruct {}
impl MTRModeSelectClusterSemanticTagStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRModeSelectClusterSemanticTagStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRModeSelectClusterSemanticTagStruct {}
impl INSObject for MTRModeSelectClusterSemanticTagStruct {}
impl PNSObject for MTRModeSelectClusterSemanticTagStruct {}
impl std::convert::TryFrom<NSObject> for MTRModeSelectClusterSemanticTagStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRModeSelectClusterSemanticTagStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRModeSelectClusterSemanticTagStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRModeSelectClusterSemanticTagStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRModeSelectClusterSemanticTagStruct")
        }
    }
}
impl IMTRModeSelectClusterSemanticTagStruct for MTRModeSelectClusterSemanticTagStruct {}
pub trait IMTRModeSelectClusterSemanticTagStruct: Sized + std::ops::Deref {
    unsafe fn mfgCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mfgCode)
    }
    unsafe fn setMfgCode_(&self, mfgCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMfgCode : mfgCode)
    }
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRModeSelectClusterSemanticTag(pub id);
impl std::ops::Deref for MTRModeSelectClusterSemanticTag {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRModeSelectClusterSemanticTag {}
impl MTRModeSelectClusterSemanticTag {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRModeSelectClusterSemanticTag").unwrap(), alloc) })
    }
}
impl IMTRModeSelectClusterSemanticTagStruct for MTRModeSelectClusterSemanticTag {}
impl PNSCopying for MTRModeSelectClusterSemanticTag {}
impl From<MTRModeSelectClusterSemanticTag> for MTRModeSelectClusterSemanticTagStruct {
    fn from(child: MTRModeSelectClusterSemanticTag) -> MTRModeSelectClusterSemanticTagStruct {
        MTRModeSelectClusterSemanticTagStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRModeSelectClusterSemanticTagStruct>
    for MTRModeSelectClusterSemanticTag
{
    type Error = &'static str;
    fn try_from(
        parent: MTRModeSelectClusterSemanticTagStruct,
    ) -> Result<MTRModeSelectClusterSemanticTag, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRModeSelectClusterSemanticTag").unwrap())
        };
        if is_kind_of {
            Ok(MTRModeSelectClusterSemanticTag(parent.0))
        } else {
            Err ("This MTRModeSelectClusterSemanticTagStruct cannot be downcasted to MTRModeSelectClusterSemanticTag" ,)
        }
    }
}
impl INSObject for MTRModeSelectClusterSemanticTag {}
impl PNSObject for MTRModeSelectClusterSemanticTag {}
impl IMTRModeSelectClusterSemanticTag for MTRModeSelectClusterSemanticTag {}
pub trait IMTRModeSelectClusterSemanticTag: Sized + std::ops::Deref {
    unsafe fn mfgCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mfgCode)
    }
    unsafe fn setMfgCode_(&self, mfgCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMfgCode : mfgCode)
    }
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRModeSelectClusterModeOptionStruct(pub id);
impl std::ops::Deref for MTRModeSelectClusterModeOptionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRModeSelectClusterModeOptionStruct {}
impl MTRModeSelectClusterModeOptionStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRModeSelectClusterModeOptionStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRModeSelectClusterModeOptionStruct {}
impl INSObject for MTRModeSelectClusterModeOptionStruct {}
impl PNSObject for MTRModeSelectClusterModeOptionStruct {}
impl std::convert::TryFrom<NSObject> for MTRModeSelectClusterModeOptionStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRModeSelectClusterModeOptionStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRModeSelectClusterModeOptionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRModeSelectClusterModeOptionStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRModeSelectClusterModeOptionStruct")
        }
    }
}
impl IMTRModeSelectClusterModeOptionStruct for MTRModeSelectClusterModeOptionStruct {}
pub trait IMTRModeSelectClusterModeOptionStruct: Sized + std::ops::Deref {
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
    unsafe fn mode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mode)
    }
    unsafe fn setMode_(&self, mode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMode : mode)
    }
    unsafe fn semanticTags(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, semanticTags)
    }
    unsafe fn setSemanticTags_(&self, semanticTags: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSemanticTags : semanticTags)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRLaundryWasherModeClusterModeTagStruct(pub id);
impl std::ops::Deref for MTRLaundryWasherModeClusterModeTagStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRLaundryWasherModeClusterModeTagStruct {}
impl MTRLaundryWasherModeClusterModeTagStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRLaundryWasherModeClusterModeTagStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRLaundryWasherModeClusterModeTagStruct {}
impl INSObject for MTRLaundryWasherModeClusterModeTagStruct {}
impl PNSObject for MTRLaundryWasherModeClusterModeTagStruct {}
impl std::convert::TryFrom<NSObject> for MTRLaundryWasherModeClusterModeTagStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRLaundryWasherModeClusterModeTagStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRLaundryWasherModeClusterModeTagStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRLaundryWasherModeClusterModeTagStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRLaundryWasherModeClusterModeTagStruct")
        }
    }
}
impl IMTRLaundryWasherModeClusterModeTagStruct for MTRLaundryWasherModeClusterModeTagStruct {}
pub trait IMTRLaundryWasherModeClusterModeTagStruct: Sized + std::ops::Deref {
    unsafe fn mfgCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mfgCode)
    }
    unsafe fn setMfgCode_(&self, mfgCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMfgCode : mfgCode)
    }
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRLaundryWasherModeClusterModeOptionStruct(pub id);
impl std::ops::Deref for MTRLaundryWasherModeClusterModeOptionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRLaundryWasherModeClusterModeOptionStruct {}
impl MTRLaundryWasherModeClusterModeOptionStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRLaundryWasherModeClusterModeOptionStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRLaundryWasherModeClusterModeOptionStruct {}
impl INSObject for MTRLaundryWasherModeClusterModeOptionStruct {}
impl PNSObject for MTRLaundryWasherModeClusterModeOptionStruct {}
impl std::convert::TryFrom<NSObject> for MTRLaundryWasherModeClusterModeOptionStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRLaundryWasherModeClusterModeOptionStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRLaundryWasherModeClusterModeOptionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRLaundryWasherModeClusterModeOptionStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRLaundryWasherModeClusterModeOptionStruct")
        }
    }
}
impl IMTRLaundryWasherModeClusterModeOptionStruct for MTRLaundryWasherModeClusterModeOptionStruct {}
pub trait IMTRLaundryWasherModeClusterModeOptionStruct: Sized + std::ops::Deref {
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
    unsafe fn mode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mode)
    }
    unsafe fn setMode_(&self, mode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMode : mode)
    }
    unsafe fn modeTags(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, modeTags)
    }
    unsafe fn setModeTags_(&self, modeTags: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setModeTags : modeTags)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeTagStruct(pub id);
impl std::ops::Deref for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeTagStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message
    for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeTagStruct
{
}
impl MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeTagStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeTagStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeTagStruct {}
impl INSObject for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeTagStruct {}
impl PNSObject for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeTagStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeTagStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeTagStruct, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeTagStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeTagStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeTagStruct" ,)
        }
    }
}
impl IMTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeTagStruct
    for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeTagStruct
{
}
pub trait IMTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeTagStruct:
    Sized + std::ops::Deref
{
    unsafe fn mfgCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mfgCode)
    }
    unsafe fn setMfgCode_(&self, mfgCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMfgCode : mfgCode)
    }
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeOptionStruct(pub id);
impl std::ops::Deref for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeOptionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message
    for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeOptionStruct
{
}
impl MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeOptionStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeOptionStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeOptionStruct {}
impl INSObject for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeOptionStruct {}
impl PNSObject for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeOptionStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeOptionStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<
        MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeOptionStruct,
        Self::Error,
    > {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeOptionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeOptionStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeOptionStruct" ,)
        }
    }
}
impl IMTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeOptionStruct
    for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeOptionStruct
{
}
pub trait IMTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeOptionStruct:
    Sized + std::ops::Deref
{
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
    unsafe fn mode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mode)
    }
    unsafe fn setMode_(&self, mode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMode : mode)
    }
    unsafe fn modeTags(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, modeTags)
    }
    unsafe fn setModeTags_(&self, modeTags: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setModeTags : modeTags)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRRVCRunModeClusterModeTagStruct(pub id);
impl std::ops::Deref for MTRRVCRunModeClusterModeTagStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRRVCRunModeClusterModeTagStruct {}
impl MTRRVCRunModeClusterModeTagStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRRVCRunModeClusterModeTagStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRRVCRunModeClusterModeTagStruct {}
impl INSObject for MTRRVCRunModeClusterModeTagStruct {}
impl PNSObject for MTRRVCRunModeClusterModeTagStruct {}
impl std::convert::TryFrom<NSObject> for MTRRVCRunModeClusterModeTagStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRRVCRunModeClusterModeTagStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRRVCRunModeClusterModeTagStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRRVCRunModeClusterModeTagStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRRVCRunModeClusterModeTagStruct")
        }
    }
}
impl IMTRRVCRunModeClusterModeTagStruct for MTRRVCRunModeClusterModeTagStruct {}
pub trait IMTRRVCRunModeClusterModeTagStruct: Sized + std::ops::Deref {
    unsafe fn mfgCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mfgCode)
    }
    unsafe fn setMfgCode_(&self, mfgCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMfgCode : mfgCode)
    }
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRRVCRunModeClusterModeOptionStruct(pub id);
impl std::ops::Deref for MTRRVCRunModeClusterModeOptionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRRVCRunModeClusterModeOptionStruct {}
impl MTRRVCRunModeClusterModeOptionStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRRVCRunModeClusterModeOptionStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRRVCRunModeClusterModeOptionStruct {}
impl INSObject for MTRRVCRunModeClusterModeOptionStruct {}
impl PNSObject for MTRRVCRunModeClusterModeOptionStruct {}
impl std::convert::TryFrom<NSObject> for MTRRVCRunModeClusterModeOptionStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRRVCRunModeClusterModeOptionStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRRVCRunModeClusterModeOptionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRRVCRunModeClusterModeOptionStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRRVCRunModeClusterModeOptionStruct")
        }
    }
}
impl IMTRRVCRunModeClusterModeOptionStruct for MTRRVCRunModeClusterModeOptionStruct {}
pub trait IMTRRVCRunModeClusterModeOptionStruct: Sized + std::ops::Deref {
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
    unsafe fn mode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mode)
    }
    unsafe fn setMode_(&self, mode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMode : mode)
    }
    unsafe fn modeTags(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, modeTags)
    }
    unsafe fn setModeTags_(&self, modeTags: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setModeTags : modeTags)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRRVCCleanModeClusterModeTagStruct(pub id);
impl std::ops::Deref for MTRRVCCleanModeClusterModeTagStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRRVCCleanModeClusterModeTagStruct {}
impl MTRRVCCleanModeClusterModeTagStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRRVCCleanModeClusterModeTagStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRRVCCleanModeClusterModeTagStruct {}
impl INSObject for MTRRVCCleanModeClusterModeTagStruct {}
impl PNSObject for MTRRVCCleanModeClusterModeTagStruct {}
impl std::convert::TryFrom<NSObject> for MTRRVCCleanModeClusterModeTagStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRRVCCleanModeClusterModeTagStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRRVCCleanModeClusterModeTagStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRRVCCleanModeClusterModeTagStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRRVCCleanModeClusterModeTagStruct")
        }
    }
}
impl IMTRRVCCleanModeClusterModeTagStruct for MTRRVCCleanModeClusterModeTagStruct {}
pub trait IMTRRVCCleanModeClusterModeTagStruct: Sized + std::ops::Deref {
    unsafe fn mfgCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mfgCode)
    }
    unsafe fn setMfgCode_(&self, mfgCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMfgCode : mfgCode)
    }
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRRVCCleanModeClusterModeOptionStruct(pub id);
impl std::ops::Deref for MTRRVCCleanModeClusterModeOptionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRRVCCleanModeClusterModeOptionStruct {}
impl MTRRVCCleanModeClusterModeOptionStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRRVCCleanModeClusterModeOptionStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRRVCCleanModeClusterModeOptionStruct {}
impl INSObject for MTRRVCCleanModeClusterModeOptionStruct {}
impl PNSObject for MTRRVCCleanModeClusterModeOptionStruct {}
impl std::convert::TryFrom<NSObject> for MTRRVCCleanModeClusterModeOptionStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRRVCCleanModeClusterModeOptionStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRRVCCleanModeClusterModeOptionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRRVCCleanModeClusterModeOptionStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRRVCCleanModeClusterModeOptionStruct")
        }
    }
}
impl IMTRRVCCleanModeClusterModeOptionStruct for MTRRVCCleanModeClusterModeOptionStruct {}
pub trait IMTRRVCCleanModeClusterModeOptionStruct: Sized + std::ops::Deref {
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
    unsafe fn mode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mode)
    }
    unsafe fn setMode_(&self, mode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMode : mode)
    }
    unsafe fn modeTags(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, modeTags)
    }
    unsafe fn setModeTags_(&self, modeTags: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setModeTags : modeTags)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRRefrigeratorAlarmClusterNotifyEvent(pub id);
impl std::ops::Deref for MTRRefrigeratorAlarmClusterNotifyEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRRefrigeratorAlarmClusterNotifyEvent {}
impl MTRRefrigeratorAlarmClusterNotifyEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRRefrigeratorAlarmClusterNotifyEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRRefrigeratorAlarmClusterNotifyEvent {}
impl INSObject for MTRRefrigeratorAlarmClusterNotifyEvent {}
impl PNSObject for MTRRefrigeratorAlarmClusterNotifyEvent {}
impl std::convert::TryFrom<NSObject> for MTRRefrigeratorAlarmClusterNotifyEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRRefrigeratorAlarmClusterNotifyEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRRefrigeratorAlarmClusterNotifyEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRRefrigeratorAlarmClusterNotifyEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRRefrigeratorAlarmClusterNotifyEvent")
        }
    }
}
impl IMTRRefrigeratorAlarmClusterNotifyEvent for MTRRefrigeratorAlarmClusterNotifyEvent {}
pub trait IMTRRefrigeratorAlarmClusterNotifyEvent: Sized + std::ops::Deref {
    unsafe fn active(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, active)
    }
    unsafe fn setActive_(&self, active: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActive : active)
    }
    unsafe fn inactive(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, inactive)
    }
    unsafe fn setInactive_(&self, inactive: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInactive : inactive)
    }
    unsafe fn state(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, state)
    }
    unsafe fn setState_(&self, state: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setState : state)
    }
    unsafe fn mask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mask)
    }
    unsafe fn setMask_(&self, mask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMask : mask)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDishwasherModeClusterModeTagStruct(pub id);
impl std::ops::Deref for MTRDishwasherModeClusterModeTagStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDishwasherModeClusterModeTagStruct {}
impl MTRDishwasherModeClusterModeTagStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDishwasherModeClusterModeTagStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDishwasherModeClusterModeTagStruct {}
impl INSObject for MTRDishwasherModeClusterModeTagStruct {}
impl PNSObject for MTRDishwasherModeClusterModeTagStruct {}
impl std::convert::TryFrom<NSObject> for MTRDishwasherModeClusterModeTagStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDishwasherModeClusterModeTagStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDishwasherModeClusterModeTagStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRDishwasherModeClusterModeTagStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDishwasherModeClusterModeTagStruct")
        }
    }
}
impl IMTRDishwasherModeClusterModeTagStruct for MTRDishwasherModeClusterModeTagStruct {}
pub trait IMTRDishwasherModeClusterModeTagStruct: Sized + std::ops::Deref {
    unsafe fn mfgCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mfgCode)
    }
    unsafe fn setMfgCode_(&self, mfgCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMfgCode : mfgCode)
    }
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDishwasherModeClusterModeOptionStruct(pub id);
impl std::ops::Deref for MTRDishwasherModeClusterModeOptionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDishwasherModeClusterModeOptionStruct {}
impl MTRDishwasherModeClusterModeOptionStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDishwasherModeClusterModeOptionStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDishwasherModeClusterModeOptionStruct {}
impl INSObject for MTRDishwasherModeClusterModeOptionStruct {}
impl PNSObject for MTRDishwasherModeClusterModeOptionStruct {}
impl std::convert::TryFrom<NSObject> for MTRDishwasherModeClusterModeOptionStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDishwasherModeClusterModeOptionStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDishwasherModeClusterModeOptionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRDishwasherModeClusterModeOptionStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDishwasherModeClusterModeOptionStruct")
        }
    }
}
impl IMTRDishwasherModeClusterModeOptionStruct for MTRDishwasherModeClusterModeOptionStruct {}
pub trait IMTRDishwasherModeClusterModeOptionStruct: Sized + std::ops::Deref {
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
    unsafe fn mode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mode)
    }
    unsafe fn setMode_(&self, mode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMode : mode)
    }
    unsafe fn modeTags(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, modeTags)
    }
    unsafe fn setModeTags_(&self, modeTags: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setModeTags : modeTags)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSmokeCOAlarmClusterSmokeAlarmEvent(pub id);
impl std::ops::Deref for MTRSmokeCOAlarmClusterSmokeAlarmEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSmokeCOAlarmClusterSmokeAlarmEvent {}
impl MTRSmokeCOAlarmClusterSmokeAlarmEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterSmokeAlarmEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSmokeCOAlarmClusterSmokeAlarmEvent {}
impl INSObject for MTRSmokeCOAlarmClusterSmokeAlarmEvent {}
impl PNSObject for MTRSmokeCOAlarmClusterSmokeAlarmEvent {}
impl std::convert::TryFrom<NSObject> for MTRSmokeCOAlarmClusterSmokeAlarmEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRSmokeCOAlarmClusterSmokeAlarmEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterSmokeAlarmEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRSmokeCOAlarmClusterSmokeAlarmEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRSmokeCOAlarmClusterSmokeAlarmEvent")
        }
    }
}
impl IMTRSmokeCOAlarmClusterSmokeAlarmEvent for MTRSmokeCOAlarmClusterSmokeAlarmEvent {}
pub trait IMTRSmokeCOAlarmClusterSmokeAlarmEvent: Sized + std::ops::Deref {
    unsafe fn alarmSeverityLevel(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, alarmSeverityLevel)
    }
    unsafe fn setAlarmSeverityLevel_(&self, alarmSeverityLevel: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAlarmSeverityLevel : alarmSeverityLevel)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSmokeCOAlarmClusterCOAlarmEvent(pub id);
impl std::ops::Deref for MTRSmokeCOAlarmClusterCOAlarmEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSmokeCOAlarmClusterCOAlarmEvent {}
impl MTRSmokeCOAlarmClusterCOAlarmEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterCOAlarmEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSmokeCOAlarmClusterCOAlarmEvent {}
impl INSObject for MTRSmokeCOAlarmClusterCOAlarmEvent {}
impl PNSObject for MTRSmokeCOAlarmClusterCOAlarmEvent {}
impl std::convert::TryFrom<NSObject> for MTRSmokeCOAlarmClusterCOAlarmEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRSmokeCOAlarmClusterCOAlarmEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterCOAlarmEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRSmokeCOAlarmClusterCOAlarmEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRSmokeCOAlarmClusterCOAlarmEvent")
        }
    }
}
impl IMTRSmokeCOAlarmClusterCOAlarmEvent for MTRSmokeCOAlarmClusterCOAlarmEvent {}
pub trait IMTRSmokeCOAlarmClusterCOAlarmEvent: Sized + std::ops::Deref {
    unsafe fn alarmSeverityLevel(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, alarmSeverityLevel)
    }
    unsafe fn setAlarmSeverityLevel_(&self, alarmSeverityLevel: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAlarmSeverityLevel : alarmSeverityLevel)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSmokeCOAlarmClusterLowBatteryEvent(pub id);
impl std::ops::Deref for MTRSmokeCOAlarmClusterLowBatteryEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSmokeCOAlarmClusterLowBatteryEvent {}
impl MTRSmokeCOAlarmClusterLowBatteryEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterLowBatteryEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSmokeCOAlarmClusterLowBatteryEvent {}
impl INSObject for MTRSmokeCOAlarmClusterLowBatteryEvent {}
impl PNSObject for MTRSmokeCOAlarmClusterLowBatteryEvent {}
impl std::convert::TryFrom<NSObject> for MTRSmokeCOAlarmClusterLowBatteryEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRSmokeCOAlarmClusterLowBatteryEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterLowBatteryEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRSmokeCOAlarmClusterLowBatteryEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRSmokeCOAlarmClusterLowBatteryEvent")
        }
    }
}
impl IMTRSmokeCOAlarmClusterLowBatteryEvent for MTRSmokeCOAlarmClusterLowBatteryEvent {}
pub trait IMTRSmokeCOAlarmClusterLowBatteryEvent: Sized + std::ops::Deref {
    unsafe fn alarmSeverityLevel(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, alarmSeverityLevel)
    }
    unsafe fn setAlarmSeverityLevel_(&self, alarmSeverityLevel: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAlarmSeverityLevel : alarmSeverityLevel)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSmokeCOAlarmClusterHardwareFaultEvent(pub id);
impl std::ops::Deref for MTRSmokeCOAlarmClusterHardwareFaultEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSmokeCOAlarmClusterHardwareFaultEvent {}
impl MTRSmokeCOAlarmClusterHardwareFaultEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterHardwareFaultEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSmokeCOAlarmClusterHardwareFaultEvent {}
impl INSObject for MTRSmokeCOAlarmClusterHardwareFaultEvent {}
impl PNSObject for MTRSmokeCOAlarmClusterHardwareFaultEvent {}
impl std::convert::TryFrom<NSObject> for MTRSmokeCOAlarmClusterHardwareFaultEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRSmokeCOAlarmClusterHardwareFaultEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterHardwareFaultEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRSmokeCOAlarmClusterHardwareFaultEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRSmokeCOAlarmClusterHardwareFaultEvent")
        }
    }
}
impl IMTRSmokeCOAlarmClusterHardwareFaultEvent for MTRSmokeCOAlarmClusterHardwareFaultEvent {}
pub trait IMTRSmokeCOAlarmClusterHardwareFaultEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSmokeCOAlarmClusterEndOfServiceEvent(pub id);
impl std::ops::Deref for MTRSmokeCOAlarmClusterEndOfServiceEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSmokeCOAlarmClusterEndOfServiceEvent {}
impl MTRSmokeCOAlarmClusterEndOfServiceEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterEndOfServiceEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSmokeCOAlarmClusterEndOfServiceEvent {}
impl INSObject for MTRSmokeCOAlarmClusterEndOfServiceEvent {}
impl PNSObject for MTRSmokeCOAlarmClusterEndOfServiceEvent {}
impl std::convert::TryFrom<NSObject> for MTRSmokeCOAlarmClusterEndOfServiceEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRSmokeCOAlarmClusterEndOfServiceEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterEndOfServiceEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRSmokeCOAlarmClusterEndOfServiceEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRSmokeCOAlarmClusterEndOfServiceEvent")
        }
    }
}
impl IMTRSmokeCOAlarmClusterEndOfServiceEvent for MTRSmokeCOAlarmClusterEndOfServiceEvent {}
pub trait IMTRSmokeCOAlarmClusterEndOfServiceEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSmokeCOAlarmClusterSelfTestCompleteEvent(pub id);
impl std::ops::Deref for MTRSmokeCOAlarmClusterSelfTestCompleteEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSmokeCOAlarmClusterSelfTestCompleteEvent {}
impl MTRSmokeCOAlarmClusterSelfTestCompleteEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterSelfTestCompleteEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSmokeCOAlarmClusterSelfTestCompleteEvent {}
impl INSObject for MTRSmokeCOAlarmClusterSelfTestCompleteEvent {}
impl PNSObject for MTRSmokeCOAlarmClusterSelfTestCompleteEvent {}
impl std::convert::TryFrom<NSObject> for MTRSmokeCOAlarmClusterSelfTestCompleteEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRSmokeCOAlarmClusterSelfTestCompleteEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterSelfTestCompleteEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRSmokeCOAlarmClusterSelfTestCompleteEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRSmokeCOAlarmClusterSelfTestCompleteEvent")
        }
    }
}
impl IMTRSmokeCOAlarmClusterSelfTestCompleteEvent for MTRSmokeCOAlarmClusterSelfTestCompleteEvent {}
pub trait IMTRSmokeCOAlarmClusterSelfTestCompleteEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSmokeCOAlarmClusterAlarmMutedEvent(pub id);
impl std::ops::Deref for MTRSmokeCOAlarmClusterAlarmMutedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSmokeCOAlarmClusterAlarmMutedEvent {}
impl MTRSmokeCOAlarmClusterAlarmMutedEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterAlarmMutedEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSmokeCOAlarmClusterAlarmMutedEvent {}
impl INSObject for MTRSmokeCOAlarmClusterAlarmMutedEvent {}
impl PNSObject for MTRSmokeCOAlarmClusterAlarmMutedEvent {}
impl std::convert::TryFrom<NSObject> for MTRSmokeCOAlarmClusterAlarmMutedEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRSmokeCOAlarmClusterAlarmMutedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterAlarmMutedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRSmokeCOAlarmClusterAlarmMutedEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRSmokeCOAlarmClusterAlarmMutedEvent")
        }
    }
}
impl IMTRSmokeCOAlarmClusterAlarmMutedEvent for MTRSmokeCOAlarmClusterAlarmMutedEvent {}
pub trait IMTRSmokeCOAlarmClusterAlarmMutedEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSmokeCOAlarmClusterMuteEndedEvent(pub id);
impl std::ops::Deref for MTRSmokeCOAlarmClusterMuteEndedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSmokeCOAlarmClusterMuteEndedEvent {}
impl MTRSmokeCOAlarmClusterMuteEndedEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterMuteEndedEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSmokeCOAlarmClusterMuteEndedEvent {}
impl INSObject for MTRSmokeCOAlarmClusterMuteEndedEvent {}
impl PNSObject for MTRSmokeCOAlarmClusterMuteEndedEvent {}
impl std::convert::TryFrom<NSObject> for MTRSmokeCOAlarmClusterMuteEndedEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRSmokeCOAlarmClusterMuteEndedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterMuteEndedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRSmokeCOAlarmClusterMuteEndedEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRSmokeCOAlarmClusterMuteEndedEvent")
        }
    }
}
impl IMTRSmokeCOAlarmClusterMuteEndedEvent for MTRSmokeCOAlarmClusterMuteEndedEvent {}
pub trait IMTRSmokeCOAlarmClusterMuteEndedEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSmokeCOAlarmClusterInterconnectSmokeAlarmEvent(pub id);
impl std::ops::Deref for MTRSmokeCOAlarmClusterInterconnectSmokeAlarmEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSmokeCOAlarmClusterInterconnectSmokeAlarmEvent {}
impl MTRSmokeCOAlarmClusterInterconnectSmokeAlarmEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterInterconnectSmokeAlarmEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRSmokeCOAlarmClusterInterconnectSmokeAlarmEvent {}
impl INSObject for MTRSmokeCOAlarmClusterInterconnectSmokeAlarmEvent {}
impl PNSObject for MTRSmokeCOAlarmClusterInterconnectSmokeAlarmEvent {}
impl std::convert::TryFrom<NSObject> for MTRSmokeCOAlarmClusterInterconnectSmokeAlarmEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRSmokeCOAlarmClusterInterconnectSmokeAlarmEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterInterconnectSmokeAlarmEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRSmokeCOAlarmClusterInterconnectSmokeAlarmEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRSmokeCOAlarmClusterInterconnectSmokeAlarmEvent" ,)
        }
    }
}
impl IMTRSmokeCOAlarmClusterInterconnectSmokeAlarmEvent
    for MTRSmokeCOAlarmClusterInterconnectSmokeAlarmEvent
{
}
pub trait IMTRSmokeCOAlarmClusterInterconnectSmokeAlarmEvent: Sized + std::ops::Deref {
    unsafe fn alarmSeverityLevel(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, alarmSeverityLevel)
    }
    unsafe fn setAlarmSeverityLevel_(&self, alarmSeverityLevel: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAlarmSeverityLevel : alarmSeverityLevel)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSmokeCOAlarmClusterInterconnectCOAlarmEvent(pub id);
impl std::ops::Deref for MTRSmokeCOAlarmClusterInterconnectCOAlarmEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSmokeCOAlarmClusterInterconnectCOAlarmEvent {}
impl MTRSmokeCOAlarmClusterInterconnectCOAlarmEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterInterconnectCOAlarmEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRSmokeCOAlarmClusterInterconnectCOAlarmEvent {}
impl INSObject for MTRSmokeCOAlarmClusterInterconnectCOAlarmEvent {}
impl PNSObject for MTRSmokeCOAlarmClusterInterconnectCOAlarmEvent {}
impl std::convert::TryFrom<NSObject> for MTRSmokeCOAlarmClusterInterconnectCOAlarmEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRSmokeCOAlarmClusterInterconnectCOAlarmEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterInterconnectCOAlarmEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRSmokeCOAlarmClusterInterconnectCOAlarmEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRSmokeCOAlarmClusterInterconnectCOAlarmEvent" ,)
        }
    }
}
impl IMTRSmokeCOAlarmClusterInterconnectCOAlarmEvent
    for MTRSmokeCOAlarmClusterInterconnectCOAlarmEvent
{
}
pub trait IMTRSmokeCOAlarmClusterInterconnectCOAlarmEvent: Sized + std::ops::Deref {
    unsafe fn alarmSeverityLevel(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, alarmSeverityLevel)
    }
    unsafe fn setAlarmSeverityLevel_(&self, alarmSeverityLevel: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAlarmSeverityLevel : alarmSeverityLevel)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSmokeCOAlarmClusterAllClearEvent(pub id);
impl std::ops::Deref for MTRSmokeCOAlarmClusterAllClearEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSmokeCOAlarmClusterAllClearEvent {}
impl MTRSmokeCOAlarmClusterAllClearEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterAllClearEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSmokeCOAlarmClusterAllClearEvent {}
impl INSObject for MTRSmokeCOAlarmClusterAllClearEvent {}
impl PNSObject for MTRSmokeCOAlarmClusterAllClearEvent {}
impl std::convert::TryFrom<NSObject> for MTRSmokeCOAlarmClusterAllClearEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRSmokeCOAlarmClusterAllClearEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterAllClearEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRSmokeCOAlarmClusterAllClearEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRSmokeCOAlarmClusterAllClearEvent")
        }
    }
}
impl IMTRSmokeCOAlarmClusterAllClearEvent for MTRSmokeCOAlarmClusterAllClearEvent {}
pub trait IMTRSmokeCOAlarmClusterAllClearEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDishwasherAlarmClusterNotifyEvent(pub id);
impl std::ops::Deref for MTRDishwasherAlarmClusterNotifyEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDishwasherAlarmClusterNotifyEvent {}
impl MTRDishwasherAlarmClusterNotifyEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDishwasherAlarmClusterNotifyEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDishwasherAlarmClusterNotifyEvent {}
impl INSObject for MTRDishwasherAlarmClusterNotifyEvent {}
impl PNSObject for MTRDishwasherAlarmClusterNotifyEvent {}
impl std::convert::TryFrom<NSObject> for MTRDishwasherAlarmClusterNotifyEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDishwasherAlarmClusterNotifyEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDishwasherAlarmClusterNotifyEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRDishwasherAlarmClusterNotifyEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDishwasherAlarmClusterNotifyEvent")
        }
    }
}
impl IMTRDishwasherAlarmClusterNotifyEvent for MTRDishwasherAlarmClusterNotifyEvent {}
pub trait IMTRDishwasherAlarmClusterNotifyEvent: Sized + std::ops::Deref {
    unsafe fn active(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, active)
    }
    unsafe fn setActive_(&self, active: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActive : active)
    }
    unsafe fn inactive(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, inactive)
    }
    unsafe fn setInactive_(&self, inactive: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInactive : inactive)
    }
    unsafe fn state(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, state)
    }
    unsafe fn setState_(&self, state: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setState : state)
    }
    unsafe fn mask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mask)
    }
    unsafe fn setMask_(&self, mask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMask : mask)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMicrowaveOvenModeClusterModeTagStruct(pub id);
impl std::ops::Deref for MTRMicrowaveOvenModeClusterModeTagStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMicrowaveOvenModeClusterModeTagStruct {}
impl MTRMicrowaveOvenModeClusterModeTagStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMicrowaveOvenModeClusterModeTagStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMicrowaveOvenModeClusterModeTagStruct {}
impl INSObject for MTRMicrowaveOvenModeClusterModeTagStruct {}
impl PNSObject for MTRMicrowaveOvenModeClusterModeTagStruct {}
impl std::convert::TryFrom<NSObject> for MTRMicrowaveOvenModeClusterModeTagStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMicrowaveOvenModeClusterModeTagStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMicrowaveOvenModeClusterModeTagStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRMicrowaveOvenModeClusterModeTagStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMicrowaveOvenModeClusterModeTagStruct")
        }
    }
}
impl IMTRMicrowaveOvenModeClusterModeTagStruct for MTRMicrowaveOvenModeClusterModeTagStruct {}
pub trait IMTRMicrowaveOvenModeClusterModeTagStruct: Sized + std::ops::Deref {
    unsafe fn mfgCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mfgCode)
    }
    unsafe fn setMfgCode_(&self, mfgCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMfgCode : mfgCode)
    }
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMicrowaveOvenModeClusterModeOptionStruct(pub id);
impl std::ops::Deref for MTRMicrowaveOvenModeClusterModeOptionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMicrowaveOvenModeClusterModeOptionStruct {}
impl MTRMicrowaveOvenModeClusterModeOptionStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMicrowaveOvenModeClusterModeOptionStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMicrowaveOvenModeClusterModeOptionStruct {}
impl INSObject for MTRMicrowaveOvenModeClusterModeOptionStruct {}
impl PNSObject for MTRMicrowaveOvenModeClusterModeOptionStruct {}
impl std::convert::TryFrom<NSObject> for MTRMicrowaveOvenModeClusterModeOptionStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRMicrowaveOvenModeClusterModeOptionStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMicrowaveOvenModeClusterModeOptionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRMicrowaveOvenModeClusterModeOptionStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMicrowaveOvenModeClusterModeOptionStruct")
        }
    }
}
impl IMTRMicrowaveOvenModeClusterModeOptionStruct for MTRMicrowaveOvenModeClusterModeOptionStruct {}
pub trait IMTRMicrowaveOvenModeClusterModeOptionStruct: Sized + std::ops::Deref {
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
    unsafe fn mode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mode)
    }
    unsafe fn setMode_(&self, mode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMode : mode)
    }
    unsafe fn modeTags(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, modeTags)
    }
    unsafe fn setModeTags_(&self, modeTags: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setModeTags : modeTags)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalStateClusterErrorStateStruct(pub id);
impl std::ops::Deref for MTROperationalStateClusterErrorStateStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalStateClusterErrorStateStruct {}
impl MTROperationalStateClusterErrorStateStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalStateClusterErrorStateStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTROperationalStateClusterErrorStateStruct {}
impl INSObject for MTROperationalStateClusterErrorStateStruct {}
impl PNSObject for MTROperationalStateClusterErrorStateStruct {}
impl std::convert::TryFrom<NSObject> for MTROperationalStateClusterErrorStateStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalStateClusterErrorStateStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalStateClusterErrorStateStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalStateClusterErrorStateStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTROperationalStateClusterErrorStateStruct")
        }
    }
}
impl IMTROperationalStateClusterErrorStateStruct for MTROperationalStateClusterErrorStateStruct {}
pub trait IMTROperationalStateClusterErrorStateStruct: Sized + std::ops::Deref {
    unsafe fn errorStateID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, errorStateID)
    }
    unsafe fn setErrorStateID_(&self, errorStateID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setErrorStateID : errorStateID)
    }
    unsafe fn errorStateLabel(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, errorStateLabel)
    }
    unsafe fn setErrorStateLabel_(&self, errorStateLabel: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setErrorStateLabel : errorStateLabel)
    }
    unsafe fn errorStateDetails(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, errorStateDetails)
    }
    unsafe fn setErrorStateDetails_(&self, errorStateDetails: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setErrorStateDetails : errorStateDetails)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalStateClusterOperationalStateStruct(pub id);
impl std::ops::Deref for MTROperationalStateClusterOperationalStateStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalStateClusterOperationalStateStruct {}
impl MTROperationalStateClusterOperationalStateStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalStateClusterOperationalStateStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROperationalStateClusterOperationalStateStruct {}
impl INSObject for MTROperationalStateClusterOperationalStateStruct {}
impl PNSObject for MTROperationalStateClusterOperationalStateStruct {}
impl std::convert::TryFrom<NSObject> for MTROperationalStateClusterOperationalStateStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalStateClusterOperationalStateStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalStateClusterOperationalStateStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalStateClusterOperationalStateStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROperationalStateClusterOperationalStateStruct" ,)
        }
    }
}
impl IMTROperationalStateClusterOperationalStateStruct
    for MTROperationalStateClusterOperationalStateStruct
{
}
pub trait IMTROperationalStateClusterOperationalStateStruct: Sized + std::ops::Deref {
    unsafe fn operationalStateID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationalStateID)
    }
    unsafe fn setOperationalStateID_(&self, operationalStateID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationalStateID : operationalStateID)
    }
    unsafe fn operationalStateLabel(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationalStateLabel)
    }
    unsafe fn setOperationalStateLabel_(&self, operationalStateLabel: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationalStateLabel : operationalStateLabel)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalStateClusterOperationalErrorEvent(pub id);
impl std::ops::Deref for MTROperationalStateClusterOperationalErrorEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalStateClusterOperationalErrorEvent {}
impl MTROperationalStateClusterOperationalErrorEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalStateClusterOperationalErrorEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROperationalStateClusterOperationalErrorEvent {}
impl INSObject for MTROperationalStateClusterOperationalErrorEvent {}
impl PNSObject for MTROperationalStateClusterOperationalErrorEvent {}
impl std::convert::TryFrom<NSObject> for MTROperationalStateClusterOperationalErrorEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalStateClusterOperationalErrorEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalStateClusterOperationalErrorEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalStateClusterOperationalErrorEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROperationalStateClusterOperationalErrorEvent" ,)
        }
    }
}
impl IMTROperationalStateClusterOperationalErrorEvent
    for MTROperationalStateClusterOperationalErrorEvent
{
}
pub trait IMTROperationalStateClusterOperationalErrorEvent: Sized + std::ops::Deref {
    unsafe fn errorState(&self) -> MTROperationalStateClusterErrorStateStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, errorState)
    }
    unsafe fn setErrorState_(&self, errorState: MTROperationalStateClusterErrorStateStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setErrorState : errorState)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalStateClusterOperationCompletionEvent(pub id);
impl std::ops::Deref for MTROperationalStateClusterOperationCompletionEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalStateClusterOperationCompletionEvent {}
impl MTROperationalStateClusterOperationCompletionEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalStateClusterOperationCompletionEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROperationalStateClusterOperationCompletionEvent {}
impl INSObject for MTROperationalStateClusterOperationCompletionEvent {}
impl PNSObject for MTROperationalStateClusterOperationCompletionEvent {}
impl std::convert::TryFrom<NSObject> for MTROperationalStateClusterOperationCompletionEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalStateClusterOperationCompletionEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalStateClusterOperationCompletionEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalStateClusterOperationCompletionEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROperationalStateClusterOperationCompletionEvent" ,)
        }
    }
}
impl IMTROperationalStateClusterOperationCompletionEvent
    for MTROperationalStateClusterOperationCompletionEvent
{
}
pub trait IMTROperationalStateClusterOperationCompletionEvent: Sized + std::ops::Deref {
    unsafe fn completionErrorCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, completionErrorCode)
    }
    unsafe fn setCompletionErrorCode_(&self, completionErrorCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCompletionErrorCode : completionErrorCode)
    }
    unsafe fn totalOperationalTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, totalOperationalTime)
    }
    unsafe fn setTotalOperationalTime_(&self, totalOperationalTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTotalOperationalTime : totalOperationalTime)
    }
    unsafe fn pausedTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pausedTime)
    }
    unsafe fn setPausedTime_(&self, pausedTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPausedTime : pausedTime)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRRVCOperationalStateClusterErrorStateStruct(pub id);
impl std::ops::Deref for MTRRVCOperationalStateClusterErrorStateStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRRVCOperationalStateClusterErrorStateStruct {}
impl MTRRVCOperationalStateClusterErrorStateStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRRVCOperationalStateClusterErrorStateStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRRVCOperationalStateClusterErrorStateStruct {}
impl INSObject for MTRRVCOperationalStateClusterErrorStateStruct {}
impl PNSObject for MTRRVCOperationalStateClusterErrorStateStruct {}
impl std::convert::TryFrom<NSObject> for MTRRVCOperationalStateClusterErrorStateStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRRVCOperationalStateClusterErrorStateStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRRVCOperationalStateClusterErrorStateStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRRVCOperationalStateClusterErrorStateStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRRVCOperationalStateClusterErrorStateStruct" ,)
        }
    }
}
impl IMTRRVCOperationalStateClusterErrorStateStruct
    for MTRRVCOperationalStateClusterErrorStateStruct
{
}
pub trait IMTRRVCOperationalStateClusterErrorStateStruct: Sized + std::ops::Deref {
    unsafe fn errorStateID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, errorStateID)
    }
    unsafe fn setErrorStateID_(&self, errorStateID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setErrorStateID : errorStateID)
    }
    unsafe fn errorStateLabel(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, errorStateLabel)
    }
    unsafe fn setErrorStateLabel_(&self, errorStateLabel: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setErrorStateLabel : errorStateLabel)
    }
    unsafe fn errorStateDetails(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, errorStateDetails)
    }
    unsafe fn setErrorStateDetails_(&self, errorStateDetails: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setErrorStateDetails : errorStateDetails)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRRVCOperationalStateClusterOperationalStateStruct(pub id);
impl std::ops::Deref for MTRRVCOperationalStateClusterOperationalStateStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRRVCOperationalStateClusterOperationalStateStruct {}
impl MTRRVCOperationalStateClusterOperationalStateStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRRVCOperationalStateClusterOperationalStateStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRRVCOperationalStateClusterOperationalStateStruct {}
impl INSObject for MTRRVCOperationalStateClusterOperationalStateStruct {}
impl PNSObject for MTRRVCOperationalStateClusterOperationalStateStruct {}
impl std::convert::TryFrom<NSObject> for MTRRVCOperationalStateClusterOperationalStateStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRRVCOperationalStateClusterOperationalStateStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRRVCOperationalStateClusterOperationalStateStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRRVCOperationalStateClusterOperationalStateStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRRVCOperationalStateClusterOperationalStateStruct" ,)
        }
    }
}
impl IMTRRVCOperationalStateClusterOperationalStateStruct
    for MTRRVCOperationalStateClusterOperationalStateStruct
{
}
pub trait IMTRRVCOperationalStateClusterOperationalStateStruct: Sized + std::ops::Deref {
    unsafe fn operationalStateID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationalStateID)
    }
    unsafe fn setOperationalStateID_(&self, operationalStateID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationalStateID : operationalStateID)
    }
    unsafe fn operationalStateLabel(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationalStateLabel)
    }
    unsafe fn setOperationalStateLabel_(&self, operationalStateLabel: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationalStateLabel : operationalStateLabel)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRRVCOperationalStateClusterOperationalErrorEvent(pub id);
impl std::ops::Deref for MTRRVCOperationalStateClusterOperationalErrorEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRRVCOperationalStateClusterOperationalErrorEvent {}
impl MTRRVCOperationalStateClusterOperationalErrorEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRRVCOperationalStateClusterOperationalErrorEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRRVCOperationalStateClusterOperationalErrorEvent {}
impl INSObject for MTRRVCOperationalStateClusterOperationalErrorEvent {}
impl PNSObject for MTRRVCOperationalStateClusterOperationalErrorEvent {}
impl std::convert::TryFrom<NSObject> for MTRRVCOperationalStateClusterOperationalErrorEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRRVCOperationalStateClusterOperationalErrorEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRRVCOperationalStateClusterOperationalErrorEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRRVCOperationalStateClusterOperationalErrorEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRRVCOperationalStateClusterOperationalErrorEvent" ,)
        }
    }
}
impl IMTRRVCOperationalStateClusterOperationalErrorEvent
    for MTRRVCOperationalStateClusterOperationalErrorEvent
{
}
pub trait IMTRRVCOperationalStateClusterOperationalErrorEvent: Sized + std::ops::Deref {
    unsafe fn errorState(&self) -> MTRRVCOperationalStateClusterErrorStateStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, errorState)
    }
    unsafe fn setErrorState_(&self, errorState: MTRRVCOperationalStateClusterErrorStateStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setErrorState : errorState)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRRVCOperationalStateClusterOperationCompletionEvent(pub id);
impl std::ops::Deref for MTRRVCOperationalStateClusterOperationCompletionEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRRVCOperationalStateClusterOperationCompletionEvent {}
impl MTRRVCOperationalStateClusterOperationCompletionEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRRVCOperationalStateClusterOperationCompletionEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRRVCOperationalStateClusterOperationCompletionEvent {}
impl INSObject for MTRRVCOperationalStateClusterOperationCompletionEvent {}
impl PNSObject for MTRRVCOperationalStateClusterOperationCompletionEvent {}
impl std::convert::TryFrom<NSObject> for MTRRVCOperationalStateClusterOperationCompletionEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRRVCOperationalStateClusterOperationCompletionEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRRVCOperationalStateClusterOperationCompletionEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRRVCOperationalStateClusterOperationCompletionEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRRVCOperationalStateClusterOperationCompletionEvent" ,)
        }
    }
}
impl IMTRRVCOperationalStateClusterOperationCompletionEvent
    for MTRRVCOperationalStateClusterOperationCompletionEvent
{
}
pub trait IMTRRVCOperationalStateClusterOperationCompletionEvent: Sized + std::ops::Deref {
    unsafe fn completionErrorCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, completionErrorCode)
    }
    unsafe fn setCompletionErrorCode_(&self, completionErrorCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCompletionErrorCode : completionErrorCode)
    }
    unsafe fn totalOperationalTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, totalOperationalTime)
    }
    unsafe fn setTotalOperationalTime_(&self, totalOperationalTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTotalOperationalTime : totalOperationalTime)
    }
    unsafe fn pausedTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pausedTime)
    }
    unsafe fn setPausedTime_(&self, pausedTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPausedTime : pausedTime)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRScenesManagementClusterAttributeValuePairStruct(pub id);
impl std::ops::Deref for MTRScenesManagementClusterAttributeValuePairStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRScenesManagementClusterAttributeValuePairStruct {}
impl MTRScenesManagementClusterAttributeValuePairStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterAttributeValuePairStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRScenesManagementClusterAttributeValuePairStruct {}
impl INSObject for MTRScenesManagementClusterAttributeValuePairStruct {}
impl PNSObject for MTRScenesManagementClusterAttributeValuePairStruct {}
impl std::convert::TryFrom<NSObject> for MTRScenesManagementClusterAttributeValuePairStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRScenesManagementClusterAttributeValuePairStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterAttributeValuePairStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRScenesManagementClusterAttributeValuePairStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRScenesManagementClusterAttributeValuePairStruct" ,)
        }
    }
}
impl IMTRScenesManagementClusterAttributeValuePairStruct
    for MTRScenesManagementClusterAttributeValuePairStruct
{
}
pub trait IMTRScenesManagementClusterAttributeValuePairStruct: Sized + std::ops::Deref {
    unsafe fn attributeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attributeID)
    }
    unsafe fn setAttributeID_(&self, attributeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttributeID : attributeID)
    }
    unsafe fn valueUnsigned8(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, valueUnsigned8)
    }
    unsafe fn setValueUnsigned8_(&self, valueUnsigned8: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValueUnsigned8 : valueUnsigned8)
    }
    unsafe fn valueSigned8(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, valueSigned8)
    }
    unsafe fn setValueSigned8_(&self, valueSigned8: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValueSigned8 : valueSigned8)
    }
    unsafe fn valueUnsigned16(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, valueUnsigned16)
    }
    unsafe fn setValueUnsigned16_(&self, valueUnsigned16: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValueUnsigned16 : valueUnsigned16)
    }
    unsafe fn valueSigned16(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, valueSigned16)
    }
    unsafe fn setValueSigned16_(&self, valueSigned16: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValueSigned16 : valueSigned16)
    }
    unsafe fn valueUnsigned32(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, valueUnsigned32)
    }
    unsafe fn setValueUnsigned32_(&self, valueUnsigned32: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValueUnsigned32 : valueUnsigned32)
    }
    unsafe fn valueSigned32(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, valueSigned32)
    }
    unsafe fn setValueSigned32_(&self, valueSigned32: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValueSigned32 : valueSigned32)
    }
    unsafe fn valueUnsigned64(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, valueUnsigned64)
    }
    unsafe fn setValueUnsigned64_(&self, valueUnsigned64: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValueUnsigned64 : valueUnsigned64)
    }
    unsafe fn valueSigned64(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, valueSigned64)
    }
    unsafe fn setValueSigned64_(&self, valueSigned64: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValueSigned64 : valueSigned64)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRScenesManagementClusterExtensionFieldSetStruct(pub id);
impl std::ops::Deref for MTRScenesManagementClusterExtensionFieldSetStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRScenesManagementClusterExtensionFieldSetStruct {}
impl MTRScenesManagementClusterExtensionFieldSetStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterExtensionFieldSetStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRScenesManagementClusterExtensionFieldSetStruct {}
impl INSObject for MTRScenesManagementClusterExtensionFieldSetStruct {}
impl PNSObject for MTRScenesManagementClusterExtensionFieldSetStruct {}
impl std::convert::TryFrom<NSObject> for MTRScenesManagementClusterExtensionFieldSetStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRScenesManagementClusterExtensionFieldSetStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterExtensionFieldSetStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRScenesManagementClusterExtensionFieldSetStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRScenesManagementClusterExtensionFieldSetStruct" ,)
        }
    }
}
impl IMTRScenesManagementClusterExtensionFieldSetStruct
    for MTRScenesManagementClusterExtensionFieldSetStruct
{
}
pub trait IMTRScenesManagementClusterExtensionFieldSetStruct: Sized + std::ops::Deref {
    unsafe fn clusterID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, clusterID)
    }
    unsafe fn setClusterID_(&self, clusterID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setClusterID : clusterID)
    }
    unsafe fn attributeValueList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attributeValueList)
    }
    unsafe fn setAttributeValueList_(&self, attributeValueList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttributeValueList : attributeValueList)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRScenesManagementClusterSceneInfoStruct(pub id);
impl std::ops::Deref for MTRScenesManagementClusterSceneInfoStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRScenesManagementClusterSceneInfoStruct {}
impl MTRScenesManagementClusterSceneInfoStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterSceneInfoStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRScenesManagementClusterSceneInfoStruct {}
impl INSObject for MTRScenesManagementClusterSceneInfoStruct {}
impl PNSObject for MTRScenesManagementClusterSceneInfoStruct {}
impl std::convert::TryFrom<NSObject> for MTRScenesManagementClusterSceneInfoStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRScenesManagementClusterSceneInfoStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterSceneInfoStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRScenesManagementClusterSceneInfoStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRScenesManagementClusterSceneInfoStruct")
        }
    }
}
impl IMTRScenesManagementClusterSceneInfoStruct for MTRScenesManagementClusterSceneInfoStruct {}
pub trait IMTRScenesManagementClusterSceneInfoStruct: Sized + std::ops::Deref {
    unsafe fn sceneCount(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sceneCount)
    }
    unsafe fn setSceneCount_(&self, sceneCount: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSceneCount : sceneCount)
    }
    unsafe fn currentScene(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentScene)
    }
    unsafe fn setCurrentScene_(&self, currentScene: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrentScene : currentScene)
    }
    unsafe fn currentGroup(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentGroup)
    }
    unsafe fn setCurrentGroup_(&self, currentGroup: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrentGroup : currentGroup)
    }
    unsafe fn sceneValid(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sceneValid)
    }
    unsafe fn setSceneValid_(&self, sceneValid: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSceneValid : sceneValid)
    }
    unsafe fn remainingCapacity(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, remainingCapacity)
    }
    unsafe fn setRemainingCapacity_(&self, remainingCapacity: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRemainingCapacity : remainingCapacity)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupcastClusterMembershipStruct(pub id);
impl std::ops::Deref for MTRGroupcastClusterMembershipStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupcastClusterMembershipStruct {}
impl MTRGroupcastClusterMembershipStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupcastClusterMembershipStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRGroupcastClusterMembershipStruct {}
impl INSObject for MTRGroupcastClusterMembershipStruct {}
impl PNSObject for MTRGroupcastClusterMembershipStruct {}
impl std::convert::TryFrom<NSObject> for MTRGroupcastClusterMembershipStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRGroupcastClusterMembershipStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupcastClusterMembershipStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupcastClusterMembershipStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRGroupcastClusterMembershipStruct")
        }
    }
}
impl IMTRGroupcastClusterMembershipStruct for MTRGroupcastClusterMembershipStruct {}
pub trait IMTRGroupcastClusterMembershipStruct: Sized + std::ops::Deref {
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn endpoints(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoints)
    }
    unsafe fn setEndpoints_(&self, endpoints: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoints : endpoints)
    }
    unsafe fn keyID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, keyID)
    }
    unsafe fn setKeyID_(&self, keyID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setKeyID : keyID)
    }
    unsafe fn hasAuxiliaryACL(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hasAuxiliaryACL)
    }
    unsafe fn setHasAuxiliaryACL_(&self, hasAuxiliaryACL: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHasAuxiliaryACL : hasAuxiliaryACL)
    }
    unsafe fn expiringKeyID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, expiringKeyID)
    }
    unsafe fn setExpiringKeyID_(&self, expiringKeyID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExpiringKeyID : expiringKeyID)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRHEPAFilterMonitoringClusterReplacementProductStruct(pub id);
impl std::ops::Deref for MTRHEPAFilterMonitoringClusterReplacementProductStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRHEPAFilterMonitoringClusterReplacementProductStruct {}
impl MTRHEPAFilterMonitoringClusterReplacementProductStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRHEPAFilterMonitoringClusterReplacementProductStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRHEPAFilterMonitoringClusterReplacementProductStruct {}
impl INSObject for MTRHEPAFilterMonitoringClusterReplacementProductStruct {}
impl PNSObject for MTRHEPAFilterMonitoringClusterReplacementProductStruct {}
impl std::convert::TryFrom<NSObject> for MTRHEPAFilterMonitoringClusterReplacementProductStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRHEPAFilterMonitoringClusterReplacementProductStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRHEPAFilterMonitoringClusterReplacementProductStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRHEPAFilterMonitoringClusterReplacementProductStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRHEPAFilterMonitoringClusterReplacementProductStruct" ,)
        }
    }
}
impl IMTRHEPAFilterMonitoringClusterReplacementProductStruct
    for MTRHEPAFilterMonitoringClusterReplacementProductStruct
{
}
pub trait IMTRHEPAFilterMonitoringClusterReplacementProductStruct: Sized + std::ops::Deref {
    unsafe fn productIdentifierType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, productIdentifierType)
    }
    unsafe fn setProductIdentifierType_(&self, productIdentifierType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProductIdentifierType : productIdentifierType)
    }
    unsafe fn productIdentifierValue(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, productIdentifierValue)
    }
    unsafe fn setProductIdentifierValue_(&self, productIdentifierValue: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProductIdentifierValue : productIdentifierValue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRActivatedCarbonFilterMonitoringClusterReplacementProductStruct(pub id);
impl std::ops::Deref for MTRActivatedCarbonFilterMonitoringClusterReplacementProductStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRActivatedCarbonFilterMonitoringClusterReplacementProductStruct {}
impl MTRActivatedCarbonFilterMonitoringClusterReplacementProductStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRActivatedCarbonFilterMonitoringClusterReplacementProductStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRActivatedCarbonFilterMonitoringClusterReplacementProductStruct {}
impl INSObject for MTRActivatedCarbonFilterMonitoringClusterReplacementProductStruct {}
impl PNSObject for MTRActivatedCarbonFilterMonitoringClusterReplacementProductStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRActivatedCarbonFilterMonitoringClusterReplacementProductStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRActivatedCarbonFilterMonitoringClusterReplacementProductStruct, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRActivatedCarbonFilterMonitoringClusterReplacementProductStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRActivatedCarbonFilterMonitoringClusterReplacementProductStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRActivatedCarbonFilterMonitoringClusterReplacementProductStruct" ,)
        }
    }
}
impl IMTRActivatedCarbonFilterMonitoringClusterReplacementProductStruct
    for MTRActivatedCarbonFilterMonitoringClusterReplacementProductStruct
{
}
pub trait IMTRActivatedCarbonFilterMonitoringClusterReplacementProductStruct:
    Sized + std::ops::Deref
{
    unsafe fn productIdentifierType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, productIdentifierType)
    }
    unsafe fn setProductIdentifierType_(&self, productIdentifierType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProductIdentifierType : productIdentifierType)
    }
    unsafe fn productIdentifierValue(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, productIdentifierValue)
    }
    unsafe fn setProductIdentifierValue_(&self, productIdentifierValue: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProductIdentifierValue : productIdentifierValue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBooleanStateConfigurationClusterAlarmsStateChangedEvent(pub id);
impl std::ops::Deref for MTRBooleanStateConfigurationClusterAlarmsStateChangedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBooleanStateConfigurationClusterAlarmsStateChangedEvent {}
impl MTRBooleanStateConfigurationClusterAlarmsStateChangedEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBooleanStateConfigurationClusterAlarmsStateChangedEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRBooleanStateConfigurationClusterAlarmsStateChangedEvent {}
impl INSObject for MTRBooleanStateConfigurationClusterAlarmsStateChangedEvent {}
impl PNSObject for MTRBooleanStateConfigurationClusterAlarmsStateChangedEvent {}
impl std::convert::TryFrom<NSObject>
    for MTRBooleanStateConfigurationClusterAlarmsStateChangedEvent
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRBooleanStateConfigurationClusterAlarmsStateChangedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBooleanStateConfigurationClusterAlarmsStateChangedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRBooleanStateConfigurationClusterAlarmsStateChangedEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRBooleanStateConfigurationClusterAlarmsStateChangedEvent" ,)
        }
    }
}
impl IMTRBooleanStateConfigurationClusterAlarmsStateChangedEvent
    for MTRBooleanStateConfigurationClusterAlarmsStateChangedEvent
{
}
pub trait IMTRBooleanStateConfigurationClusterAlarmsStateChangedEvent:
    Sized + std::ops::Deref
{
    unsafe fn alarmsActive(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, alarmsActive)
    }
    unsafe fn setAlarmsActive_(&self, alarmsActive: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAlarmsActive : alarmsActive)
    }
    unsafe fn alarmsSuppressed(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, alarmsSuppressed)
    }
    unsafe fn setAlarmsSuppressed_(&self, alarmsSuppressed: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAlarmsSuppressed : alarmsSuppressed)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBooleanStateConfigurationClusterSensorFaultEvent(pub id);
impl std::ops::Deref for MTRBooleanStateConfigurationClusterSensorFaultEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBooleanStateConfigurationClusterSensorFaultEvent {}
impl MTRBooleanStateConfigurationClusterSensorFaultEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBooleanStateConfigurationClusterSensorFaultEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRBooleanStateConfigurationClusterSensorFaultEvent {}
impl INSObject for MTRBooleanStateConfigurationClusterSensorFaultEvent {}
impl PNSObject for MTRBooleanStateConfigurationClusterSensorFaultEvent {}
impl std::convert::TryFrom<NSObject> for MTRBooleanStateConfigurationClusterSensorFaultEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRBooleanStateConfigurationClusterSensorFaultEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBooleanStateConfigurationClusterSensorFaultEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRBooleanStateConfigurationClusterSensorFaultEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRBooleanStateConfigurationClusterSensorFaultEvent" ,)
        }
    }
}
impl IMTRBooleanStateConfigurationClusterSensorFaultEvent
    for MTRBooleanStateConfigurationClusterSensorFaultEvent
{
}
pub trait IMTRBooleanStateConfigurationClusterSensorFaultEvent: Sized + std::ops::Deref {
    unsafe fn sensorFault(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sensorFault)
    }
    unsafe fn setSensorFault_(&self, sensorFault: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSensorFault : sensorFault)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRValveConfigurationAndControlClusterValveStateChangedEvent(pub id);
impl std::ops::Deref for MTRValveConfigurationAndControlClusterValveStateChangedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRValveConfigurationAndControlClusterValveStateChangedEvent {}
impl MTRValveConfigurationAndControlClusterValveStateChangedEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRValveConfigurationAndControlClusterValveStateChangedEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRValveConfigurationAndControlClusterValveStateChangedEvent {}
impl INSObject for MTRValveConfigurationAndControlClusterValveStateChangedEvent {}
impl PNSObject for MTRValveConfigurationAndControlClusterValveStateChangedEvent {}
impl std::convert::TryFrom<NSObject>
    for MTRValveConfigurationAndControlClusterValveStateChangedEvent
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRValveConfigurationAndControlClusterValveStateChangedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRValveConfigurationAndControlClusterValveStateChangedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRValveConfigurationAndControlClusterValveStateChangedEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRValveConfigurationAndControlClusterValveStateChangedEvent" ,)
        }
    }
}
impl IMTRValveConfigurationAndControlClusterValveStateChangedEvent
    for MTRValveConfigurationAndControlClusterValveStateChangedEvent
{
}
pub trait IMTRValveConfigurationAndControlClusterValveStateChangedEvent:
    Sized + std::ops::Deref
{
    unsafe fn valveState(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, valveState)
    }
    unsafe fn setValveState_(&self, valveState: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValveState : valveState)
    }
    unsafe fn valveLevel(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, valveLevel)
    }
    unsafe fn setValveLevel_(&self, valveLevel: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValveLevel : valveLevel)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRValveConfigurationAndControlClusterValveFaultEvent(pub id);
impl std::ops::Deref for MTRValveConfigurationAndControlClusterValveFaultEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRValveConfigurationAndControlClusterValveFaultEvent {}
impl MTRValveConfigurationAndControlClusterValveFaultEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRValveConfigurationAndControlClusterValveFaultEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRValveConfigurationAndControlClusterValveFaultEvent {}
impl INSObject for MTRValveConfigurationAndControlClusterValveFaultEvent {}
impl PNSObject for MTRValveConfigurationAndControlClusterValveFaultEvent {}
impl std::convert::TryFrom<NSObject> for MTRValveConfigurationAndControlClusterValveFaultEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRValveConfigurationAndControlClusterValveFaultEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRValveConfigurationAndControlClusterValveFaultEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRValveConfigurationAndControlClusterValveFaultEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRValveConfigurationAndControlClusterValveFaultEvent" ,)
        }
    }
}
impl IMTRValveConfigurationAndControlClusterValveFaultEvent
    for MTRValveConfigurationAndControlClusterValveFaultEvent
{
}
pub trait IMTRValveConfigurationAndControlClusterValveFaultEvent: Sized + std::ops::Deref {
    unsafe fn valveFault(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, valveFault)
    }
    unsafe fn setValveFault_(&self, valveFault: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValveFault : valveFault)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRElectricalPowerMeasurementClusterMeasurementAccuracyRangeStruct(pub id);
impl std::ops::Deref for MTRElectricalPowerMeasurementClusterMeasurementAccuracyRangeStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRElectricalPowerMeasurementClusterMeasurementAccuracyRangeStruct {}
impl MTRElectricalPowerMeasurementClusterMeasurementAccuracyRangeStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRElectricalPowerMeasurementClusterMeasurementAccuracyRangeStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRElectricalPowerMeasurementClusterMeasurementAccuracyRangeStruct {}
impl INSObject for MTRElectricalPowerMeasurementClusterMeasurementAccuracyRangeStruct {}
impl PNSObject for MTRElectricalPowerMeasurementClusterMeasurementAccuracyRangeStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRElectricalPowerMeasurementClusterMeasurementAccuracyRangeStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRElectricalPowerMeasurementClusterMeasurementAccuracyRangeStruct, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRElectricalPowerMeasurementClusterMeasurementAccuracyRangeStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRElectricalPowerMeasurementClusterMeasurementAccuracyRangeStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRElectricalPowerMeasurementClusterMeasurementAccuracyRangeStruct" ,)
        }
    }
}
impl IMTRElectricalPowerMeasurementClusterMeasurementAccuracyRangeStruct
    for MTRElectricalPowerMeasurementClusterMeasurementAccuracyRangeStruct
{
}
pub trait IMTRElectricalPowerMeasurementClusterMeasurementAccuracyRangeStruct:
    Sized + std::ops::Deref
{
    unsafe fn rangeMin(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rangeMin)
    }
    unsafe fn setRangeMin_(&self, rangeMin: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRangeMin : rangeMin)
    }
    unsafe fn rangeMax(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rangeMax)
    }
    unsafe fn setRangeMax_(&self, rangeMax: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRangeMax : rangeMax)
    }
    unsafe fn percentMax(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, percentMax)
    }
    unsafe fn setPercentMax_(&self, percentMax: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPercentMax : percentMax)
    }
    unsafe fn percentMin(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, percentMin)
    }
    unsafe fn setPercentMin_(&self, percentMin: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPercentMin : percentMin)
    }
    unsafe fn percentTypical(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, percentTypical)
    }
    unsafe fn setPercentTypical_(&self, percentTypical: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPercentTypical : percentTypical)
    }
    unsafe fn fixedMax(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fixedMax)
    }
    unsafe fn setFixedMax_(&self, fixedMax: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFixedMax : fixedMax)
    }
    unsafe fn fixedMin(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fixedMin)
    }
    unsafe fn setFixedMin_(&self, fixedMin: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFixedMin : fixedMin)
    }
    unsafe fn fixedTypical(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fixedTypical)
    }
    unsafe fn setFixedTypical_(&self, fixedTypical: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFixedTypical : fixedTypical)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRElectricalPowerMeasurementClusterMeasurementAccuracyStruct(pub id);
impl std::ops::Deref for MTRElectricalPowerMeasurementClusterMeasurementAccuracyStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRElectricalPowerMeasurementClusterMeasurementAccuracyStruct {}
impl MTRElectricalPowerMeasurementClusterMeasurementAccuracyStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRElectricalPowerMeasurementClusterMeasurementAccuracyStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRElectricalPowerMeasurementClusterMeasurementAccuracyStruct {}
impl INSObject for MTRElectricalPowerMeasurementClusterMeasurementAccuracyStruct {}
impl PNSObject for MTRElectricalPowerMeasurementClusterMeasurementAccuracyStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRElectricalPowerMeasurementClusterMeasurementAccuracyStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRElectricalPowerMeasurementClusterMeasurementAccuracyStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRElectricalPowerMeasurementClusterMeasurementAccuracyStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRElectricalPowerMeasurementClusterMeasurementAccuracyStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRElectricalPowerMeasurementClusterMeasurementAccuracyStruct" ,)
        }
    }
}
impl IMTRElectricalPowerMeasurementClusterMeasurementAccuracyStruct
    for MTRElectricalPowerMeasurementClusterMeasurementAccuracyStruct
{
}
pub trait IMTRElectricalPowerMeasurementClusterMeasurementAccuracyStruct:
    Sized + std::ops::Deref
{
    unsafe fn measurementType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, measurementType)
    }
    unsafe fn setMeasurementType_(&self, measurementType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMeasurementType : measurementType)
    }
    unsafe fn measured(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, measured)
    }
    unsafe fn setMeasured_(&self, measured: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMeasured : measured)
    }
    unsafe fn minMeasuredValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minMeasuredValue)
    }
    unsafe fn setMinMeasuredValue_(&self, minMeasuredValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinMeasuredValue : minMeasuredValue)
    }
    unsafe fn maxMeasuredValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxMeasuredValue)
    }
    unsafe fn setMaxMeasuredValue_(&self, maxMeasuredValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxMeasuredValue : maxMeasuredValue)
    }
    unsafe fn accuracyRanges(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, accuracyRanges)
    }
    unsafe fn setAccuracyRanges_(&self, accuracyRanges: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAccuracyRanges : accuracyRanges)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRElectricalPowerMeasurementClusterHarmonicMeasurementStruct(pub id);
impl std::ops::Deref for MTRElectricalPowerMeasurementClusterHarmonicMeasurementStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRElectricalPowerMeasurementClusterHarmonicMeasurementStruct {}
impl MTRElectricalPowerMeasurementClusterHarmonicMeasurementStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRElectricalPowerMeasurementClusterHarmonicMeasurementStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRElectricalPowerMeasurementClusterHarmonicMeasurementStruct {}
impl INSObject for MTRElectricalPowerMeasurementClusterHarmonicMeasurementStruct {}
impl PNSObject for MTRElectricalPowerMeasurementClusterHarmonicMeasurementStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRElectricalPowerMeasurementClusterHarmonicMeasurementStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRElectricalPowerMeasurementClusterHarmonicMeasurementStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRElectricalPowerMeasurementClusterHarmonicMeasurementStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRElectricalPowerMeasurementClusterHarmonicMeasurementStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRElectricalPowerMeasurementClusterHarmonicMeasurementStruct" ,)
        }
    }
}
impl IMTRElectricalPowerMeasurementClusterHarmonicMeasurementStruct
    for MTRElectricalPowerMeasurementClusterHarmonicMeasurementStruct
{
}
pub trait IMTRElectricalPowerMeasurementClusterHarmonicMeasurementStruct:
    Sized + std::ops::Deref
{
    unsafe fn order(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, order)
    }
    unsafe fn setOrder_(&self, order: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOrder : order)
    }
    unsafe fn measurement(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, measurement)
    }
    unsafe fn setMeasurement_(&self, measurement: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMeasurement : measurement)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRElectricalPowerMeasurementClusterMeasurementRangeStruct(pub id);
impl std::ops::Deref for MTRElectricalPowerMeasurementClusterMeasurementRangeStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRElectricalPowerMeasurementClusterMeasurementRangeStruct {}
impl MTRElectricalPowerMeasurementClusterMeasurementRangeStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRElectricalPowerMeasurementClusterMeasurementRangeStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRElectricalPowerMeasurementClusterMeasurementRangeStruct {}
impl INSObject for MTRElectricalPowerMeasurementClusterMeasurementRangeStruct {}
impl PNSObject for MTRElectricalPowerMeasurementClusterMeasurementRangeStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRElectricalPowerMeasurementClusterMeasurementRangeStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRElectricalPowerMeasurementClusterMeasurementRangeStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRElectricalPowerMeasurementClusterMeasurementRangeStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRElectricalPowerMeasurementClusterMeasurementRangeStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRElectricalPowerMeasurementClusterMeasurementRangeStruct" ,)
        }
    }
}
impl IMTRElectricalPowerMeasurementClusterMeasurementRangeStruct
    for MTRElectricalPowerMeasurementClusterMeasurementRangeStruct
{
}
pub trait IMTRElectricalPowerMeasurementClusterMeasurementRangeStruct:
    Sized + std::ops::Deref
{
    unsafe fn measurementType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, measurementType)
    }
    unsafe fn setMeasurementType_(&self, measurementType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMeasurementType : measurementType)
    }
    unsafe fn min(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, min)
    }
    unsafe fn setMin_(&self, min: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMin : min)
    }
    unsafe fn max(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, max)
    }
    unsafe fn setMax_(&self, max: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMax : max)
    }
    unsafe fn startTimestamp(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startTimestamp)
    }
    unsafe fn setStartTimestamp_(&self, startTimestamp: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartTimestamp : startTimestamp)
    }
    unsafe fn endTimestamp(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endTimestamp)
    }
    unsafe fn setEndTimestamp_(&self, endTimestamp: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndTimestamp : endTimestamp)
    }
    unsafe fn minTimestamp(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minTimestamp)
    }
    unsafe fn setMinTimestamp_(&self, minTimestamp: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinTimestamp : minTimestamp)
    }
    unsafe fn maxTimestamp(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxTimestamp)
    }
    unsafe fn setMaxTimestamp_(&self, maxTimestamp: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxTimestamp : maxTimestamp)
    }
    unsafe fn startSystime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startSystime)
    }
    unsafe fn setStartSystime_(&self, startSystime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartSystime : startSystime)
    }
    unsafe fn endSystime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endSystime)
    }
    unsafe fn setEndSystime_(&self, endSystime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndSystime : endSystime)
    }
    unsafe fn minSystime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minSystime)
    }
    unsafe fn setMinSystime_(&self, minSystime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinSystime : minSystime)
    }
    unsafe fn maxSystime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxSystime)
    }
    unsafe fn setMaxSystime_(&self, maxSystime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxSystime : maxSystime)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRElectricalPowerMeasurementClusterMeasurementPeriodRangesEvent(pub id);
impl std::ops::Deref for MTRElectricalPowerMeasurementClusterMeasurementPeriodRangesEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRElectricalPowerMeasurementClusterMeasurementPeriodRangesEvent {}
impl MTRElectricalPowerMeasurementClusterMeasurementPeriodRangesEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRElectricalPowerMeasurementClusterMeasurementPeriodRangesEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRElectricalPowerMeasurementClusterMeasurementPeriodRangesEvent {}
impl INSObject for MTRElectricalPowerMeasurementClusterMeasurementPeriodRangesEvent {}
impl PNSObject for MTRElectricalPowerMeasurementClusterMeasurementPeriodRangesEvent {}
impl std::convert::TryFrom<NSObject>
    for MTRElectricalPowerMeasurementClusterMeasurementPeriodRangesEvent
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRElectricalPowerMeasurementClusterMeasurementPeriodRangesEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRElectricalPowerMeasurementClusterMeasurementPeriodRangesEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRElectricalPowerMeasurementClusterMeasurementPeriodRangesEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRElectricalPowerMeasurementClusterMeasurementPeriodRangesEvent" ,)
        }
    }
}
impl IMTRElectricalPowerMeasurementClusterMeasurementPeriodRangesEvent
    for MTRElectricalPowerMeasurementClusterMeasurementPeriodRangesEvent
{
}
pub trait IMTRElectricalPowerMeasurementClusterMeasurementPeriodRangesEvent:
    Sized + std::ops::Deref
{
    unsafe fn ranges(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ranges)
    }
    unsafe fn setRanges_(&self, ranges: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRanges : ranges)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRElectricalEnergyMeasurementClusterMeasurementAccuracyRangeStruct(pub id);
impl std::ops::Deref for MTRElectricalEnergyMeasurementClusterMeasurementAccuracyRangeStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRElectricalEnergyMeasurementClusterMeasurementAccuracyRangeStruct {}
impl MTRElectricalEnergyMeasurementClusterMeasurementAccuracyRangeStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRElectricalEnergyMeasurementClusterMeasurementAccuracyRangeStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRElectricalEnergyMeasurementClusterMeasurementAccuracyRangeStruct {}
impl INSObject for MTRElectricalEnergyMeasurementClusterMeasurementAccuracyRangeStruct {}
impl PNSObject for MTRElectricalEnergyMeasurementClusterMeasurementAccuracyRangeStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRElectricalEnergyMeasurementClusterMeasurementAccuracyRangeStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRElectricalEnergyMeasurementClusterMeasurementAccuracyRangeStruct, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRElectricalEnergyMeasurementClusterMeasurementAccuracyRangeStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRElectricalEnergyMeasurementClusterMeasurementAccuracyRangeStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRElectricalEnergyMeasurementClusterMeasurementAccuracyRangeStruct" ,)
        }
    }
}
impl IMTRElectricalEnergyMeasurementClusterMeasurementAccuracyRangeStruct
    for MTRElectricalEnergyMeasurementClusterMeasurementAccuracyRangeStruct
{
}
pub trait IMTRElectricalEnergyMeasurementClusterMeasurementAccuracyRangeStruct:
    Sized + std::ops::Deref
{
    unsafe fn rangeMin(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rangeMin)
    }
    unsafe fn setRangeMin_(&self, rangeMin: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRangeMin : rangeMin)
    }
    unsafe fn rangeMax(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rangeMax)
    }
    unsafe fn setRangeMax_(&self, rangeMax: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRangeMax : rangeMax)
    }
    unsafe fn percentMax(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, percentMax)
    }
    unsafe fn setPercentMax_(&self, percentMax: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPercentMax : percentMax)
    }
    unsafe fn percentMin(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, percentMin)
    }
    unsafe fn setPercentMin_(&self, percentMin: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPercentMin : percentMin)
    }
    unsafe fn percentTypical(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, percentTypical)
    }
    unsafe fn setPercentTypical_(&self, percentTypical: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPercentTypical : percentTypical)
    }
    unsafe fn fixedMax(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fixedMax)
    }
    unsafe fn setFixedMax_(&self, fixedMax: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFixedMax : fixedMax)
    }
    unsafe fn fixedMin(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fixedMin)
    }
    unsafe fn setFixedMin_(&self, fixedMin: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFixedMin : fixedMin)
    }
    unsafe fn fixedTypical(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fixedTypical)
    }
    unsafe fn setFixedTypical_(&self, fixedTypical: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFixedTypical : fixedTypical)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRElectricalEnergyMeasurementClusterMeasurementAccuracyStruct(pub id);
impl std::ops::Deref for MTRElectricalEnergyMeasurementClusterMeasurementAccuracyStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRElectricalEnergyMeasurementClusterMeasurementAccuracyStruct {}
impl MTRElectricalEnergyMeasurementClusterMeasurementAccuracyStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRElectricalEnergyMeasurementClusterMeasurementAccuracyStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRElectricalEnergyMeasurementClusterMeasurementAccuracyStruct {}
impl INSObject for MTRElectricalEnergyMeasurementClusterMeasurementAccuracyStruct {}
impl PNSObject for MTRElectricalEnergyMeasurementClusterMeasurementAccuracyStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRElectricalEnergyMeasurementClusterMeasurementAccuracyStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRElectricalEnergyMeasurementClusterMeasurementAccuracyStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRElectricalEnergyMeasurementClusterMeasurementAccuracyStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRElectricalEnergyMeasurementClusterMeasurementAccuracyStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRElectricalEnergyMeasurementClusterMeasurementAccuracyStruct" ,)
        }
    }
}
impl IMTRElectricalEnergyMeasurementClusterMeasurementAccuracyStruct
    for MTRElectricalEnergyMeasurementClusterMeasurementAccuracyStruct
{
}
pub trait IMTRElectricalEnergyMeasurementClusterMeasurementAccuracyStruct:
    Sized + std::ops::Deref
{
    unsafe fn measurementType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, measurementType)
    }
    unsafe fn setMeasurementType_(&self, measurementType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMeasurementType : measurementType)
    }
    unsafe fn measured(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, measured)
    }
    unsafe fn setMeasured_(&self, measured: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMeasured : measured)
    }
    unsafe fn minMeasuredValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minMeasuredValue)
    }
    unsafe fn setMinMeasuredValue_(&self, minMeasuredValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinMeasuredValue : minMeasuredValue)
    }
    unsafe fn maxMeasuredValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxMeasuredValue)
    }
    unsafe fn setMaxMeasuredValue_(&self, maxMeasuredValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxMeasuredValue : maxMeasuredValue)
    }
    unsafe fn accuracyRanges(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, accuracyRanges)
    }
    unsafe fn setAccuracyRanges_(&self, accuracyRanges: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAccuracyRanges : accuracyRanges)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRElectricalEnergyMeasurementClusterCumulativeEnergyResetStruct(pub id);
impl std::ops::Deref for MTRElectricalEnergyMeasurementClusterCumulativeEnergyResetStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRElectricalEnergyMeasurementClusterCumulativeEnergyResetStruct {}
impl MTRElectricalEnergyMeasurementClusterCumulativeEnergyResetStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRElectricalEnergyMeasurementClusterCumulativeEnergyResetStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRElectricalEnergyMeasurementClusterCumulativeEnergyResetStruct {}
impl INSObject for MTRElectricalEnergyMeasurementClusterCumulativeEnergyResetStruct {}
impl PNSObject for MTRElectricalEnergyMeasurementClusterCumulativeEnergyResetStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRElectricalEnergyMeasurementClusterCumulativeEnergyResetStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRElectricalEnergyMeasurementClusterCumulativeEnergyResetStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRElectricalEnergyMeasurementClusterCumulativeEnergyResetStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRElectricalEnergyMeasurementClusterCumulativeEnergyResetStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRElectricalEnergyMeasurementClusterCumulativeEnergyResetStruct" ,)
        }
    }
}
impl IMTRElectricalEnergyMeasurementClusterCumulativeEnergyResetStruct
    for MTRElectricalEnergyMeasurementClusterCumulativeEnergyResetStruct
{
}
pub trait IMTRElectricalEnergyMeasurementClusterCumulativeEnergyResetStruct:
    Sized + std::ops::Deref
{
    unsafe fn importedResetTimestamp(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, importedResetTimestamp)
    }
    unsafe fn setImportedResetTimestamp_(&self, importedResetTimestamp: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setImportedResetTimestamp : importedResetTimestamp)
    }
    unsafe fn exportedResetTimestamp(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, exportedResetTimestamp)
    }
    unsafe fn setExportedResetTimestamp_(&self, exportedResetTimestamp: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExportedResetTimestamp : exportedResetTimestamp)
    }
    unsafe fn importedResetSystime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, importedResetSystime)
    }
    unsafe fn setImportedResetSystime_(&self, importedResetSystime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setImportedResetSystime : importedResetSystime)
    }
    unsafe fn exportedResetSystime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, exportedResetSystime)
    }
    unsafe fn setExportedResetSystime_(&self, exportedResetSystime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExportedResetSystime : exportedResetSystime)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct(pub id);
impl std::ops::Deref for MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct {}
impl MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct {}
impl INSObject for MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct {}
impl PNSObject for MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct" ,)
        }
    }
}
impl IMTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct
    for MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct
{
}
pub trait IMTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct:
    Sized + std::ops::Deref
{
    unsafe fn energy(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, energy)
    }
    unsafe fn setEnergy_(&self, energy: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEnergy : energy)
    }
    unsafe fn startTimestamp(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startTimestamp)
    }
    unsafe fn setStartTimestamp_(&self, startTimestamp: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartTimestamp : startTimestamp)
    }
    unsafe fn endTimestamp(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endTimestamp)
    }
    unsafe fn setEndTimestamp_(&self, endTimestamp: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndTimestamp : endTimestamp)
    }
    unsafe fn startSystime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startSystime)
    }
    unsafe fn setStartSystime_(&self, startSystime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartSystime : startSystime)
    }
    unsafe fn endSystime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endSystime)
    }
    unsafe fn setEndSystime_(&self, endSystime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndSystime : endSystime)
    }
    unsafe fn apparentEnergy(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, apparentEnergy)
    }
    unsafe fn setApparentEnergy_(&self, apparentEnergy: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setApparentEnergy : apparentEnergy)
    }
    unsafe fn reactiveEnergy(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reactiveEnergy)
    }
    unsafe fn setReactiveEnergy_(&self, reactiveEnergy: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReactiveEnergy : reactiveEnergy)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRElectricalEnergyMeasurementClusterCumulativeEnergyMeasuredEvent(pub id);
impl std::ops::Deref for MTRElectricalEnergyMeasurementClusterCumulativeEnergyMeasuredEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRElectricalEnergyMeasurementClusterCumulativeEnergyMeasuredEvent {}
impl MTRElectricalEnergyMeasurementClusterCumulativeEnergyMeasuredEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRElectricalEnergyMeasurementClusterCumulativeEnergyMeasuredEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRElectricalEnergyMeasurementClusterCumulativeEnergyMeasuredEvent {}
impl INSObject for MTRElectricalEnergyMeasurementClusterCumulativeEnergyMeasuredEvent {}
impl PNSObject for MTRElectricalEnergyMeasurementClusterCumulativeEnergyMeasuredEvent {}
impl std::convert::TryFrom<NSObject>
    for MTRElectricalEnergyMeasurementClusterCumulativeEnergyMeasuredEvent
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRElectricalEnergyMeasurementClusterCumulativeEnergyMeasuredEvent, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRElectricalEnergyMeasurementClusterCumulativeEnergyMeasuredEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRElectricalEnergyMeasurementClusterCumulativeEnergyMeasuredEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRElectricalEnergyMeasurementClusterCumulativeEnergyMeasuredEvent" ,)
        }
    }
}
impl IMTRElectricalEnergyMeasurementClusterCumulativeEnergyMeasuredEvent
    for MTRElectricalEnergyMeasurementClusterCumulativeEnergyMeasuredEvent
{
}
pub trait IMTRElectricalEnergyMeasurementClusterCumulativeEnergyMeasuredEvent:
    Sized + std::ops::Deref
{
    unsafe fn energyImported(&self) -> MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, energyImported)
    }
    unsafe fn setEnergyImported_(
        &self,
        energyImported: MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEnergyImported : energyImported)
    }
    unsafe fn energyExported(&self) -> MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, energyExported)
    }
    unsafe fn setEnergyExported_(
        &self,
        energyExported: MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEnergyExported : energyExported)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRElectricalEnergyMeasurementClusterPeriodicEnergyMeasuredEvent(pub id);
impl std::ops::Deref for MTRElectricalEnergyMeasurementClusterPeriodicEnergyMeasuredEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRElectricalEnergyMeasurementClusterPeriodicEnergyMeasuredEvent {}
impl MTRElectricalEnergyMeasurementClusterPeriodicEnergyMeasuredEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRElectricalEnergyMeasurementClusterPeriodicEnergyMeasuredEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRElectricalEnergyMeasurementClusterPeriodicEnergyMeasuredEvent {}
impl INSObject for MTRElectricalEnergyMeasurementClusterPeriodicEnergyMeasuredEvent {}
impl PNSObject for MTRElectricalEnergyMeasurementClusterPeriodicEnergyMeasuredEvent {}
impl std::convert::TryFrom<NSObject>
    for MTRElectricalEnergyMeasurementClusterPeriodicEnergyMeasuredEvent
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRElectricalEnergyMeasurementClusterPeriodicEnergyMeasuredEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRElectricalEnergyMeasurementClusterPeriodicEnergyMeasuredEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRElectricalEnergyMeasurementClusterPeriodicEnergyMeasuredEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRElectricalEnergyMeasurementClusterPeriodicEnergyMeasuredEvent" ,)
        }
    }
}
impl IMTRElectricalEnergyMeasurementClusterPeriodicEnergyMeasuredEvent
    for MTRElectricalEnergyMeasurementClusterPeriodicEnergyMeasuredEvent
{
}
pub trait IMTRElectricalEnergyMeasurementClusterPeriodicEnergyMeasuredEvent:
    Sized + std::ops::Deref
{
    unsafe fn energyImported(&self) -> MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, energyImported)
    }
    unsafe fn setEnergyImported_(
        &self,
        energyImported: MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEnergyImported : energyImported)
    }
    unsafe fn energyExported(&self) -> MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, energyExported)
    }
    unsafe fn setEnergyExported_(
        &self,
        energyExported: MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEnergyExported : energyExported)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct(pub id);
impl std::ops::Deref for MTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct {}
impl MTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct {}
impl INSObject for MTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct {}
impl PNSObject for MTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct {}
impl std::convert::TryFrom<NSObject> for MTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct" ,)
        }
    }
}
impl IMTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct
    for MTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct
{
}
pub trait IMTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct:
    Sized + std::ops::Deref
{
    unsafe fn duration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, duration)
    }
    unsafe fn setDuration_(&self, duration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDuration : duration)
    }
    unsafe fn oneShot(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, oneShot)
    }
    unsafe fn setOneShot_(&self, oneShot: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOneShot : oneShot)
    }
    unsafe fn emergencyBoost(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, emergencyBoost)
    }
    unsafe fn setEmergencyBoost_(&self, emergencyBoost: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEmergencyBoost : emergencyBoost)
    }
    unsafe fn temporarySetpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, temporarySetpoint)
    }
    unsafe fn setTemporarySetpoint_(&self, temporarySetpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTemporarySetpoint : temporarySetpoint)
    }
    unsafe fn targetPercentage(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, targetPercentage)
    }
    unsafe fn setTargetPercentage_(&self, targetPercentage: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTargetPercentage : targetPercentage)
    }
    unsafe fn targetReheat(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, targetReheat)
    }
    unsafe fn setTargetReheat_(&self, targetReheat: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTargetReheat : targetReheat)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWaterHeaterManagementClusterBoostStartedEvent(pub id);
impl std::ops::Deref for MTRWaterHeaterManagementClusterBoostStartedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWaterHeaterManagementClusterBoostStartedEvent {}
impl MTRWaterHeaterManagementClusterBoostStartedEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWaterHeaterManagementClusterBoostStartedEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWaterHeaterManagementClusterBoostStartedEvent {}
impl INSObject for MTRWaterHeaterManagementClusterBoostStartedEvent {}
impl PNSObject for MTRWaterHeaterManagementClusterBoostStartedEvent {}
impl std::convert::TryFrom<NSObject> for MTRWaterHeaterManagementClusterBoostStartedEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWaterHeaterManagementClusterBoostStartedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWaterHeaterManagementClusterBoostStartedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRWaterHeaterManagementClusterBoostStartedEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWaterHeaterManagementClusterBoostStartedEvent" ,)
        }
    }
}
impl IMTRWaterHeaterManagementClusterBoostStartedEvent
    for MTRWaterHeaterManagementClusterBoostStartedEvent
{
}
pub trait IMTRWaterHeaterManagementClusterBoostStartedEvent: Sized + std::ops::Deref {
    unsafe fn boostInfo(&self) -> MTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, boostInfo)
    }
    unsafe fn setBoostInfo_(
        &self,
        boostInfo: MTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBoostInfo : boostInfo)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWaterHeaterManagementClusterBoostEndedEvent(pub id);
impl std::ops::Deref for MTRWaterHeaterManagementClusterBoostEndedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWaterHeaterManagementClusterBoostEndedEvent {}
impl MTRWaterHeaterManagementClusterBoostEndedEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWaterHeaterManagementClusterBoostEndedEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWaterHeaterManagementClusterBoostEndedEvent {}
impl INSObject for MTRWaterHeaterManagementClusterBoostEndedEvent {}
impl PNSObject for MTRWaterHeaterManagementClusterBoostEndedEvent {}
impl std::convert::TryFrom<NSObject> for MTRWaterHeaterManagementClusterBoostEndedEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWaterHeaterManagementClusterBoostEndedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWaterHeaterManagementClusterBoostEndedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRWaterHeaterManagementClusterBoostEndedEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWaterHeaterManagementClusterBoostEndedEvent" ,)
        }
    }
}
impl IMTRWaterHeaterManagementClusterBoostEndedEvent
    for MTRWaterHeaterManagementClusterBoostEndedEvent
{
}
pub trait IMTRWaterHeaterManagementClusterBoostEndedEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityPriceClusterCommodityPriceComponentStruct(pub id);
impl std::ops::Deref for MTRCommodityPriceClusterCommodityPriceComponentStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityPriceClusterCommodityPriceComponentStruct {}
impl MTRCommodityPriceClusterCommodityPriceComponentStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityPriceClusterCommodityPriceComponentStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCommodityPriceClusterCommodityPriceComponentStruct {}
impl INSObject for MTRCommodityPriceClusterCommodityPriceComponentStruct {}
impl PNSObject for MTRCommodityPriceClusterCommodityPriceComponentStruct {}
impl std::convert::TryFrom<NSObject> for MTRCommodityPriceClusterCommodityPriceComponentStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommodityPriceClusterCommodityPriceComponentStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityPriceClusterCommodityPriceComponentStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityPriceClusterCommodityPriceComponentStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCommodityPriceClusterCommodityPriceComponentStruct" ,)
        }
    }
}
impl IMTRCommodityPriceClusterCommodityPriceComponentStruct
    for MTRCommodityPriceClusterCommodityPriceComponentStruct
{
}
pub trait IMTRCommodityPriceClusterCommodityPriceComponentStruct: Sized + std::ops::Deref {
    unsafe fn price(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, price)
    }
    unsafe fn setPrice_(&self, price: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPrice : price)
    }
    unsafe fn source(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, source)
    }
    unsafe fn setSource_(&self, source: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSource : source)
    }
    unsafe fn descriptionString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, descriptionString)
    }
    unsafe fn setDescriptionString_(&self, descriptionString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDescriptionString : descriptionString)
    }
    unsafe fn tariffComponentID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tariffComponentID)
    }
    unsafe fn setTariffComponentID_(&self, tariffComponentID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTariffComponentID : tariffComponentID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityPriceClusterCommodityPriceStruct(pub id);
impl std::ops::Deref for MTRCommodityPriceClusterCommodityPriceStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityPriceClusterCommodityPriceStruct {}
impl MTRCommodityPriceClusterCommodityPriceStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityPriceClusterCommodityPriceStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRCommodityPriceClusterCommodityPriceStruct {}
impl INSObject for MTRCommodityPriceClusterCommodityPriceStruct {}
impl PNSObject for MTRCommodityPriceClusterCommodityPriceStruct {}
impl std::convert::TryFrom<NSObject> for MTRCommodityPriceClusterCommodityPriceStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommodityPriceClusterCommodityPriceStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityPriceClusterCommodityPriceStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityPriceClusterCommodityPriceStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCommodityPriceClusterCommodityPriceStruct" ,)
        }
    }
}
impl IMTRCommodityPriceClusterCommodityPriceStruct
    for MTRCommodityPriceClusterCommodityPriceStruct
{
}
pub trait IMTRCommodityPriceClusterCommodityPriceStruct: Sized + std::ops::Deref {
    unsafe fn periodStart(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, periodStart)
    }
    unsafe fn setPeriodStart_(&self, periodStart: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPeriodStart : periodStart)
    }
    unsafe fn periodEnd(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, periodEnd)
    }
    unsafe fn setPeriodEnd_(&self, periodEnd: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPeriodEnd : periodEnd)
    }
    unsafe fn price(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, price)
    }
    unsafe fn setPrice_(&self, price: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPrice : price)
    }
    unsafe fn priceLevel(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, priceLevel)
    }
    unsafe fn setPriceLevel_(&self, priceLevel: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPriceLevel : priceLevel)
    }
    unsafe fn descriptionString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, descriptionString)
    }
    unsafe fn setDescriptionString_(&self, descriptionString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDescriptionString : descriptionString)
    }
    unsafe fn components(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, components)
    }
    unsafe fn setComponents_(&self, components: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setComponents : components)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityPriceClusterPriceChangeEvent(pub id);
impl std::ops::Deref for MTRCommodityPriceClusterPriceChangeEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityPriceClusterPriceChangeEvent {}
impl MTRCommodityPriceClusterPriceChangeEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityPriceClusterPriceChangeEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRCommodityPriceClusterPriceChangeEvent {}
impl INSObject for MTRCommodityPriceClusterPriceChangeEvent {}
impl PNSObject for MTRCommodityPriceClusterPriceChangeEvent {}
impl std::convert::TryFrom<NSObject> for MTRCommodityPriceClusterPriceChangeEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRCommodityPriceClusterPriceChangeEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityPriceClusterPriceChangeEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityPriceClusterPriceChangeEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRCommodityPriceClusterPriceChangeEvent")
        }
    }
}
impl IMTRCommodityPriceClusterPriceChangeEvent for MTRCommodityPriceClusterPriceChangeEvent {}
pub trait IMTRCommodityPriceClusterPriceChangeEvent: Sized + std::ops::Deref {
    unsafe fn currentPrice(&self) -> MTRCommodityPriceClusterCommodityPriceStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentPrice)
    }
    unsafe fn setCurrentPrice_(&self, currentPrice: MTRCommodityPriceClusterCommodityPriceStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrentPrice : currentPrice)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMessagesClusterMessageResponseOptionStruct(pub id);
impl std::ops::Deref for MTRMessagesClusterMessageResponseOptionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMessagesClusterMessageResponseOptionStruct {}
impl MTRMessagesClusterMessageResponseOptionStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMessagesClusterMessageResponseOptionStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMessagesClusterMessageResponseOptionStruct {}
impl INSObject for MTRMessagesClusterMessageResponseOptionStruct {}
impl PNSObject for MTRMessagesClusterMessageResponseOptionStruct {}
impl std::convert::TryFrom<NSObject> for MTRMessagesClusterMessageResponseOptionStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRMessagesClusterMessageResponseOptionStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMessagesClusterMessageResponseOptionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRMessagesClusterMessageResponseOptionStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRMessagesClusterMessageResponseOptionStruct" ,)
        }
    }
}
impl IMTRMessagesClusterMessageResponseOptionStruct
    for MTRMessagesClusterMessageResponseOptionStruct
{
}
pub trait IMTRMessagesClusterMessageResponseOptionStruct: Sized + std::ops::Deref {
    unsafe fn messageResponseID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, messageResponseID)
    }
    unsafe fn setMessageResponseID_(&self, messageResponseID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMessageResponseID : messageResponseID)
    }
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMessagesClusterMessageStruct(pub id);
impl std::ops::Deref for MTRMessagesClusterMessageStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMessagesClusterMessageStruct {}
impl MTRMessagesClusterMessageStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMessagesClusterMessageStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMessagesClusterMessageStruct {}
impl INSObject for MTRMessagesClusterMessageStruct {}
impl PNSObject for MTRMessagesClusterMessageStruct {}
impl std::convert::TryFrom<NSObject> for MTRMessagesClusterMessageStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMessagesClusterMessageStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMessagesClusterMessageStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRMessagesClusterMessageStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMessagesClusterMessageStruct")
        }
    }
}
impl IMTRMessagesClusterMessageStruct for MTRMessagesClusterMessageStruct {}
pub trait IMTRMessagesClusterMessageStruct: Sized + std::ops::Deref {
    unsafe fn messageID(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, messageID)
    }
    unsafe fn setMessageID_(&self, messageID: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMessageID : messageID)
    }
    unsafe fn priority(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, priority)
    }
    unsafe fn setPriority_(&self, priority: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPriority : priority)
    }
    unsafe fn messageControl(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, messageControl)
    }
    unsafe fn setMessageControl_(&self, messageControl: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMessageControl : messageControl)
    }
    unsafe fn startTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startTime)
    }
    unsafe fn setStartTime_(&self, startTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartTime : startTime)
    }
    unsafe fn duration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, duration)
    }
    unsafe fn setDuration_(&self, duration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDuration : duration)
    }
    unsafe fn messageText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, messageText)
    }
    unsafe fn setMessageText_(&self, messageText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMessageText : messageText)
    }
    unsafe fn responses(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, responses)
    }
    unsafe fn setResponses_(&self, responses: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setResponses : responses)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMessagesClusterMessageQueuedEvent(pub id);
impl std::ops::Deref for MTRMessagesClusterMessageQueuedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMessagesClusterMessageQueuedEvent {}
impl MTRMessagesClusterMessageQueuedEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMessagesClusterMessageQueuedEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMessagesClusterMessageQueuedEvent {}
impl INSObject for MTRMessagesClusterMessageQueuedEvent {}
impl PNSObject for MTRMessagesClusterMessageQueuedEvent {}
impl std::convert::TryFrom<NSObject> for MTRMessagesClusterMessageQueuedEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMessagesClusterMessageQueuedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMessagesClusterMessageQueuedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRMessagesClusterMessageQueuedEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMessagesClusterMessageQueuedEvent")
        }
    }
}
impl IMTRMessagesClusterMessageQueuedEvent for MTRMessagesClusterMessageQueuedEvent {}
pub trait IMTRMessagesClusterMessageQueuedEvent: Sized + std::ops::Deref {
    unsafe fn messageID(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, messageID)
    }
    unsafe fn setMessageID_(&self, messageID: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMessageID : messageID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMessagesClusterMessagePresentedEvent(pub id);
impl std::ops::Deref for MTRMessagesClusterMessagePresentedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMessagesClusterMessagePresentedEvent {}
impl MTRMessagesClusterMessagePresentedEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMessagesClusterMessagePresentedEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMessagesClusterMessagePresentedEvent {}
impl INSObject for MTRMessagesClusterMessagePresentedEvent {}
impl PNSObject for MTRMessagesClusterMessagePresentedEvent {}
impl std::convert::TryFrom<NSObject> for MTRMessagesClusterMessagePresentedEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMessagesClusterMessagePresentedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMessagesClusterMessagePresentedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRMessagesClusterMessagePresentedEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMessagesClusterMessagePresentedEvent")
        }
    }
}
impl IMTRMessagesClusterMessagePresentedEvent for MTRMessagesClusterMessagePresentedEvent {}
pub trait IMTRMessagesClusterMessagePresentedEvent: Sized + std::ops::Deref {
    unsafe fn messageID(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, messageID)
    }
    unsafe fn setMessageID_(&self, messageID: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMessageID : messageID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMessagesClusterMessageCompleteEvent(pub id);
impl std::ops::Deref for MTRMessagesClusterMessageCompleteEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMessagesClusterMessageCompleteEvent {}
impl MTRMessagesClusterMessageCompleteEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMessagesClusterMessageCompleteEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMessagesClusterMessageCompleteEvent {}
impl INSObject for MTRMessagesClusterMessageCompleteEvent {}
impl PNSObject for MTRMessagesClusterMessageCompleteEvent {}
impl std::convert::TryFrom<NSObject> for MTRMessagesClusterMessageCompleteEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMessagesClusterMessageCompleteEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMessagesClusterMessageCompleteEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRMessagesClusterMessageCompleteEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMessagesClusterMessageCompleteEvent")
        }
    }
}
impl IMTRMessagesClusterMessageCompleteEvent for MTRMessagesClusterMessageCompleteEvent {}
pub trait IMTRMessagesClusterMessageCompleteEvent: Sized + std::ops::Deref {
    unsafe fn messageID(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, messageID)
    }
    unsafe fn setMessageID_(&self, messageID: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMessageID : messageID)
    }
    unsafe fn responseID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, responseID)
    }
    unsafe fn setResponseID_(&self, responseID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setResponseID : responseID)
    }
    unsafe fn reply(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reply)
    }
    unsafe fn setReply_(&self, reply: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReply : reply)
    }
    unsafe fn futureMessagesPreference(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, futureMessagesPreference)
    }
    unsafe fn setFutureMessagesPreference_(&self, futureMessagesPreference: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFutureMessagesPreference : futureMessagesPreference)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementClusterCostStruct(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementClusterCostStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementClusterCostStruct {}
impl MTRDeviceEnergyManagementClusterCostStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterCostStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementClusterCostStruct {}
impl INSObject for MTRDeviceEnergyManagementClusterCostStruct {}
impl PNSObject for MTRDeviceEnergyManagementClusterCostStruct {}
impl std::convert::TryFrom<NSObject> for MTRDeviceEnergyManagementClusterCostStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementClusterCostStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterCostStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementClusterCostStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDeviceEnergyManagementClusterCostStruct")
        }
    }
}
impl IMTRDeviceEnergyManagementClusterCostStruct for MTRDeviceEnergyManagementClusterCostStruct {}
pub trait IMTRDeviceEnergyManagementClusterCostStruct: Sized + std::ops::Deref {
    unsafe fn costType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, costType)
    }
    unsafe fn setCostType_(&self, costType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCostType : costType)
    }
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
    unsafe fn decimalPoints(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, decimalPoints)
    }
    unsafe fn setDecimalPoints_(&self, decimalPoints: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDecimalPoints : decimalPoints)
    }
    unsafe fn currency(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currency)
    }
    unsafe fn setCurrency_(&self, currency: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrency : currency)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementClusterPowerAdjustStruct(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementClusterPowerAdjustStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementClusterPowerAdjustStruct {}
impl MTRDeviceEnergyManagementClusterPowerAdjustStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterPowerAdjustStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementClusterPowerAdjustStruct {}
impl INSObject for MTRDeviceEnergyManagementClusterPowerAdjustStruct {}
impl PNSObject for MTRDeviceEnergyManagementClusterPowerAdjustStruct {}
impl std::convert::TryFrom<NSObject> for MTRDeviceEnergyManagementClusterPowerAdjustStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementClusterPowerAdjustStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterPowerAdjustStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementClusterPowerAdjustStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDeviceEnergyManagementClusterPowerAdjustStruct" ,)
        }
    }
}
impl IMTRDeviceEnergyManagementClusterPowerAdjustStruct
    for MTRDeviceEnergyManagementClusterPowerAdjustStruct
{
}
pub trait IMTRDeviceEnergyManagementClusterPowerAdjustStruct: Sized + std::ops::Deref {
    unsafe fn minPower(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minPower)
    }
    unsafe fn setMinPower_(&self, minPower: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinPower : minPower)
    }
    unsafe fn maxPower(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxPower)
    }
    unsafe fn setMaxPower_(&self, maxPower: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxPower : maxPower)
    }
    unsafe fn minDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minDuration)
    }
    unsafe fn setMinDuration_(&self, minDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinDuration : minDuration)
    }
    unsafe fn maxDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxDuration)
    }
    unsafe fn setMaxDuration_(&self, maxDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxDuration : maxDuration)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementClusterPowerAdjustCapabilityStruct(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementClusterPowerAdjustCapabilityStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementClusterPowerAdjustCapabilityStruct {}
impl MTRDeviceEnergyManagementClusterPowerAdjustCapabilityStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterPowerAdjustCapabilityStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementClusterPowerAdjustCapabilityStruct {}
impl INSObject for MTRDeviceEnergyManagementClusterPowerAdjustCapabilityStruct {}
impl PNSObject for MTRDeviceEnergyManagementClusterPowerAdjustCapabilityStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRDeviceEnergyManagementClusterPowerAdjustCapabilityStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementClusterPowerAdjustCapabilityStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterPowerAdjustCapabilityStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementClusterPowerAdjustCapabilityStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDeviceEnergyManagementClusterPowerAdjustCapabilityStruct" ,)
        }
    }
}
impl IMTRDeviceEnergyManagementClusterPowerAdjustCapabilityStruct
    for MTRDeviceEnergyManagementClusterPowerAdjustCapabilityStruct
{
}
pub trait IMTRDeviceEnergyManagementClusterPowerAdjustCapabilityStruct:
    Sized + std::ops::Deref
{
    unsafe fn powerAdjustCapability(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, powerAdjustCapability)
    }
    unsafe fn setPowerAdjustCapability_(&self, powerAdjustCapability: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPowerAdjustCapability : powerAdjustCapability)
    }
    unsafe fn cause(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cause)
    }
    unsafe fn setCause_(&self, cause: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCause : cause)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementClusterSlotStruct(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementClusterSlotStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementClusterSlotStruct {}
impl MTRDeviceEnergyManagementClusterSlotStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterSlotStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementClusterSlotStruct {}
impl INSObject for MTRDeviceEnergyManagementClusterSlotStruct {}
impl PNSObject for MTRDeviceEnergyManagementClusterSlotStruct {}
impl std::convert::TryFrom<NSObject> for MTRDeviceEnergyManagementClusterSlotStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementClusterSlotStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterSlotStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementClusterSlotStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDeviceEnergyManagementClusterSlotStruct")
        }
    }
}
impl IMTRDeviceEnergyManagementClusterSlotStruct for MTRDeviceEnergyManagementClusterSlotStruct {}
pub trait IMTRDeviceEnergyManagementClusterSlotStruct: Sized + std::ops::Deref {
    unsafe fn minDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minDuration)
    }
    unsafe fn setMinDuration_(&self, minDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinDuration : minDuration)
    }
    unsafe fn maxDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxDuration)
    }
    unsafe fn setMaxDuration_(&self, maxDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxDuration : maxDuration)
    }
    unsafe fn defaultDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, defaultDuration)
    }
    unsafe fn setDefaultDuration_(&self, defaultDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDefaultDuration : defaultDuration)
    }
    unsafe fn elapsedSlotTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, elapsedSlotTime)
    }
    unsafe fn setElapsedSlotTime_(&self, elapsedSlotTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setElapsedSlotTime : elapsedSlotTime)
    }
    unsafe fn remainingSlotTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, remainingSlotTime)
    }
    unsafe fn setRemainingSlotTime_(&self, remainingSlotTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRemainingSlotTime : remainingSlotTime)
    }
    unsafe fn slotIsPausable(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, slotIsPausable)
    }
    unsafe fn setSlotIsPausable_(&self, slotIsPausable: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSlotIsPausable : slotIsPausable)
    }
    unsafe fn minPauseDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minPauseDuration)
    }
    unsafe fn setMinPauseDuration_(&self, minPauseDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinPauseDuration : minPauseDuration)
    }
    unsafe fn maxPauseDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxPauseDuration)
    }
    unsafe fn setMaxPauseDuration_(&self, maxPauseDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxPauseDuration : maxPauseDuration)
    }
    unsafe fn manufacturerESAState(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, manufacturerESAState)
    }
    unsafe fn setManufacturerESAState_(&self, manufacturerESAState: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setManufacturerESAState : manufacturerESAState)
    }
    unsafe fn nominalPower(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nominalPower)
    }
    unsafe fn setNominalPower_(&self, nominalPower: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNominalPower : nominalPower)
    }
    unsafe fn minPower(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minPower)
    }
    unsafe fn setMinPower_(&self, minPower: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinPower : minPower)
    }
    unsafe fn maxPower(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxPower)
    }
    unsafe fn setMaxPower_(&self, maxPower: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxPower : maxPower)
    }
    unsafe fn nominalEnergy(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nominalEnergy)
    }
    unsafe fn setNominalEnergy_(&self, nominalEnergy: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNominalEnergy : nominalEnergy)
    }
    unsafe fn costs(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, costs)
    }
    unsafe fn setCosts_(&self, costs: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCosts : costs)
    }
    unsafe fn minPowerAdjustment(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minPowerAdjustment)
    }
    unsafe fn setMinPowerAdjustment_(&self, minPowerAdjustment: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinPowerAdjustment : minPowerAdjustment)
    }
    unsafe fn maxPowerAdjustment(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxPowerAdjustment)
    }
    unsafe fn setMaxPowerAdjustment_(&self, maxPowerAdjustment: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxPowerAdjustment : maxPowerAdjustment)
    }
    unsafe fn minDurationAdjustment(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minDurationAdjustment)
    }
    unsafe fn setMinDurationAdjustment_(&self, minDurationAdjustment: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinDurationAdjustment : minDurationAdjustment)
    }
    unsafe fn maxDurationAdjustment(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxDurationAdjustment)
    }
    unsafe fn setMaxDurationAdjustment_(&self, maxDurationAdjustment: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxDurationAdjustment : maxDurationAdjustment)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementClusterForecastStruct(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementClusterForecastStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementClusterForecastStruct {}
impl MTRDeviceEnergyManagementClusterForecastStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterForecastStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementClusterForecastStruct {}
impl INSObject for MTRDeviceEnergyManagementClusterForecastStruct {}
impl PNSObject for MTRDeviceEnergyManagementClusterForecastStruct {}
impl std::convert::TryFrom<NSObject> for MTRDeviceEnergyManagementClusterForecastStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementClusterForecastStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterForecastStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementClusterForecastStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDeviceEnergyManagementClusterForecastStruct" ,)
        }
    }
}
impl IMTRDeviceEnergyManagementClusterForecastStruct
    for MTRDeviceEnergyManagementClusterForecastStruct
{
}
pub trait IMTRDeviceEnergyManagementClusterForecastStruct: Sized + std::ops::Deref {
    unsafe fn forecastID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, forecastID)
    }
    unsafe fn setForecastID_(&self, forecastID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setForecastID : forecastID)
    }
    unsafe fn activeSlotNumber(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, activeSlotNumber)
    }
    unsafe fn setActiveSlotNumber_(&self, activeSlotNumber: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActiveSlotNumber : activeSlotNumber)
    }
    unsafe fn startTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startTime)
    }
    unsafe fn setStartTime_(&self, startTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartTime : startTime)
    }
    unsafe fn endTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endTime)
    }
    unsafe fn setEndTime_(&self, endTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndTime : endTime)
    }
    unsafe fn earliestStartTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, earliestStartTime)
    }
    unsafe fn setEarliestStartTime_(&self, earliestStartTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEarliestStartTime : earliestStartTime)
    }
    unsafe fn latestEndTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, latestEndTime)
    }
    unsafe fn setLatestEndTime_(&self, latestEndTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLatestEndTime : latestEndTime)
    }
    unsafe fn isPausable(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isPausable)
    }
    unsafe fn setIsPausable_(&self, isPausable: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIsPausable : isPausable)
    }
    unsafe fn slots(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, slots)
    }
    unsafe fn setSlots_(&self, slots: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSlots : slots)
    }
    unsafe fn forecastUpdateReason(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, forecastUpdateReason)
    }
    unsafe fn setForecastUpdateReason_(&self, forecastUpdateReason: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setForecastUpdateReason : forecastUpdateReason)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementClusterConstraintsStruct(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementClusterConstraintsStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementClusterConstraintsStruct {}
impl MTRDeviceEnergyManagementClusterConstraintsStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterConstraintsStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementClusterConstraintsStruct {}
impl INSObject for MTRDeviceEnergyManagementClusterConstraintsStruct {}
impl PNSObject for MTRDeviceEnergyManagementClusterConstraintsStruct {}
impl std::convert::TryFrom<NSObject> for MTRDeviceEnergyManagementClusterConstraintsStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementClusterConstraintsStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterConstraintsStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementClusterConstraintsStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDeviceEnergyManagementClusterConstraintsStruct" ,)
        }
    }
}
impl IMTRDeviceEnergyManagementClusterConstraintsStruct
    for MTRDeviceEnergyManagementClusterConstraintsStruct
{
}
pub trait IMTRDeviceEnergyManagementClusterConstraintsStruct: Sized + std::ops::Deref {
    unsafe fn startTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startTime)
    }
    unsafe fn setStartTime_(&self, startTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartTime : startTime)
    }
    unsafe fn duration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, duration)
    }
    unsafe fn setDuration_(&self, duration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDuration : duration)
    }
    unsafe fn nominalPower(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nominalPower)
    }
    unsafe fn setNominalPower_(&self, nominalPower: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNominalPower : nominalPower)
    }
    unsafe fn maximumEnergy(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maximumEnergy)
    }
    unsafe fn setMaximumEnergy_(&self, maximumEnergy: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaximumEnergy : maximumEnergy)
    }
    unsafe fn loadControl(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, loadControl)
    }
    unsafe fn setLoadControl_(&self, loadControl: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLoadControl : loadControl)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementClusterSlotAdjustmentStruct(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementClusterSlotAdjustmentStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementClusterSlotAdjustmentStruct {}
impl MTRDeviceEnergyManagementClusterSlotAdjustmentStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterSlotAdjustmentStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementClusterSlotAdjustmentStruct {}
impl INSObject for MTRDeviceEnergyManagementClusterSlotAdjustmentStruct {}
impl PNSObject for MTRDeviceEnergyManagementClusterSlotAdjustmentStruct {}
impl std::convert::TryFrom<NSObject> for MTRDeviceEnergyManagementClusterSlotAdjustmentStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementClusterSlotAdjustmentStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterSlotAdjustmentStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementClusterSlotAdjustmentStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDeviceEnergyManagementClusterSlotAdjustmentStruct" ,)
        }
    }
}
impl IMTRDeviceEnergyManagementClusterSlotAdjustmentStruct
    for MTRDeviceEnergyManagementClusterSlotAdjustmentStruct
{
}
pub trait IMTRDeviceEnergyManagementClusterSlotAdjustmentStruct: Sized + std::ops::Deref {
    unsafe fn slotIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, slotIndex)
    }
    unsafe fn setSlotIndex_(&self, slotIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSlotIndex : slotIndex)
    }
    unsafe fn nominalPower(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nominalPower)
    }
    unsafe fn setNominalPower_(&self, nominalPower: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNominalPower : nominalPower)
    }
    unsafe fn duration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, duration)
    }
    unsafe fn setDuration_(&self, duration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDuration : duration)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementClusterPowerAdjustStartEvent(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementClusterPowerAdjustStartEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementClusterPowerAdjustStartEvent {}
impl MTRDeviceEnergyManagementClusterPowerAdjustStartEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterPowerAdjustStartEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementClusterPowerAdjustStartEvent {}
impl INSObject for MTRDeviceEnergyManagementClusterPowerAdjustStartEvent {}
impl PNSObject for MTRDeviceEnergyManagementClusterPowerAdjustStartEvent {}
impl std::convert::TryFrom<NSObject> for MTRDeviceEnergyManagementClusterPowerAdjustStartEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementClusterPowerAdjustStartEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterPowerAdjustStartEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementClusterPowerAdjustStartEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDeviceEnergyManagementClusterPowerAdjustStartEvent" ,)
        }
    }
}
impl IMTRDeviceEnergyManagementClusterPowerAdjustStartEvent
    for MTRDeviceEnergyManagementClusterPowerAdjustStartEvent
{
}
pub trait IMTRDeviceEnergyManagementClusterPowerAdjustStartEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementClusterPowerAdjustEndEvent(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementClusterPowerAdjustEndEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementClusterPowerAdjustEndEvent {}
impl MTRDeviceEnergyManagementClusterPowerAdjustEndEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterPowerAdjustEndEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementClusterPowerAdjustEndEvent {}
impl INSObject for MTRDeviceEnergyManagementClusterPowerAdjustEndEvent {}
impl PNSObject for MTRDeviceEnergyManagementClusterPowerAdjustEndEvent {}
impl std::convert::TryFrom<NSObject> for MTRDeviceEnergyManagementClusterPowerAdjustEndEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementClusterPowerAdjustEndEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterPowerAdjustEndEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementClusterPowerAdjustEndEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDeviceEnergyManagementClusterPowerAdjustEndEvent" ,)
        }
    }
}
impl IMTRDeviceEnergyManagementClusterPowerAdjustEndEvent
    for MTRDeviceEnergyManagementClusterPowerAdjustEndEvent
{
}
pub trait IMTRDeviceEnergyManagementClusterPowerAdjustEndEvent: Sized + std::ops::Deref {
    unsafe fn cause(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cause)
    }
    unsafe fn setCause_(&self, cause: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCause : cause)
    }
    unsafe fn duration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, duration)
    }
    unsafe fn setDuration_(&self, duration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDuration : duration)
    }
    unsafe fn energyUse(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, energyUse)
    }
    unsafe fn setEnergyUse_(&self, energyUse: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEnergyUse : energyUse)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementClusterPausedEvent(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementClusterPausedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementClusterPausedEvent {}
impl MTRDeviceEnergyManagementClusterPausedEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterPausedEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementClusterPausedEvent {}
impl INSObject for MTRDeviceEnergyManagementClusterPausedEvent {}
impl PNSObject for MTRDeviceEnergyManagementClusterPausedEvent {}
impl std::convert::TryFrom<NSObject> for MTRDeviceEnergyManagementClusterPausedEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementClusterPausedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterPausedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementClusterPausedEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDeviceEnergyManagementClusterPausedEvent")
        }
    }
}
impl IMTRDeviceEnergyManagementClusterPausedEvent for MTRDeviceEnergyManagementClusterPausedEvent {}
pub trait IMTRDeviceEnergyManagementClusterPausedEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementClusterResumedEvent(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementClusterResumedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementClusterResumedEvent {}
impl MTRDeviceEnergyManagementClusterResumedEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterResumedEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementClusterResumedEvent {}
impl INSObject for MTRDeviceEnergyManagementClusterResumedEvent {}
impl PNSObject for MTRDeviceEnergyManagementClusterResumedEvent {}
impl std::convert::TryFrom<NSObject> for MTRDeviceEnergyManagementClusterResumedEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementClusterResumedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterResumedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementClusterResumedEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDeviceEnergyManagementClusterResumedEvent" ,)
        }
    }
}
impl IMTRDeviceEnergyManagementClusterResumedEvent
    for MTRDeviceEnergyManagementClusterResumedEvent
{
}
pub trait IMTRDeviceEnergyManagementClusterResumedEvent: Sized + std::ops::Deref {
    unsafe fn cause(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cause)
    }
    unsafe fn setCause_(&self, cause: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCause : cause)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREnergyEVSEClusterChargingTargetStruct(pub id);
impl std::ops::Deref for MTREnergyEVSEClusterChargingTargetStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREnergyEVSEClusterChargingTargetStruct {}
impl MTREnergyEVSEClusterChargingTargetStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterChargingTargetStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTREnergyEVSEClusterChargingTargetStruct {}
impl INSObject for MTREnergyEVSEClusterChargingTargetStruct {}
impl PNSObject for MTREnergyEVSEClusterChargingTargetStruct {}
impl std::convert::TryFrom<NSObject> for MTREnergyEVSEClusterChargingTargetStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTREnergyEVSEClusterChargingTargetStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterChargingTargetStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTREnergyEVSEClusterChargingTargetStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTREnergyEVSEClusterChargingTargetStruct")
        }
    }
}
impl IMTREnergyEVSEClusterChargingTargetStruct for MTREnergyEVSEClusterChargingTargetStruct {}
pub trait IMTREnergyEVSEClusterChargingTargetStruct: Sized + std::ops::Deref {
    unsafe fn targetTimeMinutesPastMidnight(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, targetTimeMinutesPastMidnight)
    }
    unsafe fn setTargetTimeMinutesPastMidnight_(&self, targetTimeMinutesPastMidnight: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTargetTimeMinutesPastMidnight : targetTimeMinutesPastMidnight)
    }
    unsafe fn targetSoC(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, targetSoC)
    }
    unsafe fn setTargetSoC_(&self, targetSoC: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTargetSoC : targetSoC)
    }
    unsafe fn addedEnergy(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, addedEnergy)
    }
    unsafe fn setAddedEnergy_(&self, addedEnergy: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAddedEnergy : addedEnergy)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREnergyEVSEClusterChargingTargetScheduleStruct(pub id);
impl std::ops::Deref for MTREnergyEVSEClusterChargingTargetScheduleStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREnergyEVSEClusterChargingTargetScheduleStruct {}
impl MTREnergyEVSEClusterChargingTargetScheduleStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterChargingTargetScheduleStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTREnergyEVSEClusterChargingTargetScheduleStruct {}
impl INSObject for MTREnergyEVSEClusterChargingTargetScheduleStruct {}
impl PNSObject for MTREnergyEVSEClusterChargingTargetScheduleStruct {}
impl std::convert::TryFrom<NSObject> for MTREnergyEVSEClusterChargingTargetScheduleStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTREnergyEVSEClusterChargingTargetScheduleStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterChargingTargetScheduleStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTREnergyEVSEClusterChargingTargetScheduleStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTREnergyEVSEClusterChargingTargetScheduleStruct" ,)
        }
    }
}
impl IMTREnergyEVSEClusterChargingTargetScheduleStruct
    for MTREnergyEVSEClusterChargingTargetScheduleStruct
{
}
pub trait IMTREnergyEVSEClusterChargingTargetScheduleStruct: Sized + std::ops::Deref {
    unsafe fn dayOfWeekForSequence(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dayOfWeekForSequence)
    }
    unsafe fn setDayOfWeekForSequence_(&self, dayOfWeekForSequence: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDayOfWeekForSequence : dayOfWeekForSequence)
    }
    unsafe fn chargingTargets(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, chargingTargets)
    }
    unsafe fn setChargingTargets_(&self, chargingTargets: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChargingTargets : chargingTargets)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREnergyEVSEClusterEVConnectedEvent(pub id);
impl std::ops::Deref for MTREnergyEVSEClusterEVConnectedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREnergyEVSEClusterEVConnectedEvent {}
impl MTREnergyEVSEClusterEVConnectedEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterEVConnectedEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTREnergyEVSEClusterEVConnectedEvent {}
impl INSObject for MTREnergyEVSEClusterEVConnectedEvent {}
impl PNSObject for MTREnergyEVSEClusterEVConnectedEvent {}
impl std::convert::TryFrom<NSObject> for MTREnergyEVSEClusterEVConnectedEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTREnergyEVSEClusterEVConnectedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterEVConnectedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTREnergyEVSEClusterEVConnectedEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTREnergyEVSEClusterEVConnectedEvent")
        }
    }
}
impl IMTREnergyEVSEClusterEVConnectedEvent for MTREnergyEVSEClusterEVConnectedEvent {}
pub trait IMTREnergyEVSEClusterEVConnectedEvent: Sized + std::ops::Deref {
    unsafe fn sessionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sessionID)
    }
    unsafe fn setSessionID_(&self, sessionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSessionID : sessionID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREnergyEVSEClusterEVNotDetectedEvent(pub id);
impl std::ops::Deref for MTREnergyEVSEClusterEVNotDetectedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREnergyEVSEClusterEVNotDetectedEvent {}
impl MTREnergyEVSEClusterEVNotDetectedEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterEVNotDetectedEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTREnergyEVSEClusterEVNotDetectedEvent {}
impl INSObject for MTREnergyEVSEClusterEVNotDetectedEvent {}
impl PNSObject for MTREnergyEVSEClusterEVNotDetectedEvent {}
impl std::convert::TryFrom<NSObject> for MTREnergyEVSEClusterEVNotDetectedEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTREnergyEVSEClusterEVNotDetectedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterEVNotDetectedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTREnergyEVSEClusterEVNotDetectedEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTREnergyEVSEClusterEVNotDetectedEvent")
        }
    }
}
impl IMTREnergyEVSEClusterEVNotDetectedEvent for MTREnergyEVSEClusterEVNotDetectedEvent {}
pub trait IMTREnergyEVSEClusterEVNotDetectedEvent: Sized + std::ops::Deref {
    unsafe fn sessionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sessionID)
    }
    unsafe fn setSessionID_(&self, sessionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSessionID : sessionID)
    }
    unsafe fn state(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, state)
    }
    unsafe fn setState_(&self, state: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setState : state)
    }
    unsafe fn sessionDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sessionDuration)
    }
    unsafe fn setSessionDuration_(&self, sessionDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSessionDuration : sessionDuration)
    }
    unsafe fn sessionEnergyCharged(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sessionEnergyCharged)
    }
    unsafe fn setSessionEnergyCharged_(&self, sessionEnergyCharged: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSessionEnergyCharged : sessionEnergyCharged)
    }
    unsafe fn sessionEnergyDischarged(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sessionEnergyDischarged)
    }
    unsafe fn setSessionEnergyDischarged_(&self, sessionEnergyDischarged: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSessionEnergyDischarged : sessionEnergyDischarged)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREnergyEVSEClusterEnergyTransferStartedEvent(pub id);
impl std::ops::Deref for MTREnergyEVSEClusterEnergyTransferStartedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREnergyEVSEClusterEnergyTransferStartedEvent {}
impl MTREnergyEVSEClusterEnergyTransferStartedEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterEnergyTransferStartedEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTREnergyEVSEClusterEnergyTransferStartedEvent {}
impl INSObject for MTREnergyEVSEClusterEnergyTransferStartedEvent {}
impl PNSObject for MTREnergyEVSEClusterEnergyTransferStartedEvent {}
impl std::convert::TryFrom<NSObject> for MTREnergyEVSEClusterEnergyTransferStartedEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTREnergyEVSEClusterEnergyTransferStartedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterEnergyTransferStartedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTREnergyEVSEClusterEnergyTransferStartedEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTREnergyEVSEClusterEnergyTransferStartedEvent" ,)
        }
    }
}
impl IMTREnergyEVSEClusterEnergyTransferStartedEvent
    for MTREnergyEVSEClusterEnergyTransferStartedEvent
{
}
pub trait IMTREnergyEVSEClusterEnergyTransferStartedEvent: Sized + std::ops::Deref {
    unsafe fn sessionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sessionID)
    }
    unsafe fn setSessionID_(&self, sessionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSessionID : sessionID)
    }
    unsafe fn state(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, state)
    }
    unsafe fn setState_(&self, state: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setState : state)
    }
    unsafe fn maximumCurrent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maximumCurrent)
    }
    unsafe fn setMaximumCurrent_(&self, maximumCurrent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaximumCurrent : maximumCurrent)
    }
    unsafe fn maximumDischargeCurrent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maximumDischargeCurrent)
    }
    unsafe fn setMaximumDischargeCurrent_(&self, maximumDischargeCurrent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaximumDischargeCurrent : maximumDischargeCurrent)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREnergyEVSEClusterEnergyTransferStoppedEvent(pub id);
impl std::ops::Deref for MTREnergyEVSEClusterEnergyTransferStoppedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREnergyEVSEClusterEnergyTransferStoppedEvent {}
impl MTREnergyEVSEClusterEnergyTransferStoppedEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterEnergyTransferStoppedEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTREnergyEVSEClusterEnergyTransferStoppedEvent {}
impl INSObject for MTREnergyEVSEClusterEnergyTransferStoppedEvent {}
impl PNSObject for MTREnergyEVSEClusterEnergyTransferStoppedEvent {}
impl std::convert::TryFrom<NSObject> for MTREnergyEVSEClusterEnergyTransferStoppedEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTREnergyEVSEClusterEnergyTransferStoppedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterEnergyTransferStoppedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTREnergyEVSEClusterEnergyTransferStoppedEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTREnergyEVSEClusterEnergyTransferStoppedEvent" ,)
        }
    }
}
impl IMTREnergyEVSEClusterEnergyTransferStoppedEvent
    for MTREnergyEVSEClusterEnergyTransferStoppedEvent
{
}
pub trait IMTREnergyEVSEClusterEnergyTransferStoppedEvent: Sized + std::ops::Deref {
    unsafe fn sessionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sessionID)
    }
    unsafe fn setSessionID_(&self, sessionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSessionID : sessionID)
    }
    unsafe fn state(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, state)
    }
    unsafe fn setState_(&self, state: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setState : state)
    }
    unsafe fn reason(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reason)
    }
    unsafe fn setReason_(&self, reason: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReason : reason)
    }
    unsafe fn energyTransferred(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, energyTransferred)
    }
    unsafe fn setEnergyTransferred_(&self, energyTransferred: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEnergyTransferred : energyTransferred)
    }
    unsafe fn energyDischarged(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, energyDischarged)
    }
    unsafe fn setEnergyDischarged_(&self, energyDischarged: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEnergyDischarged : energyDischarged)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREnergyEVSEClusterFaultEvent(pub id);
impl std::ops::Deref for MTREnergyEVSEClusterFaultEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREnergyEVSEClusterFaultEvent {}
impl MTREnergyEVSEClusterFaultEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterFaultEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTREnergyEVSEClusterFaultEvent {}
impl INSObject for MTREnergyEVSEClusterFaultEvent {}
impl PNSObject for MTREnergyEVSEClusterFaultEvent {}
impl std::convert::TryFrom<NSObject> for MTREnergyEVSEClusterFaultEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTREnergyEVSEClusterFaultEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterFaultEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTREnergyEVSEClusterFaultEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTREnergyEVSEClusterFaultEvent")
        }
    }
}
impl IMTREnergyEVSEClusterFaultEvent for MTREnergyEVSEClusterFaultEvent {}
pub trait IMTREnergyEVSEClusterFaultEvent: Sized + std::ops::Deref {
    unsafe fn sessionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sessionID)
    }
    unsafe fn setSessionID_(&self, sessionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSessionID : sessionID)
    }
    unsafe fn state(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, state)
    }
    unsafe fn setState_(&self, state: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setState : state)
    }
    unsafe fn faultStatePreviousState(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, faultStatePreviousState)
    }
    unsafe fn setFaultStatePreviousState_(&self, faultStatePreviousState: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFaultStatePreviousState : faultStatePreviousState)
    }
    unsafe fn faultStateCurrentState(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, faultStateCurrentState)
    }
    unsafe fn setFaultStateCurrentState_(&self, faultStateCurrentState: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFaultStateCurrentState : faultStateCurrentState)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREnergyEVSEClusterRFIDEvent(pub id);
impl std::ops::Deref for MTREnergyEVSEClusterRFIDEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREnergyEVSEClusterRFIDEvent {}
impl MTREnergyEVSEClusterRFIDEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterRFIDEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTREnergyEVSEClusterRFIDEvent {}
impl INSObject for MTREnergyEVSEClusterRFIDEvent {}
impl PNSObject for MTREnergyEVSEClusterRFIDEvent {}
impl std::convert::TryFrom<NSObject> for MTREnergyEVSEClusterRFIDEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTREnergyEVSEClusterRFIDEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterRFIDEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTREnergyEVSEClusterRFIDEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTREnergyEVSEClusterRFIDEvent")
        }
    }
}
impl IMTREnergyEVSEClusterRFIDEvent for MTREnergyEVSEClusterRFIDEvent {}
pub trait IMTREnergyEVSEClusterRFIDEvent: Sized + std::ops::Deref {
    unsafe fn uid(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, uid)
    }
    unsafe fn setUid_(&self, uid: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUid : uid)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREnergyPreferenceClusterBalanceStruct(pub id);
impl std::ops::Deref for MTREnergyPreferenceClusterBalanceStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREnergyPreferenceClusterBalanceStruct {}
impl MTREnergyPreferenceClusterBalanceStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTREnergyPreferenceClusterBalanceStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTREnergyPreferenceClusterBalanceStruct {}
impl INSObject for MTREnergyPreferenceClusterBalanceStruct {}
impl PNSObject for MTREnergyPreferenceClusterBalanceStruct {}
impl std::convert::TryFrom<NSObject> for MTREnergyPreferenceClusterBalanceStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTREnergyPreferenceClusterBalanceStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREnergyPreferenceClusterBalanceStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTREnergyPreferenceClusterBalanceStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTREnergyPreferenceClusterBalanceStruct")
        }
    }
}
impl IMTREnergyPreferenceClusterBalanceStruct for MTREnergyPreferenceClusterBalanceStruct {}
pub trait IMTREnergyPreferenceClusterBalanceStruct: Sized + std::ops::Deref {
    unsafe fn step(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, step)
    }
    unsafe fn setStep_(&self, step: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStep : step)
    }
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPowerTopologyClusterCircuitNodeStruct(pub id);
impl std::ops::Deref for MTRPowerTopologyClusterCircuitNodeStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPowerTopologyClusterCircuitNodeStruct {}
impl MTRPowerTopologyClusterCircuitNodeStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPowerTopologyClusterCircuitNodeStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRPowerTopologyClusterCircuitNodeStruct {}
impl INSObject for MTRPowerTopologyClusterCircuitNodeStruct {}
impl PNSObject for MTRPowerTopologyClusterCircuitNodeStruct {}
impl std::convert::TryFrom<NSObject> for MTRPowerTopologyClusterCircuitNodeStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRPowerTopologyClusterCircuitNodeStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPowerTopologyClusterCircuitNodeStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRPowerTopologyClusterCircuitNodeStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRPowerTopologyClusterCircuitNodeStruct")
        }
    }
}
impl IMTRPowerTopologyClusterCircuitNodeStruct for MTRPowerTopologyClusterCircuitNodeStruct {}
pub trait IMTRPowerTopologyClusterCircuitNodeStruct: Sized + std::ops::Deref {
    unsafe fn node(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, node)
    }
    unsafe fn setNode_(&self, node: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNode : node)
    }
    unsafe fn endpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn setEndpoint_(&self, endpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoint : endpoint)
    }
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREnergyEVSEModeClusterModeTagStruct(pub id);
impl std::ops::Deref for MTREnergyEVSEModeClusterModeTagStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREnergyEVSEModeClusterModeTagStruct {}
impl MTREnergyEVSEModeClusterModeTagStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTREnergyEVSEModeClusterModeTagStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTREnergyEVSEModeClusterModeTagStruct {}
impl INSObject for MTREnergyEVSEModeClusterModeTagStruct {}
impl PNSObject for MTREnergyEVSEModeClusterModeTagStruct {}
impl std::convert::TryFrom<NSObject> for MTREnergyEVSEModeClusterModeTagStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTREnergyEVSEModeClusterModeTagStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREnergyEVSEModeClusterModeTagStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTREnergyEVSEModeClusterModeTagStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTREnergyEVSEModeClusterModeTagStruct")
        }
    }
}
impl IMTREnergyEVSEModeClusterModeTagStruct for MTREnergyEVSEModeClusterModeTagStruct {}
pub trait IMTREnergyEVSEModeClusterModeTagStruct: Sized + std::ops::Deref {
    unsafe fn mfgCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mfgCode)
    }
    unsafe fn setMfgCode_(&self, mfgCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMfgCode : mfgCode)
    }
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREnergyEVSEModeClusterModeOptionStruct(pub id);
impl std::ops::Deref for MTREnergyEVSEModeClusterModeOptionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREnergyEVSEModeClusterModeOptionStruct {}
impl MTREnergyEVSEModeClusterModeOptionStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTREnergyEVSEModeClusterModeOptionStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTREnergyEVSEModeClusterModeOptionStruct {}
impl INSObject for MTREnergyEVSEModeClusterModeOptionStruct {}
impl PNSObject for MTREnergyEVSEModeClusterModeOptionStruct {}
impl std::convert::TryFrom<NSObject> for MTREnergyEVSEModeClusterModeOptionStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTREnergyEVSEModeClusterModeOptionStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREnergyEVSEModeClusterModeOptionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTREnergyEVSEModeClusterModeOptionStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTREnergyEVSEModeClusterModeOptionStruct")
        }
    }
}
impl IMTREnergyEVSEModeClusterModeOptionStruct for MTREnergyEVSEModeClusterModeOptionStruct {}
pub trait IMTREnergyEVSEModeClusterModeOptionStruct: Sized + std::ops::Deref {
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
    unsafe fn mode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mode)
    }
    unsafe fn setMode_(&self, mode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMode : mode)
    }
    unsafe fn modeTags(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, modeTags)
    }
    unsafe fn setModeTags_(&self, modeTags: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setModeTags : modeTags)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWaterHeaterModeClusterModeTagStruct(pub id);
impl std::ops::Deref for MTRWaterHeaterModeClusterModeTagStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWaterHeaterModeClusterModeTagStruct {}
impl MTRWaterHeaterModeClusterModeTagStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWaterHeaterModeClusterModeTagStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRWaterHeaterModeClusterModeTagStruct {}
impl INSObject for MTRWaterHeaterModeClusterModeTagStruct {}
impl PNSObject for MTRWaterHeaterModeClusterModeTagStruct {}
impl std::convert::TryFrom<NSObject> for MTRWaterHeaterModeClusterModeTagStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRWaterHeaterModeClusterModeTagStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWaterHeaterModeClusterModeTagStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRWaterHeaterModeClusterModeTagStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRWaterHeaterModeClusterModeTagStruct")
        }
    }
}
impl IMTRWaterHeaterModeClusterModeTagStruct for MTRWaterHeaterModeClusterModeTagStruct {}
pub trait IMTRWaterHeaterModeClusterModeTagStruct: Sized + std::ops::Deref {
    unsafe fn mfgCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mfgCode)
    }
    unsafe fn setMfgCode_(&self, mfgCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMfgCode : mfgCode)
    }
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWaterHeaterModeClusterModeOptionStruct(pub id);
impl std::ops::Deref for MTRWaterHeaterModeClusterModeOptionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWaterHeaterModeClusterModeOptionStruct {}
impl MTRWaterHeaterModeClusterModeOptionStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWaterHeaterModeClusterModeOptionStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRWaterHeaterModeClusterModeOptionStruct {}
impl INSObject for MTRWaterHeaterModeClusterModeOptionStruct {}
impl PNSObject for MTRWaterHeaterModeClusterModeOptionStruct {}
impl std::convert::TryFrom<NSObject> for MTRWaterHeaterModeClusterModeOptionStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWaterHeaterModeClusterModeOptionStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWaterHeaterModeClusterModeOptionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRWaterHeaterModeClusterModeOptionStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRWaterHeaterModeClusterModeOptionStruct")
        }
    }
}
impl IMTRWaterHeaterModeClusterModeOptionStruct for MTRWaterHeaterModeClusterModeOptionStruct {}
pub trait IMTRWaterHeaterModeClusterModeOptionStruct: Sized + std::ops::Deref {
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
    unsafe fn mode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mode)
    }
    unsafe fn setMode_(&self, mode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMode : mode)
    }
    unsafe fn modeTags(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, modeTags)
    }
    unsafe fn setModeTags_(&self, modeTags: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setModeTags : modeTags)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementModeClusterModeTagStruct(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementModeClusterModeTagStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementModeClusterModeTagStruct {}
impl MTRDeviceEnergyManagementModeClusterModeTagStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementModeClusterModeTagStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementModeClusterModeTagStruct {}
impl INSObject for MTRDeviceEnergyManagementModeClusterModeTagStruct {}
impl PNSObject for MTRDeviceEnergyManagementModeClusterModeTagStruct {}
impl std::convert::TryFrom<NSObject> for MTRDeviceEnergyManagementModeClusterModeTagStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementModeClusterModeTagStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementModeClusterModeTagStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementModeClusterModeTagStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDeviceEnergyManagementModeClusterModeTagStruct" ,)
        }
    }
}
impl IMTRDeviceEnergyManagementModeClusterModeTagStruct
    for MTRDeviceEnergyManagementModeClusterModeTagStruct
{
}
pub trait IMTRDeviceEnergyManagementModeClusterModeTagStruct: Sized + std::ops::Deref {
    unsafe fn mfgCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mfgCode)
    }
    unsafe fn setMfgCode_(&self, mfgCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMfgCode : mfgCode)
    }
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementModeClusterModeOptionStruct(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementModeClusterModeOptionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementModeClusterModeOptionStruct {}
impl MTRDeviceEnergyManagementModeClusterModeOptionStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementModeClusterModeOptionStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementModeClusterModeOptionStruct {}
impl INSObject for MTRDeviceEnergyManagementModeClusterModeOptionStruct {}
impl PNSObject for MTRDeviceEnergyManagementModeClusterModeOptionStruct {}
impl std::convert::TryFrom<NSObject> for MTRDeviceEnergyManagementModeClusterModeOptionStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementModeClusterModeOptionStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementModeClusterModeOptionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementModeClusterModeOptionStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDeviceEnergyManagementModeClusterModeOptionStruct" ,)
        }
    }
}
impl IMTRDeviceEnergyManagementModeClusterModeOptionStruct
    for MTRDeviceEnergyManagementModeClusterModeOptionStruct
{
}
pub trait IMTRDeviceEnergyManagementModeClusterModeOptionStruct: Sized + std::ops::Deref {
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
    unsafe fn mode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mode)
    }
    unsafe fn setMode_(&self, mode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMode : mode)
    }
    unsafe fn modeTags(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, modeTags)
    }
    unsafe fn setModeTags_(&self, modeTags: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setModeTags : modeTags)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRElectricalGridConditionsClusterElectricalGridConditionsStruct(pub id);
impl std::ops::Deref for MTRElectricalGridConditionsClusterElectricalGridConditionsStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRElectricalGridConditionsClusterElectricalGridConditionsStruct {}
impl MTRElectricalGridConditionsClusterElectricalGridConditionsStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRElectricalGridConditionsClusterElectricalGridConditionsStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRElectricalGridConditionsClusterElectricalGridConditionsStruct {}
impl INSObject for MTRElectricalGridConditionsClusterElectricalGridConditionsStruct {}
impl PNSObject for MTRElectricalGridConditionsClusterElectricalGridConditionsStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRElectricalGridConditionsClusterElectricalGridConditionsStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRElectricalGridConditionsClusterElectricalGridConditionsStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRElectricalGridConditionsClusterElectricalGridConditionsStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRElectricalGridConditionsClusterElectricalGridConditionsStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRElectricalGridConditionsClusterElectricalGridConditionsStruct" ,)
        }
    }
}
impl IMTRElectricalGridConditionsClusterElectricalGridConditionsStruct
    for MTRElectricalGridConditionsClusterElectricalGridConditionsStruct
{
}
pub trait IMTRElectricalGridConditionsClusterElectricalGridConditionsStruct:
    Sized + std::ops::Deref
{
    unsafe fn periodStart(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, periodStart)
    }
    unsafe fn setPeriodStart_(&self, periodStart: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPeriodStart : periodStart)
    }
    unsafe fn periodEnd(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, periodEnd)
    }
    unsafe fn setPeriodEnd_(&self, periodEnd: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPeriodEnd : periodEnd)
    }
    unsafe fn gridCarbonIntensity(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, gridCarbonIntensity)
    }
    unsafe fn setGridCarbonIntensity_(&self, gridCarbonIntensity: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGridCarbonIntensity : gridCarbonIntensity)
    }
    unsafe fn gridCarbonLevel(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, gridCarbonLevel)
    }
    unsafe fn setGridCarbonLevel_(&self, gridCarbonLevel: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGridCarbonLevel : gridCarbonLevel)
    }
    unsafe fn localCarbonIntensity(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localCarbonIntensity)
    }
    unsafe fn setLocalCarbonIntensity_(&self, localCarbonIntensity: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocalCarbonIntensity : localCarbonIntensity)
    }
    unsafe fn localCarbonLevel(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localCarbonLevel)
    }
    unsafe fn setLocalCarbonLevel_(&self, localCarbonLevel: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocalCarbonLevel : localCarbonLevel)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRElectricalGridConditionsClusterCurrentConditionsChangedEvent(pub id);
impl std::ops::Deref for MTRElectricalGridConditionsClusterCurrentConditionsChangedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRElectricalGridConditionsClusterCurrentConditionsChangedEvent {}
impl MTRElectricalGridConditionsClusterCurrentConditionsChangedEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRElectricalGridConditionsClusterCurrentConditionsChangedEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRElectricalGridConditionsClusterCurrentConditionsChangedEvent {}
impl INSObject for MTRElectricalGridConditionsClusterCurrentConditionsChangedEvent {}
impl PNSObject for MTRElectricalGridConditionsClusterCurrentConditionsChangedEvent {}
impl std::convert::TryFrom<NSObject>
    for MTRElectricalGridConditionsClusterCurrentConditionsChangedEvent
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRElectricalGridConditionsClusterCurrentConditionsChangedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRElectricalGridConditionsClusterCurrentConditionsChangedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRElectricalGridConditionsClusterCurrentConditionsChangedEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRElectricalGridConditionsClusterCurrentConditionsChangedEvent" ,)
        }
    }
}
impl IMTRElectricalGridConditionsClusterCurrentConditionsChangedEvent
    for MTRElectricalGridConditionsClusterCurrentConditionsChangedEvent
{
}
pub trait IMTRElectricalGridConditionsClusterCurrentConditionsChangedEvent:
    Sized + std::ops::Deref
{
    unsafe fn currentConditions(
        &self,
    ) -> MTRElectricalGridConditionsClusterElectricalGridConditionsStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentConditions)
    }
    unsafe fn setCurrentConditions_(
        &self,
        currentConditions: MTRElectricalGridConditionsClusterElectricalGridConditionsStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrentConditions : currentConditions)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterAppleAliroCredentialStruct(pub id);
impl std::ops::Deref for MTRDoorLockClusterAppleAliroCredentialStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterAppleAliroCredentialStruct {}
impl MTRDoorLockClusterAppleAliroCredentialStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterAppleAliroCredentialStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterAppleAliroCredentialStruct {}
impl INSObject for MTRDoorLockClusterAppleAliroCredentialStruct {}
impl PNSObject for MTRDoorLockClusterAppleAliroCredentialStruct {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterAppleAliroCredentialStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterAppleAliroCredentialStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterAppleAliroCredentialStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterAppleAliroCredentialStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDoorLockClusterAppleAliroCredentialStruct" ,)
        }
    }
}
impl IMTRDoorLockClusterAppleAliroCredentialStruct
    for MTRDoorLockClusterAppleAliroCredentialStruct
{
}
pub trait IMTRDoorLockClusterAppleAliroCredentialStruct: Sized + std::ops::Deref {
    unsafe fn credentialType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credentialType)
    }
    unsafe fn setCredentialType_(&self, credentialType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentialType : credentialType)
    }
    unsafe fn credentialIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credentialIndex)
    }
    unsafe fn setCredentialIndex_(&self, credentialIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentialIndex : credentialIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterCredentialStruct(pub id);
impl std::ops::Deref for MTRDoorLockClusterCredentialStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterCredentialStruct {}
impl MTRDoorLockClusterCredentialStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterCredentialStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterCredentialStruct {}
impl INSObject for MTRDoorLockClusterCredentialStruct {}
impl PNSObject for MTRDoorLockClusterCredentialStruct {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterCredentialStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDoorLockClusterCredentialStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterCredentialStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterCredentialStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterCredentialStruct")
        }
    }
}
impl IMTRDoorLockClusterCredentialStruct for MTRDoorLockClusterCredentialStruct {}
pub trait IMTRDoorLockClusterCredentialStruct: Sized + std::ops::Deref {
    unsafe fn credentialType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credentialType)
    }
    unsafe fn setCredentialType_(&self, credentialType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentialType : credentialType)
    }
    unsafe fn credentialIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credentialIndex)
    }
    unsafe fn setCredentialIndex_(&self, credentialIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentialIndex : credentialIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterDlCredential(pub id);
impl std::ops::Deref for MTRDoorLockClusterDlCredential {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterDlCredential {}
impl MTRDoorLockClusterDlCredential {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterDlCredential").unwrap(), alloc) })
    }
}
impl IMTRDoorLockClusterCredentialStruct for MTRDoorLockClusterDlCredential {}
impl PNSCopying for MTRDoorLockClusterDlCredential {}
impl From<MTRDoorLockClusterDlCredential> for MTRDoorLockClusterCredentialStruct {
    fn from(child: MTRDoorLockClusterDlCredential) -> MTRDoorLockClusterCredentialStruct {
        MTRDoorLockClusterCredentialStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRDoorLockClusterCredentialStruct> for MTRDoorLockClusterDlCredential {
    type Error = &'static str;
    fn try_from(
        parent: MTRDoorLockClusterCredentialStruct,
    ) -> Result<MTRDoorLockClusterDlCredential, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterDlCredential").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterDlCredential(parent.0))
        } else {
            Err ("This MTRDoorLockClusterCredentialStruct cannot be downcasted to MTRDoorLockClusterDlCredential" ,)
        }
    }
}
impl INSObject for MTRDoorLockClusterDlCredential {}
impl PNSObject for MTRDoorLockClusterDlCredential {}
impl IMTRDoorLockClusterDlCredential for MTRDoorLockClusterDlCredential {}
pub trait IMTRDoorLockClusterDlCredential: Sized + std::ops::Deref {
    unsafe fn credentialType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credentialType)
    }
    unsafe fn setCredentialType_(&self, credentialType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentialType : credentialType)
    }
    unsafe fn credentialIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credentialIndex)
    }
    unsafe fn setCredentialIndex_(&self, credentialIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentialIndex : credentialIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterDoorLockAlarmEvent(pub id);
impl std::ops::Deref for MTRDoorLockClusterDoorLockAlarmEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterDoorLockAlarmEvent {}
impl MTRDoorLockClusterDoorLockAlarmEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterDoorLockAlarmEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterDoorLockAlarmEvent {}
impl INSObject for MTRDoorLockClusterDoorLockAlarmEvent {}
impl PNSObject for MTRDoorLockClusterDoorLockAlarmEvent {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterDoorLockAlarmEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDoorLockClusterDoorLockAlarmEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterDoorLockAlarmEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterDoorLockAlarmEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterDoorLockAlarmEvent")
        }
    }
}
impl IMTRDoorLockClusterDoorLockAlarmEvent for MTRDoorLockClusterDoorLockAlarmEvent {}
pub trait IMTRDoorLockClusterDoorLockAlarmEvent: Sized + std::ops::Deref {
    unsafe fn alarmCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, alarmCode)
    }
    unsafe fn setAlarmCode_(&self, alarmCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAlarmCode : alarmCode)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterDoorStateChangeEvent(pub id);
impl std::ops::Deref for MTRDoorLockClusterDoorStateChangeEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterDoorStateChangeEvent {}
impl MTRDoorLockClusterDoorStateChangeEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterDoorStateChangeEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterDoorStateChangeEvent {}
impl INSObject for MTRDoorLockClusterDoorStateChangeEvent {}
impl PNSObject for MTRDoorLockClusterDoorStateChangeEvent {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterDoorStateChangeEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDoorLockClusterDoorStateChangeEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterDoorStateChangeEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterDoorStateChangeEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterDoorStateChangeEvent")
        }
    }
}
impl IMTRDoorLockClusterDoorStateChangeEvent for MTRDoorLockClusterDoorStateChangeEvent {}
pub trait IMTRDoorLockClusterDoorStateChangeEvent: Sized + std::ops::Deref {
    unsafe fn doorState(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, doorState)
    }
    unsafe fn setDoorState_(&self, doorState: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDoorState : doorState)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterLockOperationEvent(pub id);
impl std::ops::Deref for MTRDoorLockClusterLockOperationEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterLockOperationEvent {}
impl MTRDoorLockClusterLockOperationEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterLockOperationEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterLockOperationEvent {}
impl INSObject for MTRDoorLockClusterLockOperationEvent {}
impl PNSObject for MTRDoorLockClusterLockOperationEvent {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterLockOperationEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDoorLockClusterLockOperationEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterLockOperationEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterLockOperationEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterLockOperationEvent")
        }
    }
}
impl IMTRDoorLockClusterLockOperationEvent for MTRDoorLockClusterLockOperationEvent {}
pub trait IMTRDoorLockClusterLockOperationEvent: Sized + std::ops::Deref {
    unsafe fn lockOperationType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lockOperationType)
    }
    unsafe fn setLockOperationType_(&self, lockOperationType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLockOperationType : lockOperationType)
    }
    unsafe fn operationSource(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationSource)
    }
    unsafe fn setOperationSource_(&self, operationSource: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationSource : operationSource)
    }
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
    unsafe fn sourceNode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sourceNode)
    }
    unsafe fn setSourceNode_(&self, sourceNode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSourceNode : sourceNode)
    }
    unsafe fn credentials(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credentials)
    }
    unsafe fn setCredentials_(&self, credentials: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentials : credentials)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterLockOperationErrorEvent(pub id);
impl std::ops::Deref for MTRDoorLockClusterLockOperationErrorEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterLockOperationErrorEvent {}
impl MTRDoorLockClusterLockOperationErrorEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterLockOperationErrorEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterLockOperationErrorEvent {}
impl INSObject for MTRDoorLockClusterLockOperationErrorEvent {}
impl PNSObject for MTRDoorLockClusterLockOperationErrorEvent {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterLockOperationErrorEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterLockOperationErrorEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterLockOperationErrorEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterLockOperationErrorEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterLockOperationErrorEvent")
        }
    }
}
impl IMTRDoorLockClusterLockOperationErrorEvent for MTRDoorLockClusterLockOperationErrorEvent {}
pub trait IMTRDoorLockClusterLockOperationErrorEvent: Sized + std::ops::Deref {
    unsafe fn lockOperationType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lockOperationType)
    }
    unsafe fn setLockOperationType_(&self, lockOperationType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLockOperationType : lockOperationType)
    }
    unsafe fn operationSource(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationSource)
    }
    unsafe fn setOperationSource_(&self, operationSource: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationSource : operationSource)
    }
    unsafe fn operationError(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationError)
    }
    unsafe fn setOperationError_(&self, operationError: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationError : operationError)
    }
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
    unsafe fn sourceNode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sourceNode)
    }
    unsafe fn setSourceNode_(&self, sourceNode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSourceNode : sourceNode)
    }
    unsafe fn credentials(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credentials)
    }
    unsafe fn setCredentials_(&self, credentials: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentials : credentials)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterLockUserChangeEvent(pub id);
impl std::ops::Deref for MTRDoorLockClusterLockUserChangeEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterLockUserChangeEvent {}
impl MTRDoorLockClusterLockUserChangeEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterLockUserChangeEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterLockUserChangeEvent {}
impl INSObject for MTRDoorLockClusterLockUserChangeEvent {}
impl PNSObject for MTRDoorLockClusterLockUserChangeEvent {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterLockUserChangeEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDoorLockClusterLockUserChangeEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterLockUserChangeEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterLockUserChangeEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterLockUserChangeEvent")
        }
    }
}
impl IMTRDoorLockClusterLockUserChangeEvent for MTRDoorLockClusterLockUserChangeEvent {}
pub trait IMTRDoorLockClusterLockUserChangeEvent: Sized + std::ops::Deref {
    unsafe fn lockDataType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lockDataType)
    }
    unsafe fn setLockDataType_(&self, lockDataType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLockDataType : lockDataType)
    }
    unsafe fn dataOperationType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dataOperationType)
    }
    unsafe fn setDataOperationType_(&self, dataOperationType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDataOperationType : dataOperationType)
    }
    unsafe fn operationSource(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationSource)
    }
    unsafe fn setOperationSource_(&self, operationSource: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationSource : operationSource)
    }
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
    unsafe fn sourceNode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sourceNode)
    }
    unsafe fn setSourceNode_(&self, sourceNode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSourceNode : sourceNode)
    }
    unsafe fn dataIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dataIndex)
    }
    unsafe fn setDataIndex_(&self, dataIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDataIndex : dataIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterAppleAliroLockOperationEvent(pub id);
impl std::ops::Deref for MTRDoorLockClusterAppleAliroLockOperationEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterAppleAliroLockOperationEvent {}
impl MTRDoorLockClusterAppleAliroLockOperationEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterAppleAliroLockOperationEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDoorLockClusterAppleAliroLockOperationEvent {}
impl INSObject for MTRDoorLockClusterAppleAliroLockOperationEvent {}
impl PNSObject for MTRDoorLockClusterAppleAliroLockOperationEvent {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterAppleAliroLockOperationEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterAppleAliroLockOperationEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterAppleAliroLockOperationEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterAppleAliroLockOperationEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDoorLockClusterAppleAliroLockOperationEvent" ,)
        }
    }
}
impl IMTRDoorLockClusterAppleAliroLockOperationEvent
    for MTRDoorLockClusterAppleAliroLockOperationEvent
{
}
pub trait IMTRDoorLockClusterAppleAliroLockOperationEvent: Sized + std::ops::Deref {
    unsafe fn lockOperationType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lockOperationType)
    }
    unsafe fn setLockOperationType_(&self, lockOperationType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLockOperationType : lockOperationType)
    }
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
    unsafe fn credentials(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credentials)
    }
    unsafe fn setCredentials_(&self, credentials: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentials : credentials)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterAppleAliroLockOperationErrorEvent(pub id);
impl std::ops::Deref for MTRDoorLockClusterAppleAliroLockOperationErrorEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterAppleAliroLockOperationErrorEvent {}
impl MTRDoorLockClusterAppleAliroLockOperationErrorEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterAppleAliroLockOperationErrorEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDoorLockClusterAppleAliroLockOperationErrorEvent {}
impl INSObject for MTRDoorLockClusterAppleAliroLockOperationErrorEvent {}
impl PNSObject for MTRDoorLockClusterAppleAliroLockOperationErrorEvent {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterAppleAliroLockOperationErrorEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterAppleAliroLockOperationErrorEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterAppleAliroLockOperationErrorEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterAppleAliroLockOperationErrorEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDoorLockClusterAppleAliroLockOperationErrorEvent" ,)
        }
    }
}
impl IMTRDoorLockClusterAppleAliroLockOperationErrorEvent
    for MTRDoorLockClusterAppleAliroLockOperationErrorEvent
{
}
pub trait IMTRDoorLockClusterAppleAliroLockOperationErrorEvent: Sized + std::ops::Deref {
    unsafe fn lockOperationType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lockOperationType)
    }
    unsafe fn setLockOperationType_(&self, lockOperationType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLockOperationType : lockOperationType)
    }
    unsafe fn operationError(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationError)
    }
    unsafe fn setOperationError_(&self, operationError: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationError : operationError)
    }
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
    unsafe fn credentials(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credentials)
    }
    unsafe fn setCredentials_(&self, credentials: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentials : credentials)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterAppleAliroLockUserChangeEvent(pub id);
impl std::ops::Deref for MTRDoorLockClusterAppleAliroLockUserChangeEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterAppleAliroLockUserChangeEvent {}
impl MTRDoorLockClusterAppleAliroLockUserChangeEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterAppleAliroLockUserChangeEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDoorLockClusterAppleAliroLockUserChangeEvent {}
impl INSObject for MTRDoorLockClusterAppleAliroLockUserChangeEvent {}
impl PNSObject for MTRDoorLockClusterAppleAliroLockUserChangeEvent {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterAppleAliroLockUserChangeEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterAppleAliroLockUserChangeEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterAppleAliroLockUserChangeEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterAppleAliroLockUserChangeEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDoorLockClusterAppleAliroLockUserChangeEvent" ,)
        }
    }
}
impl IMTRDoorLockClusterAppleAliroLockUserChangeEvent
    for MTRDoorLockClusterAppleAliroLockUserChangeEvent
{
}
pub trait IMTRDoorLockClusterAppleAliroLockUserChangeEvent: Sized + std::ops::Deref {
    unsafe fn lockDataType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lockDataType)
    }
    unsafe fn setLockDataType_(&self, lockDataType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLockDataType : lockDataType)
    }
    unsafe fn dataOperationType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dataOperationType)
    }
    unsafe fn setDataOperationType_(&self, dataOperationType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDataOperationType : dataOperationType)
    }
    unsafe fn operationSource(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationSource)
    }
    unsafe fn setOperationSource_(&self, operationSource: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationSource : operationSource)
    }
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
    unsafe fn sourceNode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sourceNode)
    }
    unsafe fn setSourceNode_(&self, sourceNode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSourceNode : sourceNode)
    }
    unsafe fn dataIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dataIndex)
    }
    unsafe fn setDataIndex_(&self, dataIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDataIndex : dataIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClosureControlClusterOverallCurrentStateStruct(pub id);
impl std::ops::Deref for MTRClosureControlClusterOverallCurrentStateStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClosureControlClusterOverallCurrentStateStruct {}
impl MTRClosureControlClusterOverallCurrentStateStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClosureControlClusterOverallCurrentStateStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRClosureControlClusterOverallCurrentStateStruct {}
impl INSObject for MTRClosureControlClusterOverallCurrentStateStruct {}
impl PNSObject for MTRClosureControlClusterOverallCurrentStateStruct {}
impl std::convert::TryFrom<NSObject> for MTRClosureControlClusterOverallCurrentStateStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRClosureControlClusterOverallCurrentStateStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClosureControlClusterOverallCurrentStateStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRClosureControlClusterOverallCurrentStateStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRClosureControlClusterOverallCurrentStateStruct" ,)
        }
    }
}
impl IMTRClosureControlClusterOverallCurrentStateStruct
    for MTRClosureControlClusterOverallCurrentStateStruct
{
}
pub trait IMTRClosureControlClusterOverallCurrentStateStruct: Sized + std::ops::Deref {
    unsafe fn position(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, position)
    }
    unsafe fn setPosition_(&self, position: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPosition : position)
    }
    unsafe fn latch(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, latch)
    }
    unsafe fn setLatch_(&self, latch: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLatch : latch)
    }
    unsafe fn speed(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, speed)
    }
    unsafe fn setSpeed_(&self, speed: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSpeed : speed)
    }
    unsafe fn secureState(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, secureState)
    }
    unsafe fn setSecureState_(&self, secureState: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSecureState : secureState)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClosureControlClusterOverallTargetStateStruct(pub id);
impl std::ops::Deref for MTRClosureControlClusterOverallTargetStateStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClosureControlClusterOverallTargetStateStruct {}
impl MTRClosureControlClusterOverallTargetStateStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClosureControlClusterOverallTargetStateStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRClosureControlClusterOverallTargetStateStruct {}
impl INSObject for MTRClosureControlClusterOverallTargetStateStruct {}
impl PNSObject for MTRClosureControlClusterOverallTargetStateStruct {}
impl std::convert::TryFrom<NSObject> for MTRClosureControlClusterOverallTargetStateStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRClosureControlClusterOverallTargetStateStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClosureControlClusterOverallTargetStateStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRClosureControlClusterOverallTargetStateStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRClosureControlClusterOverallTargetStateStruct" ,)
        }
    }
}
impl IMTRClosureControlClusterOverallTargetStateStruct
    for MTRClosureControlClusterOverallTargetStateStruct
{
}
pub trait IMTRClosureControlClusterOverallTargetStateStruct: Sized + std::ops::Deref {
    unsafe fn position(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, position)
    }
    unsafe fn setPosition_(&self, position: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPosition : position)
    }
    unsafe fn latch(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, latch)
    }
    unsafe fn setLatch_(&self, latch: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLatch : latch)
    }
    unsafe fn speed(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, speed)
    }
    unsafe fn setSpeed_(&self, speed: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSpeed : speed)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClosureControlClusterOperationalErrorEvent(pub id);
impl std::ops::Deref for MTRClosureControlClusterOperationalErrorEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClosureControlClusterOperationalErrorEvent {}
impl MTRClosureControlClusterOperationalErrorEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClosureControlClusterOperationalErrorEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRClosureControlClusterOperationalErrorEvent {}
impl INSObject for MTRClosureControlClusterOperationalErrorEvent {}
impl PNSObject for MTRClosureControlClusterOperationalErrorEvent {}
impl std::convert::TryFrom<NSObject> for MTRClosureControlClusterOperationalErrorEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRClosureControlClusterOperationalErrorEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClosureControlClusterOperationalErrorEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRClosureControlClusterOperationalErrorEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRClosureControlClusterOperationalErrorEvent" ,)
        }
    }
}
impl IMTRClosureControlClusterOperationalErrorEvent
    for MTRClosureControlClusterOperationalErrorEvent
{
}
pub trait IMTRClosureControlClusterOperationalErrorEvent: Sized + std::ops::Deref {
    unsafe fn errorState(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, errorState)
    }
    unsafe fn setErrorState_(&self, errorState: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setErrorState : errorState)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClosureControlClusterMovementCompletedEvent(pub id);
impl std::ops::Deref for MTRClosureControlClusterMovementCompletedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClosureControlClusterMovementCompletedEvent {}
impl MTRClosureControlClusterMovementCompletedEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClosureControlClusterMovementCompletedEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRClosureControlClusterMovementCompletedEvent {}
impl INSObject for MTRClosureControlClusterMovementCompletedEvent {}
impl PNSObject for MTRClosureControlClusterMovementCompletedEvent {}
impl std::convert::TryFrom<NSObject> for MTRClosureControlClusterMovementCompletedEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRClosureControlClusterMovementCompletedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClosureControlClusterMovementCompletedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRClosureControlClusterMovementCompletedEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRClosureControlClusterMovementCompletedEvent" ,)
        }
    }
}
impl IMTRClosureControlClusterMovementCompletedEvent
    for MTRClosureControlClusterMovementCompletedEvent
{
}
pub trait IMTRClosureControlClusterMovementCompletedEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClosureControlClusterEngageStateChangedEvent(pub id);
impl std::ops::Deref for MTRClosureControlClusterEngageStateChangedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClosureControlClusterEngageStateChangedEvent {}
impl MTRClosureControlClusterEngageStateChangedEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClosureControlClusterEngageStateChangedEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRClosureControlClusterEngageStateChangedEvent {}
impl INSObject for MTRClosureControlClusterEngageStateChangedEvent {}
impl PNSObject for MTRClosureControlClusterEngageStateChangedEvent {}
impl std::convert::TryFrom<NSObject> for MTRClosureControlClusterEngageStateChangedEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRClosureControlClusterEngageStateChangedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClosureControlClusterEngageStateChangedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRClosureControlClusterEngageStateChangedEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRClosureControlClusterEngageStateChangedEvent" ,)
        }
    }
}
impl IMTRClosureControlClusterEngageStateChangedEvent
    for MTRClosureControlClusterEngageStateChangedEvent
{
}
pub trait IMTRClosureControlClusterEngageStateChangedEvent: Sized + std::ops::Deref {
    unsafe fn engageValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, engageValue)
    }
    unsafe fn setEngageValue_(&self, engageValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEngageValue : engageValue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClosureControlClusterSecureStateChangedEvent(pub id);
impl std::ops::Deref for MTRClosureControlClusterSecureStateChangedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClosureControlClusterSecureStateChangedEvent {}
impl MTRClosureControlClusterSecureStateChangedEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClosureControlClusterSecureStateChangedEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRClosureControlClusterSecureStateChangedEvent {}
impl INSObject for MTRClosureControlClusterSecureStateChangedEvent {}
impl PNSObject for MTRClosureControlClusterSecureStateChangedEvent {}
impl std::convert::TryFrom<NSObject> for MTRClosureControlClusterSecureStateChangedEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRClosureControlClusterSecureStateChangedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClosureControlClusterSecureStateChangedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRClosureControlClusterSecureStateChangedEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRClosureControlClusterSecureStateChangedEvent" ,)
        }
    }
}
impl IMTRClosureControlClusterSecureStateChangedEvent
    for MTRClosureControlClusterSecureStateChangedEvent
{
}
pub trait IMTRClosureControlClusterSecureStateChangedEvent: Sized + std::ops::Deref {
    unsafe fn secureValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, secureValue)
    }
    unsafe fn setSecureValue_(&self, secureValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSecureValue : secureValue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClosureDimensionClusterDimensionStateStruct(pub id);
impl std::ops::Deref for MTRClosureDimensionClusterDimensionStateStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClosureDimensionClusterDimensionStateStruct {}
impl MTRClosureDimensionClusterDimensionStateStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClosureDimensionClusterDimensionStateStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRClosureDimensionClusterDimensionStateStruct {}
impl INSObject for MTRClosureDimensionClusterDimensionStateStruct {}
impl PNSObject for MTRClosureDimensionClusterDimensionStateStruct {}
impl std::convert::TryFrom<NSObject> for MTRClosureDimensionClusterDimensionStateStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRClosureDimensionClusterDimensionStateStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClosureDimensionClusterDimensionStateStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRClosureDimensionClusterDimensionStateStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRClosureDimensionClusterDimensionStateStruct" ,)
        }
    }
}
impl IMTRClosureDimensionClusterDimensionStateStruct
    for MTRClosureDimensionClusterDimensionStateStruct
{
}
pub trait IMTRClosureDimensionClusterDimensionStateStruct: Sized + std::ops::Deref {
    unsafe fn position(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, position)
    }
    unsafe fn setPosition_(&self, position: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPosition : position)
    }
    unsafe fn latch(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, latch)
    }
    unsafe fn setLatch_(&self, latch: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLatch : latch)
    }
    unsafe fn speed(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, speed)
    }
    unsafe fn setSpeed_(&self, speed: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSpeed : speed)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClosureDimensionClusterRangePercent100thsStruct(pub id);
impl std::ops::Deref for MTRClosureDimensionClusterRangePercent100thsStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClosureDimensionClusterRangePercent100thsStruct {}
impl MTRClosureDimensionClusterRangePercent100thsStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClosureDimensionClusterRangePercent100thsStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRClosureDimensionClusterRangePercent100thsStruct {}
impl INSObject for MTRClosureDimensionClusterRangePercent100thsStruct {}
impl PNSObject for MTRClosureDimensionClusterRangePercent100thsStruct {}
impl std::convert::TryFrom<NSObject> for MTRClosureDimensionClusterRangePercent100thsStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRClosureDimensionClusterRangePercent100thsStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClosureDimensionClusterRangePercent100thsStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRClosureDimensionClusterRangePercent100thsStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRClosureDimensionClusterRangePercent100thsStruct" ,)
        }
    }
}
impl IMTRClosureDimensionClusterRangePercent100thsStruct
    for MTRClosureDimensionClusterRangePercent100thsStruct
{
}
pub trait IMTRClosureDimensionClusterRangePercent100thsStruct: Sized + std::ops::Deref {
    unsafe fn min(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, min)
    }
    unsafe fn setMin_(&self, min: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMin : min)
    }
    unsafe fn max(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, max)
    }
    unsafe fn setMax_(&self, max: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMax : max)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClosureDimensionClusterUnitRangeStruct(pub id);
impl std::ops::Deref for MTRClosureDimensionClusterUnitRangeStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClosureDimensionClusterUnitRangeStruct {}
impl MTRClosureDimensionClusterUnitRangeStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClosureDimensionClusterUnitRangeStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRClosureDimensionClusterUnitRangeStruct {}
impl INSObject for MTRClosureDimensionClusterUnitRangeStruct {}
impl PNSObject for MTRClosureDimensionClusterUnitRangeStruct {}
impl std::convert::TryFrom<NSObject> for MTRClosureDimensionClusterUnitRangeStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRClosureDimensionClusterUnitRangeStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClosureDimensionClusterUnitRangeStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRClosureDimensionClusterUnitRangeStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRClosureDimensionClusterUnitRangeStruct")
        }
    }
}
impl IMTRClosureDimensionClusterUnitRangeStruct for MTRClosureDimensionClusterUnitRangeStruct {}
pub trait IMTRClosureDimensionClusterUnitRangeStruct: Sized + std::ops::Deref {
    unsafe fn min(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, min)
    }
    unsafe fn setMin_(&self, min: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMin : min)
    }
    unsafe fn max(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, max)
    }
    unsafe fn setMax_(&self, max: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMax : max)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRServiceAreaClusterLandmarkInfoStruct(pub id);
impl std::ops::Deref for MTRServiceAreaClusterLandmarkInfoStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRServiceAreaClusterLandmarkInfoStruct {}
impl MTRServiceAreaClusterLandmarkInfoStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRServiceAreaClusterLandmarkInfoStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRServiceAreaClusterLandmarkInfoStruct {}
impl INSObject for MTRServiceAreaClusterLandmarkInfoStruct {}
impl PNSObject for MTRServiceAreaClusterLandmarkInfoStruct {}
impl std::convert::TryFrom<NSObject> for MTRServiceAreaClusterLandmarkInfoStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRServiceAreaClusterLandmarkInfoStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRServiceAreaClusterLandmarkInfoStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRServiceAreaClusterLandmarkInfoStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRServiceAreaClusterLandmarkInfoStruct")
        }
    }
}
impl IMTRServiceAreaClusterLandmarkInfoStruct for MTRServiceAreaClusterLandmarkInfoStruct {}
pub trait IMTRServiceAreaClusterLandmarkInfoStruct: Sized + std::ops::Deref {
    unsafe fn landmarkTag(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, landmarkTag)
    }
    unsafe fn setLandmarkTag_(&self, landmarkTag: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLandmarkTag : landmarkTag)
    }
    unsafe fn relativePositionTag(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, relativePositionTag)
    }
    unsafe fn setRelativePositionTag_(&self, relativePositionTag: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRelativePositionTag : relativePositionTag)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRServiceAreaClusterAreaInfoStruct(pub id);
impl std::ops::Deref for MTRServiceAreaClusterAreaInfoStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRServiceAreaClusterAreaInfoStruct {}
impl MTRServiceAreaClusterAreaInfoStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRServiceAreaClusterAreaInfoStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRServiceAreaClusterAreaInfoStruct {}
impl INSObject for MTRServiceAreaClusterAreaInfoStruct {}
impl PNSObject for MTRServiceAreaClusterAreaInfoStruct {}
impl std::convert::TryFrom<NSObject> for MTRServiceAreaClusterAreaInfoStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRServiceAreaClusterAreaInfoStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRServiceAreaClusterAreaInfoStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRServiceAreaClusterAreaInfoStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRServiceAreaClusterAreaInfoStruct")
        }
    }
}
impl IMTRServiceAreaClusterAreaInfoStruct for MTRServiceAreaClusterAreaInfoStruct {}
pub trait IMTRServiceAreaClusterAreaInfoStruct: Sized + std::ops::Deref {
    unsafe fn locationInfo(&self) -> MTRDataTypeLocationDescriptorStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, locationInfo)
    }
    unsafe fn setLocationInfo_(&self, locationInfo: MTRDataTypeLocationDescriptorStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocationInfo : locationInfo)
    }
    unsafe fn landmarkInfo(&self) -> MTRServiceAreaClusterLandmarkInfoStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, landmarkInfo)
    }
    unsafe fn setLandmarkInfo_(&self, landmarkInfo: MTRServiceAreaClusterLandmarkInfoStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLandmarkInfo : landmarkInfo)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRServiceAreaClusterAreaStruct(pub id);
impl std::ops::Deref for MTRServiceAreaClusterAreaStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRServiceAreaClusterAreaStruct {}
impl MTRServiceAreaClusterAreaStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRServiceAreaClusterAreaStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRServiceAreaClusterAreaStruct {}
impl INSObject for MTRServiceAreaClusterAreaStruct {}
impl PNSObject for MTRServiceAreaClusterAreaStruct {}
impl std::convert::TryFrom<NSObject> for MTRServiceAreaClusterAreaStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRServiceAreaClusterAreaStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRServiceAreaClusterAreaStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRServiceAreaClusterAreaStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRServiceAreaClusterAreaStruct")
        }
    }
}
impl IMTRServiceAreaClusterAreaStruct for MTRServiceAreaClusterAreaStruct {}
pub trait IMTRServiceAreaClusterAreaStruct: Sized + std::ops::Deref {
    unsafe fn areaID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, areaID)
    }
    unsafe fn setAreaID_(&self, areaID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAreaID : areaID)
    }
    unsafe fn mapID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mapID)
    }
    unsafe fn setMapID_(&self, mapID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMapID : mapID)
    }
    unsafe fn areaInfo(&self) -> MTRServiceAreaClusterAreaInfoStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, areaInfo)
    }
    unsafe fn setAreaInfo_(&self, areaInfo: MTRServiceAreaClusterAreaInfoStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAreaInfo : areaInfo)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRServiceAreaClusterMapStruct(pub id);
impl std::ops::Deref for MTRServiceAreaClusterMapStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRServiceAreaClusterMapStruct {}
impl MTRServiceAreaClusterMapStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRServiceAreaClusterMapStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRServiceAreaClusterMapStruct {}
impl INSObject for MTRServiceAreaClusterMapStruct {}
impl PNSObject for MTRServiceAreaClusterMapStruct {}
impl std::convert::TryFrom<NSObject> for MTRServiceAreaClusterMapStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRServiceAreaClusterMapStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRServiceAreaClusterMapStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRServiceAreaClusterMapStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRServiceAreaClusterMapStruct")
        }
    }
}
impl IMTRServiceAreaClusterMapStruct for MTRServiceAreaClusterMapStruct {}
pub trait IMTRServiceAreaClusterMapStruct: Sized + std::ops::Deref {
    unsafe fn mapID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mapID)
    }
    unsafe fn setMapID_(&self, mapID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMapID : mapID)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRServiceAreaClusterProgressStruct(pub id);
impl std::ops::Deref for MTRServiceAreaClusterProgressStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRServiceAreaClusterProgressStruct {}
impl MTRServiceAreaClusterProgressStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRServiceAreaClusterProgressStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRServiceAreaClusterProgressStruct {}
impl INSObject for MTRServiceAreaClusterProgressStruct {}
impl PNSObject for MTRServiceAreaClusterProgressStruct {}
impl std::convert::TryFrom<NSObject> for MTRServiceAreaClusterProgressStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRServiceAreaClusterProgressStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRServiceAreaClusterProgressStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRServiceAreaClusterProgressStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRServiceAreaClusterProgressStruct")
        }
    }
}
impl IMTRServiceAreaClusterProgressStruct for MTRServiceAreaClusterProgressStruct {}
pub trait IMTRServiceAreaClusterProgressStruct: Sized + std::ops::Deref {
    unsafe fn areaID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, areaID)
    }
    unsafe fn setAreaID_(&self, areaID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAreaID : areaID)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn totalOperationalTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, totalOperationalTime)
    }
    unsafe fn setTotalOperationalTime_(&self, totalOperationalTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTotalOperationalTime : totalOperationalTime)
    }
    unsafe fn estimatedTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, estimatedTime)
    }
    unsafe fn setEstimatedTime_(&self, estimatedTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEstimatedTime : estimatedTime)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPumpConfigurationAndControlClusterSupplyVoltageLowEvent(pub id);
impl std::ops::Deref for MTRPumpConfigurationAndControlClusterSupplyVoltageLowEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPumpConfigurationAndControlClusterSupplyVoltageLowEvent {}
impl MTRPumpConfigurationAndControlClusterSupplyVoltageLowEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterSupplyVoltageLowEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPumpConfigurationAndControlClusterSupplyVoltageLowEvent {}
impl INSObject for MTRPumpConfigurationAndControlClusterSupplyVoltageLowEvent {}
impl PNSObject for MTRPumpConfigurationAndControlClusterSupplyVoltageLowEvent {}
impl std::convert::TryFrom<NSObject>
    for MTRPumpConfigurationAndControlClusterSupplyVoltageLowEvent
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPumpConfigurationAndControlClusterSupplyVoltageLowEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterSupplyVoltageLowEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPumpConfigurationAndControlClusterSupplyVoltageLowEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPumpConfigurationAndControlClusterSupplyVoltageLowEvent" ,)
        }
    }
}
impl IMTRPumpConfigurationAndControlClusterSupplyVoltageLowEvent
    for MTRPumpConfigurationAndControlClusterSupplyVoltageLowEvent
{
}
pub trait IMTRPumpConfigurationAndControlClusterSupplyVoltageLowEvent:
    Sized + std::ops::Deref
{
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPumpConfigurationAndControlClusterSupplyVoltageHighEvent(pub id);
impl std::ops::Deref for MTRPumpConfigurationAndControlClusterSupplyVoltageHighEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPumpConfigurationAndControlClusterSupplyVoltageHighEvent {}
impl MTRPumpConfigurationAndControlClusterSupplyVoltageHighEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterSupplyVoltageHighEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPumpConfigurationAndControlClusterSupplyVoltageHighEvent {}
impl INSObject for MTRPumpConfigurationAndControlClusterSupplyVoltageHighEvent {}
impl PNSObject for MTRPumpConfigurationAndControlClusterSupplyVoltageHighEvent {}
impl std::convert::TryFrom<NSObject>
    for MTRPumpConfigurationAndControlClusterSupplyVoltageHighEvent
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPumpConfigurationAndControlClusterSupplyVoltageHighEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterSupplyVoltageHighEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPumpConfigurationAndControlClusterSupplyVoltageHighEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPumpConfigurationAndControlClusterSupplyVoltageHighEvent" ,)
        }
    }
}
impl IMTRPumpConfigurationAndControlClusterSupplyVoltageHighEvent
    for MTRPumpConfigurationAndControlClusterSupplyVoltageHighEvent
{
}
pub trait IMTRPumpConfigurationAndControlClusterSupplyVoltageHighEvent:
    Sized + std::ops::Deref
{
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPumpConfigurationAndControlClusterPowerMissingPhaseEvent(pub id);
impl std::ops::Deref for MTRPumpConfigurationAndControlClusterPowerMissingPhaseEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPumpConfigurationAndControlClusterPowerMissingPhaseEvent {}
impl MTRPumpConfigurationAndControlClusterPowerMissingPhaseEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterPowerMissingPhaseEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPumpConfigurationAndControlClusterPowerMissingPhaseEvent {}
impl INSObject for MTRPumpConfigurationAndControlClusterPowerMissingPhaseEvent {}
impl PNSObject for MTRPumpConfigurationAndControlClusterPowerMissingPhaseEvent {}
impl std::convert::TryFrom<NSObject>
    for MTRPumpConfigurationAndControlClusterPowerMissingPhaseEvent
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPumpConfigurationAndControlClusterPowerMissingPhaseEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterPowerMissingPhaseEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPumpConfigurationAndControlClusterPowerMissingPhaseEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPumpConfigurationAndControlClusterPowerMissingPhaseEvent" ,)
        }
    }
}
impl IMTRPumpConfigurationAndControlClusterPowerMissingPhaseEvent
    for MTRPumpConfigurationAndControlClusterPowerMissingPhaseEvent
{
}
pub trait IMTRPumpConfigurationAndControlClusterPowerMissingPhaseEvent:
    Sized + std::ops::Deref
{
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPumpConfigurationAndControlClusterSystemPressureLowEvent(pub id);
impl std::ops::Deref for MTRPumpConfigurationAndControlClusterSystemPressureLowEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPumpConfigurationAndControlClusterSystemPressureLowEvent {}
impl MTRPumpConfigurationAndControlClusterSystemPressureLowEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterSystemPressureLowEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPumpConfigurationAndControlClusterSystemPressureLowEvent {}
impl INSObject for MTRPumpConfigurationAndControlClusterSystemPressureLowEvent {}
impl PNSObject for MTRPumpConfigurationAndControlClusterSystemPressureLowEvent {}
impl std::convert::TryFrom<NSObject>
    for MTRPumpConfigurationAndControlClusterSystemPressureLowEvent
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPumpConfigurationAndControlClusterSystemPressureLowEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterSystemPressureLowEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPumpConfigurationAndControlClusterSystemPressureLowEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPumpConfigurationAndControlClusterSystemPressureLowEvent" ,)
        }
    }
}
impl IMTRPumpConfigurationAndControlClusterSystemPressureLowEvent
    for MTRPumpConfigurationAndControlClusterSystemPressureLowEvent
{
}
pub trait IMTRPumpConfigurationAndControlClusterSystemPressureLowEvent:
    Sized + std::ops::Deref
{
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPumpConfigurationAndControlClusterSystemPressureHighEvent(pub id);
impl std::ops::Deref for MTRPumpConfigurationAndControlClusterSystemPressureHighEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPumpConfigurationAndControlClusterSystemPressureHighEvent {}
impl MTRPumpConfigurationAndControlClusterSystemPressureHighEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterSystemPressureHighEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPumpConfigurationAndControlClusterSystemPressureHighEvent {}
impl INSObject for MTRPumpConfigurationAndControlClusterSystemPressureHighEvent {}
impl PNSObject for MTRPumpConfigurationAndControlClusterSystemPressureHighEvent {}
impl std::convert::TryFrom<NSObject>
    for MTRPumpConfigurationAndControlClusterSystemPressureHighEvent
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPumpConfigurationAndControlClusterSystemPressureHighEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterSystemPressureHighEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPumpConfigurationAndControlClusterSystemPressureHighEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPumpConfigurationAndControlClusterSystemPressureHighEvent" ,)
        }
    }
}
impl IMTRPumpConfigurationAndControlClusterSystemPressureHighEvent
    for MTRPumpConfigurationAndControlClusterSystemPressureHighEvent
{
}
pub trait IMTRPumpConfigurationAndControlClusterSystemPressureHighEvent:
    Sized + std::ops::Deref
{
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPumpConfigurationAndControlClusterDryRunningEvent(pub id);
impl std::ops::Deref for MTRPumpConfigurationAndControlClusterDryRunningEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPumpConfigurationAndControlClusterDryRunningEvent {}
impl MTRPumpConfigurationAndControlClusterDryRunningEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterDryRunningEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPumpConfigurationAndControlClusterDryRunningEvent {}
impl INSObject for MTRPumpConfigurationAndControlClusterDryRunningEvent {}
impl PNSObject for MTRPumpConfigurationAndControlClusterDryRunningEvent {}
impl std::convert::TryFrom<NSObject> for MTRPumpConfigurationAndControlClusterDryRunningEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPumpConfigurationAndControlClusterDryRunningEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterDryRunningEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPumpConfigurationAndControlClusterDryRunningEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPumpConfigurationAndControlClusterDryRunningEvent" ,)
        }
    }
}
impl IMTRPumpConfigurationAndControlClusterDryRunningEvent
    for MTRPumpConfigurationAndControlClusterDryRunningEvent
{
}
pub trait IMTRPumpConfigurationAndControlClusterDryRunningEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPumpConfigurationAndControlClusterMotorTemperatureHighEvent(pub id);
impl std::ops::Deref for MTRPumpConfigurationAndControlClusterMotorTemperatureHighEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPumpConfigurationAndControlClusterMotorTemperatureHighEvent {}
impl MTRPumpConfigurationAndControlClusterMotorTemperatureHighEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterMotorTemperatureHighEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPumpConfigurationAndControlClusterMotorTemperatureHighEvent {}
impl INSObject for MTRPumpConfigurationAndControlClusterMotorTemperatureHighEvent {}
impl PNSObject for MTRPumpConfigurationAndControlClusterMotorTemperatureHighEvent {}
impl std::convert::TryFrom<NSObject>
    for MTRPumpConfigurationAndControlClusterMotorTemperatureHighEvent
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPumpConfigurationAndControlClusterMotorTemperatureHighEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterMotorTemperatureHighEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPumpConfigurationAndControlClusterMotorTemperatureHighEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPumpConfigurationAndControlClusterMotorTemperatureHighEvent" ,)
        }
    }
}
impl IMTRPumpConfigurationAndControlClusterMotorTemperatureHighEvent
    for MTRPumpConfigurationAndControlClusterMotorTemperatureHighEvent
{
}
pub trait IMTRPumpConfigurationAndControlClusterMotorTemperatureHighEvent:
    Sized + std::ops::Deref
{
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPumpConfigurationAndControlClusterPumpMotorFatalFailureEvent(pub id);
impl std::ops::Deref for MTRPumpConfigurationAndControlClusterPumpMotorFatalFailureEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPumpConfigurationAndControlClusterPumpMotorFatalFailureEvent {}
impl MTRPumpConfigurationAndControlClusterPumpMotorFatalFailureEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterPumpMotorFatalFailureEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPumpConfigurationAndControlClusterPumpMotorFatalFailureEvent {}
impl INSObject for MTRPumpConfigurationAndControlClusterPumpMotorFatalFailureEvent {}
impl PNSObject for MTRPumpConfigurationAndControlClusterPumpMotorFatalFailureEvent {}
impl std::convert::TryFrom<NSObject>
    for MTRPumpConfigurationAndControlClusterPumpMotorFatalFailureEvent
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPumpConfigurationAndControlClusterPumpMotorFatalFailureEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterPumpMotorFatalFailureEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPumpConfigurationAndControlClusterPumpMotorFatalFailureEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPumpConfigurationAndControlClusterPumpMotorFatalFailureEvent" ,)
        }
    }
}
impl IMTRPumpConfigurationAndControlClusterPumpMotorFatalFailureEvent
    for MTRPumpConfigurationAndControlClusterPumpMotorFatalFailureEvent
{
}
pub trait IMTRPumpConfigurationAndControlClusterPumpMotorFatalFailureEvent:
    Sized + std::ops::Deref
{
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPumpConfigurationAndControlClusterElectronicTemperatureHighEvent(pub id);
impl std::ops::Deref for MTRPumpConfigurationAndControlClusterElectronicTemperatureHighEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPumpConfigurationAndControlClusterElectronicTemperatureHighEvent {}
impl MTRPumpConfigurationAndControlClusterElectronicTemperatureHighEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterElectronicTemperatureHighEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPumpConfigurationAndControlClusterElectronicTemperatureHighEvent {}
impl INSObject for MTRPumpConfigurationAndControlClusterElectronicTemperatureHighEvent {}
impl PNSObject for MTRPumpConfigurationAndControlClusterElectronicTemperatureHighEvent {}
impl std::convert::TryFrom<NSObject>
    for MTRPumpConfigurationAndControlClusterElectronicTemperatureHighEvent
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPumpConfigurationAndControlClusterElectronicTemperatureHighEvent, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterElectronicTemperatureHighEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPumpConfigurationAndControlClusterElectronicTemperatureHighEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPumpConfigurationAndControlClusterElectronicTemperatureHighEvent" ,)
        }
    }
}
impl IMTRPumpConfigurationAndControlClusterElectronicTemperatureHighEvent
    for MTRPumpConfigurationAndControlClusterElectronicTemperatureHighEvent
{
}
pub trait IMTRPumpConfigurationAndControlClusterElectronicTemperatureHighEvent:
    Sized + std::ops::Deref
{
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPumpConfigurationAndControlClusterPumpBlockedEvent(pub id);
impl std::ops::Deref for MTRPumpConfigurationAndControlClusterPumpBlockedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPumpConfigurationAndControlClusterPumpBlockedEvent {}
impl MTRPumpConfigurationAndControlClusterPumpBlockedEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterPumpBlockedEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPumpConfigurationAndControlClusterPumpBlockedEvent {}
impl INSObject for MTRPumpConfigurationAndControlClusterPumpBlockedEvent {}
impl PNSObject for MTRPumpConfigurationAndControlClusterPumpBlockedEvent {}
impl std::convert::TryFrom<NSObject> for MTRPumpConfigurationAndControlClusterPumpBlockedEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPumpConfigurationAndControlClusterPumpBlockedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterPumpBlockedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPumpConfigurationAndControlClusterPumpBlockedEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPumpConfigurationAndControlClusterPumpBlockedEvent" ,)
        }
    }
}
impl IMTRPumpConfigurationAndControlClusterPumpBlockedEvent
    for MTRPumpConfigurationAndControlClusterPumpBlockedEvent
{
}
pub trait IMTRPumpConfigurationAndControlClusterPumpBlockedEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPumpConfigurationAndControlClusterSensorFailureEvent(pub id);
impl std::ops::Deref for MTRPumpConfigurationAndControlClusterSensorFailureEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPumpConfigurationAndControlClusterSensorFailureEvent {}
impl MTRPumpConfigurationAndControlClusterSensorFailureEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterSensorFailureEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPumpConfigurationAndControlClusterSensorFailureEvent {}
impl INSObject for MTRPumpConfigurationAndControlClusterSensorFailureEvent {}
impl PNSObject for MTRPumpConfigurationAndControlClusterSensorFailureEvent {}
impl std::convert::TryFrom<NSObject> for MTRPumpConfigurationAndControlClusterSensorFailureEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPumpConfigurationAndControlClusterSensorFailureEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterSensorFailureEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPumpConfigurationAndControlClusterSensorFailureEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPumpConfigurationAndControlClusterSensorFailureEvent" ,)
        }
    }
}
impl IMTRPumpConfigurationAndControlClusterSensorFailureEvent
    for MTRPumpConfigurationAndControlClusterSensorFailureEvent
{
}
pub trait IMTRPumpConfigurationAndControlClusterSensorFailureEvent:
    Sized + std::ops::Deref
{
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPumpConfigurationAndControlClusterElectronicNonFatalFailureEvent(pub id);
impl std::ops::Deref for MTRPumpConfigurationAndControlClusterElectronicNonFatalFailureEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPumpConfigurationAndControlClusterElectronicNonFatalFailureEvent {}
impl MTRPumpConfigurationAndControlClusterElectronicNonFatalFailureEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterElectronicNonFatalFailureEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPumpConfigurationAndControlClusterElectronicNonFatalFailureEvent {}
impl INSObject for MTRPumpConfigurationAndControlClusterElectronicNonFatalFailureEvent {}
impl PNSObject for MTRPumpConfigurationAndControlClusterElectronicNonFatalFailureEvent {}
impl std::convert::TryFrom<NSObject>
    for MTRPumpConfigurationAndControlClusterElectronicNonFatalFailureEvent
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPumpConfigurationAndControlClusterElectronicNonFatalFailureEvent, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterElectronicNonFatalFailureEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPumpConfigurationAndControlClusterElectronicNonFatalFailureEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPumpConfigurationAndControlClusterElectronicNonFatalFailureEvent" ,)
        }
    }
}
impl IMTRPumpConfigurationAndControlClusterElectronicNonFatalFailureEvent
    for MTRPumpConfigurationAndControlClusterElectronicNonFatalFailureEvent
{
}
pub trait IMTRPumpConfigurationAndControlClusterElectronicNonFatalFailureEvent:
    Sized + std::ops::Deref
{
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPumpConfigurationAndControlClusterElectronicFatalFailureEvent(pub id);
impl std::ops::Deref for MTRPumpConfigurationAndControlClusterElectronicFatalFailureEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPumpConfigurationAndControlClusterElectronicFatalFailureEvent {}
impl MTRPumpConfigurationAndControlClusterElectronicFatalFailureEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterElectronicFatalFailureEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPumpConfigurationAndControlClusterElectronicFatalFailureEvent {}
impl INSObject for MTRPumpConfigurationAndControlClusterElectronicFatalFailureEvent {}
impl PNSObject for MTRPumpConfigurationAndControlClusterElectronicFatalFailureEvent {}
impl std::convert::TryFrom<NSObject>
    for MTRPumpConfigurationAndControlClusterElectronicFatalFailureEvent
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPumpConfigurationAndControlClusterElectronicFatalFailureEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterElectronicFatalFailureEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPumpConfigurationAndControlClusterElectronicFatalFailureEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPumpConfigurationAndControlClusterElectronicFatalFailureEvent" ,)
        }
    }
}
impl IMTRPumpConfigurationAndControlClusterElectronicFatalFailureEvent
    for MTRPumpConfigurationAndControlClusterElectronicFatalFailureEvent
{
}
pub trait IMTRPumpConfigurationAndControlClusterElectronicFatalFailureEvent:
    Sized + std::ops::Deref
{
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPumpConfigurationAndControlClusterGeneralFaultEvent(pub id);
impl std::ops::Deref for MTRPumpConfigurationAndControlClusterGeneralFaultEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPumpConfigurationAndControlClusterGeneralFaultEvent {}
impl MTRPumpConfigurationAndControlClusterGeneralFaultEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterGeneralFaultEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPumpConfigurationAndControlClusterGeneralFaultEvent {}
impl INSObject for MTRPumpConfigurationAndControlClusterGeneralFaultEvent {}
impl PNSObject for MTRPumpConfigurationAndControlClusterGeneralFaultEvent {}
impl std::convert::TryFrom<NSObject> for MTRPumpConfigurationAndControlClusterGeneralFaultEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPumpConfigurationAndControlClusterGeneralFaultEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterGeneralFaultEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPumpConfigurationAndControlClusterGeneralFaultEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPumpConfigurationAndControlClusterGeneralFaultEvent" ,)
        }
    }
}
impl IMTRPumpConfigurationAndControlClusterGeneralFaultEvent
    for MTRPumpConfigurationAndControlClusterGeneralFaultEvent
{
}
pub trait IMTRPumpConfigurationAndControlClusterGeneralFaultEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPumpConfigurationAndControlClusterLeakageEvent(pub id);
impl std::ops::Deref for MTRPumpConfigurationAndControlClusterLeakageEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPumpConfigurationAndControlClusterLeakageEvent {}
impl MTRPumpConfigurationAndControlClusterLeakageEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterLeakageEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPumpConfigurationAndControlClusterLeakageEvent {}
impl INSObject for MTRPumpConfigurationAndControlClusterLeakageEvent {}
impl PNSObject for MTRPumpConfigurationAndControlClusterLeakageEvent {}
impl std::convert::TryFrom<NSObject> for MTRPumpConfigurationAndControlClusterLeakageEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPumpConfigurationAndControlClusterLeakageEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterLeakageEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPumpConfigurationAndControlClusterLeakageEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPumpConfigurationAndControlClusterLeakageEvent" ,)
        }
    }
}
impl IMTRPumpConfigurationAndControlClusterLeakageEvent
    for MTRPumpConfigurationAndControlClusterLeakageEvent
{
}
pub trait IMTRPumpConfigurationAndControlClusterLeakageEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPumpConfigurationAndControlClusterAirDetectionEvent(pub id);
impl std::ops::Deref for MTRPumpConfigurationAndControlClusterAirDetectionEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPumpConfigurationAndControlClusterAirDetectionEvent {}
impl MTRPumpConfigurationAndControlClusterAirDetectionEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterAirDetectionEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPumpConfigurationAndControlClusterAirDetectionEvent {}
impl INSObject for MTRPumpConfigurationAndControlClusterAirDetectionEvent {}
impl PNSObject for MTRPumpConfigurationAndControlClusterAirDetectionEvent {}
impl std::convert::TryFrom<NSObject> for MTRPumpConfigurationAndControlClusterAirDetectionEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPumpConfigurationAndControlClusterAirDetectionEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterAirDetectionEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPumpConfigurationAndControlClusterAirDetectionEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPumpConfigurationAndControlClusterAirDetectionEvent" ,)
        }
    }
}
impl IMTRPumpConfigurationAndControlClusterAirDetectionEvent
    for MTRPumpConfigurationAndControlClusterAirDetectionEvent
{
}
pub trait IMTRPumpConfigurationAndControlClusterAirDetectionEvent: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPumpConfigurationAndControlClusterTurbineOperationEvent(pub id);
impl std::ops::Deref for MTRPumpConfigurationAndControlClusterTurbineOperationEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPumpConfigurationAndControlClusterTurbineOperationEvent {}
impl MTRPumpConfigurationAndControlClusterTurbineOperationEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterTurbineOperationEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPumpConfigurationAndControlClusterTurbineOperationEvent {}
impl INSObject for MTRPumpConfigurationAndControlClusterTurbineOperationEvent {}
impl PNSObject for MTRPumpConfigurationAndControlClusterTurbineOperationEvent {}
impl std::convert::TryFrom<NSObject>
    for MTRPumpConfigurationAndControlClusterTurbineOperationEvent
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPumpConfigurationAndControlClusterTurbineOperationEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPumpConfigurationAndControlClusterTurbineOperationEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPumpConfigurationAndControlClusterTurbineOperationEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPumpConfigurationAndControlClusterTurbineOperationEvent" ,)
        }
    }
}
impl IMTRPumpConfigurationAndControlClusterTurbineOperationEvent
    for MTRPumpConfigurationAndControlClusterTurbineOperationEvent
{
}
pub trait IMTRPumpConfigurationAndControlClusterTurbineOperationEvent:
    Sized + std::ops::Deref
{
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterScheduleTransitionStruct(pub id);
impl std::ops::Deref for MTRThermostatClusterScheduleTransitionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterScheduleTransitionStruct {}
impl MTRThermostatClusterScheduleTransitionStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterScheduleTransitionStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRThermostatClusterScheduleTransitionStruct {}
impl INSObject for MTRThermostatClusterScheduleTransitionStruct {}
impl PNSObject for MTRThermostatClusterScheduleTransitionStruct {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterScheduleTransitionStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThermostatClusterScheduleTransitionStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterScheduleTransitionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterScheduleTransitionStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThermostatClusterScheduleTransitionStruct" ,)
        }
    }
}
impl IMTRThermostatClusterScheduleTransitionStruct
    for MTRThermostatClusterScheduleTransitionStruct
{
}
pub trait IMTRThermostatClusterScheduleTransitionStruct: Sized + std::ops::Deref {
    unsafe fn dayOfWeek(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dayOfWeek)
    }
    unsafe fn setDayOfWeek_(&self, dayOfWeek: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDayOfWeek : dayOfWeek)
    }
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn presetHandle(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, presetHandle)
    }
    unsafe fn setPresetHandle_(&self, presetHandle: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPresetHandle : presetHandle)
    }
    unsafe fn systemMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, systemMode)
    }
    unsafe fn setSystemMode_(&self, systemMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSystemMode : systemMode)
    }
    unsafe fn coolingSetpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, coolingSetpoint)
    }
    unsafe fn setCoolingSetpoint_(&self, coolingSetpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCoolingSetpoint : coolingSetpoint)
    }
    unsafe fn heatingSetpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, heatingSetpoint)
    }
    unsafe fn setHeatingSetpoint_(&self, heatingSetpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHeatingSetpoint : heatingSetpoint)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterScheduleStruct(pub id);
impl std::ops::Deref for MTRThermostatClusterScheduleStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterScheduleStruct {}
impl MTRThermostatClusterScheduleStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterScheduleStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRThermostatClusterScheduleStruct {}
impl INSObject for MTRThermostatClusterScheduleStruct {}
impl PNSObject for MTRThermostatClusterScheduleStruct {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterScheduleStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRThermostatClusterScheduleStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterScheduleStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterScheduleStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRThermostatClusterScheduleStruct")
        }
    }
}
impl IMTRThermostatClusterScheduleStruct for MTRThermostatClusterScheduleStruct {}
pub trait IMTRThermostatClusterScheduleStruct: Sized + std::ops::Deref {
    unsafe fn scheduleHandle(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, scheduleHandle)
    }
    unsafe fn setScheduleHandle_(&self, scheduleHandle: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setScheduleHandle : scheduleHandle)
    }
    unsafe fn systemMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, systemMode)
    }
    unsafe fn setSystemMode_(&self, systemMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSystemMode : systemMode)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn presetHandle(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, presetHandle)
    }
    unsafe fn setPresetHandle_(&self, presetHandle: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPresetHandle : presetHandle)
    }
    unsafe fn transitions(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitions)
    }
    unsafe fn setTransitions_(&self, transitions: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitions : transitions)
    }
    unsafe fn builtIn(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, builtIn)
    }
    unsafe fn setBuiltIn_(&self, builtIn: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBuiltIn : builtIn)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterPresetStruct(pub id);
impl std::ops::Deref for MTRThermostatClusterPresetStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterPresetStruct {}
impl MTRThermostatClusterPresetStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterPresetStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRThermostatClusterPresetStruct {}
impl INSObject for MTRThermostatClusterPresetStruct {}
impl PNSObject for MTRThermostatClusterPresetStruct {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterPresetStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRThermostatClusterPresetStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterPresetStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterPresetStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRThermostatClusterPresetStruct")
        }
    }
}
impl IMTRThermostatClusterPresetStruct for MTRThermostatClusterPresetStruct {}
pub trait IMTRThermostatClusterPresetStruct: Sized + std::ops::Deref {
    unsafe fn presetHandle(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, presetHandle)
    }
    unsafe fn setPresetHandle_(&self, presetHandle: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPresetHandle : presetHandle)
    }
    unsafe fn presetScenario(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, presetScenario)
    }
    unsafe fn setPresetScenario_(&self, presetScenario: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPresetScenario : presetScenario)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn coolingSetpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, coolingSetpoint)
    }
    unsafe fn setCoolingSetpoint_(&self, coolingSetpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCoolingSetpoint : coolingSetpoint)
    }
    unsafe fn heatingSetpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, heatingSetpoint)
    }
    unsafe fn setHeatingSetpoint_(&self, heatingSetpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHeatingSetpoint : heatingSetpoint)
    }
    unsafe fn builtIn(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, builtIn)
    }
    unsafe fn setBuiltIn_(&self, builtIn: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBuiltIn : builtIn)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterPresetTypeStruct(pub id);
impl std::ops::Deref for MTRThermostatClusterPresetTypeStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterPresetTypeStruct {}
impl MTRThermostatClusterPresetTypeStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterPresetTypeStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRThermostatClusterPresetTypeStruct {}
impl INSObject for MTRThermostatClusterPresetTypeStruct {}
impl PNSObject for MTRThermostatClusterPresetTypeStruct {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterPresetTypeStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRThermostatClusterPresetTypeStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterPresetTypeStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterPresetTypeStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRThermostatClusterPresetTypeStruct")
        }
    }
}
impl IMTRThermostatClusterPresetTypeStruct for MTRThermostatClusterPresetTypeStruct {}
pub trait IMTRThermostatClusterPresetTypeStruct: Sized + std::ops::Deref {
    unsafe fn presetScenario(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, presetScenario)
    }
    unsafe fn setPresetScenario_(&self, presetScenario: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPresetScenario : presetScenario)
    }
    unsafe fn numberOfPresets(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, numberOfPresets)
    }
    unsafe fn setNumberOfPresets_(&self, numberOfPresets: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNumberOfPresets : numberOfPresets)
    }
    unsafe fn presetTypeFeatures(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, presetTypeFeatures)
    }
    unsafe fn setPresetTypeFeatures_(&self, presetTypeFeatures: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPresetTypeFeatures : presetTypeFeatures)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterScheduleTypeStruct(pub id);
impl std::ops::Deref for MTRThermostatClusterScheduleTypeStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterScheduleTypeStruct {}
impl MTRThermostatClusterScheduleTypeStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterScheduleTypeStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRThermostatClusterScheduleTypeStruct {}
impl INSObject for MTRThermostatClusterScheduleTypeStruct {}
impl PNSObject for MTRThermostatClusterScheduleTypeStruct {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterScheduleTypeStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRThermostatClusterScheduleTypeStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterScheduleTypeStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterScheduleTypeStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRThermostatClusterScheduleTypeStruct")
        }
    }
}
impl IMTRThermostatClusterScheduleTypeStruct for MTRThermostatClusterScheduleTypeStruct {}
pub trait IMTRThermostatClusterScheduleTypeStruct: Sized + std::ops::Deref {
    unsafe fn systemMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, systemMode)
    }
    unsafe fn setSystemMode_(&self, systemMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSystemMode : systemMode)
    }
    unsafe fn numberOfSchedules(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, numberOfSchedules)
    }
    unsafe fn setNumberOfSchedules_(&self, numberOfSchedules: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNumberOfSchedules : numberOfSchedules)
    }
    unsafe fn scheduleTypeFeatures(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, scheduleTypeFeatures)
    }
    unsafe fn setScheduleTypeFeatures_(&self, scheduleTypeFeatures: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setScheduleTypeFeatures : scheduleTypeFeatures)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterThermostatSuggestionStruct(pub id);
impl std::ops::Deref for MTRThermostatClusterThermostatSuggestionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterThermostatSuggestionStruct {}
impl MTRThermostatClusterThermostatSuggestionStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterThermostatSuggestionStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThermostatClusterThermostatSuggestionStruct {}
impl INSObject for MTRThermostatClusterThermostatSuggestionStruct {}
impl PNSObject for MTRThermostatClusterThermostatSuggestionStruct {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterThermostatSuggestionStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThermostatClusterThermostatSuggestionStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterThermostatSuggestionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterThermostatSuggestionStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThermostatClusterThermostatSuggestionStruct" ,)
        }
    }
}
impl IMTRThermostatClusterThermostatSuggestionStruct
    for MTRThermostatClusterThermostatSuggestionStruct
{
}
pub trait IMTRThermostatClusterThermostatSuggestionStruct: Sized + std::ops::Deref {
    unsafe fn uniqueID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, uniqueID)
    }
    unsafe fn setUniqueID_(&self, uniqueID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUniqueID : uniqueID)
    }
    unsafe fn presetHandle(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, presetHandle)
    }
    unsafe fn setPresetHandle_(&self, presetHandle: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPresetHandle : presetHandle)
    }
    unsafe fn effectiveTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, effectiveTime)
    }
    unsafe fn setEffectiveTime_(&self, effectiveTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEffectiveTime : effectiveTime)
    }
    unsafe fn expirationTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, expirationTime)
    }
    unsafe fn setExpirationTime_(&self, expirationTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExpirationTime : expirationTime)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterWeeklyScheduleTransitionStruct(pub id);
impl std::ops::Deref for MTRThermostatClusterWeeklyScheduleTransitionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterWeeklyScheduleTransitionStruct {}
impl MTRThermostatClusterWeeklyScheduleTransitionStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterWeeklyScheduleTransitionStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThermostatClusterWeeklyScheduleTransitionStruct {}
impl INSObject for MTRThermostatClusterWeeklyScheduleTransitionStruct {}
impl PNSObject for MTRThermostatClusterWeeklyScheduleTransitionStruct {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterWeeklyScheduleTransitionStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThermostatClusterWeeklyScheduleTransitionStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterWeeklyScheduleTransitionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterWeeklyScheduleTransitionStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThermostatClusterWeeklyScheduleTransitionStruct" ,)
        }
    }
}
impl IMTRThermostatClusterWeeklyScheduleTransitionStruct
    for MTRThermostatClusterWeeklyScheduleTransitionStruct
{
}
pub trait IMTRThermostatClusterWeeklyScheduleTransitionStruct: Sized + std::ops::Deref {
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn heatSetpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, heatSetpoint)
    }
    unsafe fn setHeatSetpoint_(&self, heatSetpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHeatSetpoint : heatSetpoint)
    }
    unsafe fn coolSetpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, coolSetpoint)
    }
    unsafe fn setCoolSetpoint_(&self, coolSetpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCoolSetpoint : coolSetpoint)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterThermostatScheduleTransition(pub id);
impl std::ops::Deref for MTRThermostatClusterThermostatScheduleTransition {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterThermostatScheduleTransition {}
impl MTRThermostatClusterThermostatScheduleTransition {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterThermostatScheduleTransition").unwrap(), alloc)
        })
    }
}
impl IMTRThermostatClusterWeeklyScheduleTransitionStruct
    for MTRThermostatClusterThermostatScheduleTransition
{
}
impl PNSCopying for MTRThermostatClusterThermostatScheduleTransition {}
impl From<MTRThermostatClusterThermostatScheduleTransition>
    for MTRThermostatClusterWeeklyScheduleTransitionStruct
{
    fn from(
        child: MTRThermostatClusterThermostatScheduleTransition,
    ) -> MTRThermostatClusterWeeklyScheduleTransitionStruct {
        MTRThermostatClusterWeeklyScheduleTransitionStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRThermostatClusterWeeklyScheduleTransitionStruct>
    for MTRThermostatClusterThermostatScheduleTransition
{
    type Error = &'static str;
    fn try_from(
        parent: MTRThermostatClusterWeeklyScheduleTransitionStruct,
    ) -> Result<MTRThermostatClusterThermostatScheduleTransition, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterThermostatScheduleTransition").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterThermostatScheduleTransition(parent.0))
        } else {
            Err ("This MTRThermostatClusterWeeklyScheduleTransitionStruct cannot be downcasted to MTRThermostatClusterThermostatScheduleTransition" ,)
        }
    }
}
impl INSObject for MTRThermostatClusterThermostatScheduleTransition {}
impl PNSObject for MTRThermostatClusterThermostatScheduleTransition {}
impl IMTRThermostatClusterThermostatScheduleTransition
    for MTRThermostatClusterThermostatScheduleTransition
{
}
pub trait IMTRThermostatClusterThermostatScheduleTransition: Sized + std::ops::Deref {
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn heatSetpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, heatSetpoint)
    }
    unsafe fn setHeatSetpoint_(&self, heatSetpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHeatSetpoint : heatSetpoint)
    }
    unsafe fn coolSetpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, coolSetpoint)
    }
    unsafe fn setCoolSetpoint_(&self, coolSetpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCoolSetpoint : coolSetpoint)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterSystemModeChangeEvent(pub id);
impl std::ops::Deref for MTRThermostatClusterSystemModeChangeEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterSystemModeChangeEvent {}
impl MTRThermostatClusterSystemModeChangeEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterSystemModeChangeEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRThermostatClusterSystemModeChangeEvent {}
impl INSObject for MTRThermostatClusterSystemModeChangeEvent {}
impl PNSObject for MTRThermostatClusterSystemModeChangeEvent {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterSystemModeChangeEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThermostatClusterSystemModeChangeEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterSystemModeChangeEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterSystemModeChangeEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRThermostatClusterSystemModeChangeEvent")
        }
    }
}
impl IMTRThermostatClusterSystemModeChangeEvent for MTRThermostatClusterSystemModeChangeEvent {}
pub trait IMTRThermostatClusterSystemModeChangeEvent: Sized + std::ops::Deref {
    unsafe fn previousSystemMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previousSystemMode)
    }
    unsafe fn setPreviousSystemMode_(&self, previousSystemMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPreviousSystemMode : previousSystemMode)
    }
    unsafe fn currentSystemMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentSystemMode)
    }
    unsafe fn setCurrentSystemMode_(&self, currentSystemMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrentSystemMode : currentSystemMode)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterLocalTemperatureChangeEvent(pub id);
impl std::ops::Deref for MTRThermostatClusterLocalTemperatureChangeEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterLocalTemperatureChangeEvent {}
impl MTRThermostatClusterLocalTemperatureChangeEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterLocalTemperatureChangeEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThermostatClusterLocalTemperatureChangeEvent {}
impl INSObject for MTRThermostatClusterLocalTemperatureChangeEvent {}
impl PNSObject for MTRThermostatClusterLocalTemperatureChangeEvent {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterLocalTemperatureChangeEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThermostatClusterLocalTemperatureChangeEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterLocalTemperatureChangeEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterLocalTemperatureChangeEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThermostatClusterLocalTemperatureChangeEvent" ,)
        }
    }
}
impl IMTRThermostatClusterLocalTemperatureChangeEvent
    for MTRThermostatClusterLocalTemperatureChangeEvent
{
}
pub trait IMTRThermostatClusterLocalTemperatureChangeEvent: Sized + std::ops::Deref {
    unsafe fn currentLocalTemperature(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentLocalTemperature)
    }
    unsafe fn setCurrentLocalTemperature_(&self, currentLocalTemperature: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrentLocalTemperature : currentLocalTemperature)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterOccupancyChangeEvent(pub id);
impl std::ops::Deref for MTRThermostatClusterOccupancyChangeEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterOccupancyChangeEvent {}
impl MTRThermostatClusterOccupancyChangeEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterOccupancyChangeEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRThermostatClusterOccupancyChangeEvent {}
impl INSObject for MTRThermostatClusterOccupancyChangeEvent {}
impl PNSObject for MTRThermostatClusterOccupancyChangeEvent {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterOccupancyChangeEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRThermostatClusterOccupancyChangeEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterOccupancyChangeEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterOccupancyChangeEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRThermostatClusterOccupancyChangeEvent")
        }
    }
}
impl IMTRThermostatClusterOccupancyChangeEvent for MTRThermostatClusterOccupancyChangeEvent {}
pub trait IMTRThermostatClusterOccupancyChangeEvent: Sized + std::ops::Deref {
    unsafe fn previousOccupancy(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previousOccupancy)
    }
    unsafe fn setPreviousOccupancy_(&self, previousOccupancy: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPreviousOccupancy : previousOccupancy)
    }
    unsafe fn currentOccupancy(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentOccupancy)
    }
    unsafe fn setCurrentOccupancy_(&self, currentOccupancy: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrentOccupancy : currentOccupancy)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterSetpointChangeEvent(pub id);
impl std::ops::Deref for MTRThermostatClusterSetpointChangeEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterSetpointChangeEvent {}
impl MTRThermostatClusterSetpointChangeEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterSetpointChangeEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRThermostatClusterSetpointChangeEvent {}
impl INSObject for MTRThermostatClusterSetpointChangeEvent {}
impl PNSObject for MTRThermostatClusterSetpointChangeEvent {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterSetpointChangeEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRThermostatClusterSetpointChangeEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterSetpointChangeEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterSetpointChangeEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRThermostatClusterSetpointChangeEvent")
        }
    }
}
impl IMTRThermostatClusterSetpointChangeEvent for MTRThermostatClusterSetpointChangeEvent {}
pub trait IMTRThermostatClusterSetpointChangeEvent: Sized + std::ops::Deref {
    unsafe fn systemMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, systemMode)
    }
    unsafe fn setSystemMode_(&self, systemMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSystemMode : systemMode)
    }
    unsafe fn occupancy(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, occupancy)
    }
    unsafe fn setOccupancy_(&self, occupancy: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOccupancy : occupancy)
    }
    unsafe fn previousSetpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previousSetpoint)
    }
    unsafe fn setPreviousSetpoint_(&self, previousSetpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPreviousSetpoint : previousSetpoint)
    }
    unsafe fn currentSetpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentSetpoint)
    }
    unsafe fn setCurrentSetpoint_(&self, currentSetpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrentSetpoint : currentSetpoint)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterRunningStateChangeEvent(pub id);
impl std::ops::Deref for MTRThermostatClusterRunningStateChangeEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterRunningStateChangeEvent {}
impl MTRThermostatClusterRunningStateChangeEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterRunningStateChangeEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRThermostatClusterRunningStateChangeEvent {}
impl INSObject for MTRThermostatClusterRunningStateChangeEvent {}
impl PNSObject for MTRThermostatClusterRunningStateChangeEvent {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterRunningStateChangeEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThermostatClusterRunningStateChangeEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterRunningStateChangeEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterRunningStateChangeEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRThermostatClusterRunningStateChangeEvent")
        }
    }
}
impl IMTRThermostatClusterRunningStateChangeEvent for MTRThermostatClusterRunningStateChangeEvent {}
pub trait IMTRThermostatClusterRunningStateChangeEvent: Sized + std::ops::Deref {
    unsafe fn previousRunningState(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previousRunningState)
    }
    unsafe fn setPreviousRunningState_(&self, previousRunningState: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPreviousRunningState : previousRunningState)
    }
    unsafe fn currentRunningState(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentRunningState)
    }
    unsafe fn setCurrentRunningState_(&self, currentRunningState: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrentRunningState : currentRunningState)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterRunningModeChangeEvent(pub id);
impl std::ops::Deref for MTRThermostatClusterRunningModeChangeEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterRunningModeChangeEvent {}
impl MTRThermostatClusterRunningModeChangeEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterRunningModeChangeEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRThermostatClusterRunningModeChangeEvent {}
impl INSObject for MTRThermostatClusterRunningModeChangeEvent {}
impl PNSObject for MTRThermostatClusterRunningModeChangeEvent {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterRunningModeChangeEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThermostatClusterRunningModeChangeEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterRunningModeChangeEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterRunningModeChangeEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRThermostatClusterRunningModeChangeEvent")
        }
    }
}
impl IMTRThermostatClusterRunningModeChangeEvent for MTRThermostatClusterRunningModeChangeEvent {}
pub trait IMTRThermostatClusterRunningModeChangeEvent: Sized + std::ops::Deref {
    unsafe fn previousRunningMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previousRunningMode)
    }
    unsafe fn setPreviousRunningMode_(&self, previousRunningMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPreviousRunningMode : previousRunningMode)
    }
    unsafe fn currentRunningMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentRunningMode)
    }
    unsafe fn setCurrentRunningMode_(&self, currentRunningMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrentRunningMode : currentRunningMode)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterActiveScheduleChangeEvent(pub id);
impl std::ops::Deref for MTRThermostatClusterActiveScheduleChangeEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterActiveScheduleChangeEvent {}
impl MTRThermostatClusterActiveScheduleChangeEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterActiveScheduleChangeEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRThermostatClusterActiveScheduleChangeEvent {}
impl INSObject for MTRThermostatClusterActiveScheduleChangeEvent {}
impl PNSObject for MTRThermostatClusterActiveScheduleChangeEvent {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterActiveScheduleChangeEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThermostatClusterActiveScheduleChangeEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterActiveScheduleChangeEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterActiveScheduleChangeEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThermostatClusterActiveScheduleChangeEvent" ,)
        }
    }
}
impl IMTRThermostatClusterActiveScheduleChangeEvent
    for MTRThermostatClusterActiveScheduleChangeEvent
{
}
pub trait IMTRThermostatClusterActiveScheduleChangeEvent: Sized + std::ops::Deref {
    unsafe fn previousScheduleHandle(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previousScheduleHandle)
    }
    unsafe fn setPreviousScheduleHandle_(&self, previousScheduleHandle: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPreviousScheduleHandle : previousScheduleHandle)
    }
    unsafe fn currentScheduleHandle(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentScheduleHandle)
    }
    unsafe fn setCurrentScheduleHandle_(&self, currentScheduleHandle: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrentScheduleHandle : currentScheduleHandle)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterActivePresetChangeEvent(pub id);
impl std::ops::Deref for MTRThermostatClusterActivePresetChangeEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterActivePresetChangeEvent {}
impl MTRThermostatClusterActivePresetChangeEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterActivePresetChangeEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRThermostatClusterActivePresetChangeEvent {}
impl INSObject for MTRThermostatClusterActivePresetChangeEvent {}
impl PNSObject for MTRThermostatClusterActivePresetChangeEvent {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterActivePresetChangeEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThermostatClusterActivePresetChangeEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterActivePresetChangeEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterActivePresetChangeEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRThermostatClusterActivePresetChangeEvent")
        }
    }
}
impl IMTRThermostatClusterActivePresetChangeEvent for MTRThermostatClusterActivePresetChangeEvent {}
pub trait IMTRThermostatClusterActivePresetChangeEvent: Sized + std::ops::Deref {
    unsafe fn previousPresetHandle(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previousPresetHandle)
    }
    unsafe fn setPreviousPresetHandle_(&self, previousPresetHandle: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPreviousPresetHandle : previousPresetHandle)
    }
    unsafe fn currentPresetHandle(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentPresetHandle)
    }
    unsafe fn setCurrentPresetHandle_(&self, currentPresetHandle: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrentPresetHandle : currentPresetHandle)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROccupancySensingClusterHoldTimeLimitsStruct(pub id);
impl std::ops::Deref for MTROccupancySensingClusterHoldTimeLimitsStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROccupancySensingClusterHoldTimeLimitsStruct {}
impl MTROccupancySensingClusterHoldTimeLimitsStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROccupancySensingClusterHoldTimeLimitsStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROccupancySensingClusterHoldTimeLimitsStruct {}
impl INSObject for MTROccupancySensingClusterHoldTimeLimitsStruct {}
impl PNSObject for MTROccupancySensingClusterHoldTimeLimitsStruct {}
impl std::convert::TryFrom<NSObject> for MTROccupancySensingClusterHoldTimeLimitsStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROccupancySensingClusterHoldTimeLimitsStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROccupancySensingClusterHoldTimeLimitsStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTROccupancySensingClusterHoldTimeLimitsStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROccupancySensingClusterHoldTimeLimitsStruct" ,)
        }
    }
}
impl IMTROccupancySensingClusterHoldTimeLimitsStruct
    for MTROccupancySensingClusterHoldTimeLimitsStruct
{
}
pub trait IMTROccupancySensingClusterHoldTimeLimitsStruct: Sized + std::ops::Deref {
    unsafe fn holdTimeMin(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, holdTimeMin)
    }
    unsafe fn setHoldTimeMin_(&self, holdTimeMin: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHoldTimeMin : holdTimeMin)
    }
    unsafe fn holdTimeMax(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, holdTimeMax)
    }
    unsafe fn setHoldTimeMax_(&self, holdTimeMax: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHoldTimeMax : holdTimeMax)
    }
    unsafe fn holdTimeDefault(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, holdTimeDefault)
    }
    unsafe fn setHoldTimeDefault_(&self, holdTimeDefault: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHoldTimeDefault : holdTimeDefault)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROccupancySensingClusterOccupancyChangedEvent(pub id);
impl std::ops::Deref for MTROccupancySensingClusterOccupancyChangedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROccupancySensingClusterOccupancyChangedEvent {}
impl MTROccupancySensingClusterOccupancyChangedEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROccupancySensingClusterOccupancyChangedEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROccupancySensingClusterOccupancyChangedEvent {}
impl INSObject for MTROccupancySensingClusterOccupancyChangedEvent {}
impl PNSObject for MTROccupancySensingClusterOccupancyChangedEvent {}
impl std::convert::TryFrom<NSObject> for MTROccupancySensingClusterOccupancyChangedEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROccupancySensingClusterOccupancyChangedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROccupancySensingClusterOccupancyChangedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTROccupancySensingClusterOccupancyChangedEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROccupancySensingClusterOccupancyChangedEvent" ,)
        }
    }
}
impl IMTROccupancySensingClusterOccupancyChangedEvent
    for MTROccupancySensingClusterOccupancyChangedEvent
{
}
pub trait IMTROccupancySensingClusterOccupancyChangedEvent: Sized + std::ops::Deref {
    unsafe fn occupancy(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, occupancy)
    }
    unsafe fn setOccupancy_(&self, occupancy: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOccupancy : occupancy)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThreadNetworkDirectoryClusterThreadNetworkStruct(pub id);
impl std::ops::Deref for MTRThreadNetworkDirectoryClusterThreadNetworkStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThreadNetworkDirectoryClusterThreadNetworkStruct {}
impl MTRThreadNetworkDirectoryClusterThreadNetworkStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThreadNetworkDirectoryClusterThreadNetworkStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThreadNetworkDirectoryClusterThreadNetworkStruct {}
impl INSObject for MTRThreadNetworkDirectoryClusterThreadNetworkStruct {}
impl PNSObject for MTRThreadNetworkDirectoryClusterThreadNetworkStruct {}
impl std::convert::TryFrom<NSObject> for MTRThreadNetworkDirectoryClusterThreadNetworkStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThreadNetworkDirectoryClusterThreadNetworkStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThreadNetworkDirectoryClusterThreadNetworkStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRThreadNetworkDirectoryClusterThreadNetworkStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThreadNetworkDirectoryClusterThreadNetworkStruct" ,)
        }
    }
}
impl IMTRThreadNetworkDirectoryClusterThreadNetworkStruct
    for MTRThreadNetworkDirectoryClusterThreadNetworkStruct
{
}
pub trait IMTRThreadNetworkDirectoryClusterThreadNetworkStruct: Sized + std::ops::Deref {
    unsafe fn extendedPanID(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, extendedPanID)
    }
    unsafe fn setExtendedPanID_(&self, extendedPanID: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExtendedPanID : extendedPanID)
    }
    unsafe fn networkName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkName)
    }
    unsafe fn setNetworkName_(&self, networkName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNetworkName : networkName)
    }
    unsafe fn channel(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, channel)
    }
    unsafe fn setChannel_(&self, channel: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChannel : channel)
    }
    unsafe fn activeTimestamp(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, activeTimestamp)
    }
    unsafe fn setActiveTimestamp_(&self, activeTimestamp: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActiveTimestamp : activeTimestamp)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRChannelClusterProgramCastStruct(pub id);
impl std::ops::Deref for MTRChannelClusterProgramCastStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRChannelClusterProgramCastStruct {}
impl MTRChannelClusterProgramCastStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRChannelClusterProgramCastStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRChannelClusterProgramCastStruct {}
impl INSObject for MTRChannelClusterProgramCastStruct {}
impl PNSObject for MTRChannelClusterProgramCastStruct {}
impl std::convert::TryFrom<NSObject> for MTRChannelClusterProgramCastStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRChannelClusterProgramCastStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRChannelClusterProgramCastStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRChannelClusterProgramCastStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRChannelClusterProgramCastStruct")
        }
    }
}
impl IMTRChannelClusterProgramCastStruct for MTRChannelClusterProgramCastStruct {}
pub trait IMTRChannelClusterProgramCastStruct: Sized + std::ops::Deref {
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn role(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, role)
    }
    unsafe fn setRole_(&self, role: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRole : role)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRChannelClusterProgramCategoryStruct(pub id);
impl std::ops::Deref for MTRChannelClusterProgramCategoryStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRChannelClusterProgramCategoryStruct {}
impl MTRChannelClusterProgramCategoryStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRChannelClusterProgramCategoryStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRChannelClusterProgramCategoryStruct {}
impl INSObject for MTRChannelClusterProgramCategoryStruct {}
impl PNSObject for MTRChannelClusterProgramCategoryStruct {}
impl std::convert::TryFrom<NSObject> for MTRChannelClusterProgramCategoryStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRChannelClusterProgramCategoryStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRChannelClusterProgramCategoryStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRChannelClusterProgramCategoryStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRChannelClusterProgramCategoryStruct")
        }
    }
}
impl IMTRChannelClusterProgramCategoryStruct for MTRChannelClusterProgramCategoryStruct {}
pub trait IMTRChannelClusterProgramCategoryStruct: Sized + std::ops::Deref {
    unsafe fn category(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, category)
    }
    unsafe fn setCategory_(&self, category: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCategory : category)
    }
    unsafe fn subCategory(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, subCategory)
    }
    unsafe fn setSubCategory_(&self, subCategory: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSubCategory : subCategory)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRChannelClusterSeriesInfoStruct(pub id);
impl std::ops::Deref for MTRChannelClusterSeriesInfoStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRChannelClusterSeriesInfoStruct {}
impl MTRChannelClusterSeriesInfoStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRChannelClusterSeriesInfoStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRChannelClusterSeriesInfoStruct {}
impl INSObject for MTRChannelClusterSeriesInfoStruct {}
impl PNSObject for MTRChannelClusterSeriesInfoStruct {}
impl std::convert::TryFrom<NSObject> for MTRChannelClusterSeriesInfoStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRChannelClusterSeriesInfoStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRChannelClusterSeriesInfoStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRChannelClusterSeriesInfoStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRChannelClusterSeriesInfoStruct")
        }
    }
}
impl IMTRChannelClusterSeriesInfoStruct for MTRChannelClusterSeriesInfoStruct {}
pub trait IMTRChannelClusterSeriesInfoStruct: Sized + std::ops::Deref {
    unsafe fn season(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, season)
    }
    unsafe fn setSeason_(&self, season: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSeason : season)
    }
    unsafe fn episode(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, episode)
    }
    unsafe fn setEpisode_(&self, episode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEpisode : episode)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRChannelClusterChannelInfoStruct(pub id);
impl std::ops::Deref for MTRChannelClusterChannelInfoStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRChannelClusterChannelInfoStruct {}
impl MTRChannelClusterChannelInfoStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRChannelClusterChannelInfoStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRChannelClusterChannelInfoStruct {}
impl INSObject for MTRChannelClusterChannelInfoStruct {}
impl PNSObject for MTRChannelClusterChannelInfoStruct {}
impl std::convert::TryFrom<NSObject> for MTRChannelClusterChannelInfoStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRChannelClusterChannelInfoStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRChannelClusterChannelInfoStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRChannelClusterChannelInfoStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRChannelClusterChannelInfoStruct")
        }
    }
}
impl IMTRChannelClusterChannelInfoStruct for MTRChannelClusterChannelInfoStruct {}
pub trait IMTRChannelClusterChannelInfoStruct: Sized + std::ops::Deref {
    unsafe fn majorNumber(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, majorNumber)
    }
    unsafe fn setMajorNumber_(&self, majorNumber: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMajorNumber : majorNumber)
    }
    unsafe fn minorNumber(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minorNumber)
    }
    unsafe fn setMinorNumber_(&self, minorNumber: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinorNumber : minorNumber)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn callSign(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, callSign)
    }
    unsafe fn setCallSign_(&self, callSign: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCallSign : callSign)
    }
    unsafe fn affiliateCallSign(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, affiliateCallSign)
    }
    unsafe fn setAffiliateCallSign_(&self, affiliateCallSign: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAffiliateCallSign : affiliateCallSign)
    }
    unsafe fn identifier(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, identifier)
    }
    unsafe fn setIdentifier_(&self, identifier: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIdentifier : identifier)
    }
    unsafe fn type_(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, type)
    }
    unsafe fn setType_(&self, type_: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setType : type_)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRChannelClusterChannelInfo(pub id);
impl std::ops::Deref for MTRChannelClusterChannelInfo {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRChannelClusterChannelInfo {}
impl MTRChannelClusterChannelInfo {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRChannelClusterChannelInfo").unwrap(), alloc) })
    }
}
impl IMTRChannelClusterChannelInfoStruct for MTRChannelClusterChannelInfo {}
impl PNSCopying for MTRChannelClusterChannelInfo {}
impl From<MTRChannelClusterChannelInfo> for MTRChannelClusterChannelInfoStruct {
    fn from(child: MTRChannelClusterChannelInfo) -> MTRChannelClusterChannelInfoStruct {
        MTRChannelClusterChannelInfoStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRChannelClusterChannelInfoStruct> for MTRChannelClusterChannelInfo {
    type Error = &'static str;
    fn try_from(
        parent: MTRChannelClusterChannelInfoStruct,
    ) -> Result<MTRChannelClusterChannelInfo, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRChannelClusterChannelInfo").unwrap()) };
        if is_kind_of {
            Ok(MTRChannelClusterChannelInfo(parent.0))
        } else {
            Err ("This MTRChannelClusterChannelInfoStruct cannot be downcasted to MTRChannelClusterChannelInfo" ,)
        }
    }
}
impl INSObject for MTRChannelClusterChannelInfo {}
impl PNSObject for MTRChannelClusterChannelInfo {}
impl IMTRChannelClusterChannelInfo for MTRChannelClusterChannelInfo {}
pub trait IMTRChannelClusterChannelInfo: Sized + std::ops::Deref {
    unsafe fn majorNumber(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, majorNumber)
    }
    unsafe fn setMajorNumber_(&self, majorNumber: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMajorNumber : majorNumber)
    }
    unsafe fn minorNumber(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minorNumber)
    }
    unsafe fn setMinorNumber_(&self, minorNumber: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinorNumber : minorNumber)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn callSign(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, callSign)
    }
    unsafe fn setCallSign_(&self, callSign: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCallSign : callSign)
    }
    unsafe fn affiliateCallSign(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, affiliateCallSign)
    }
    unsafe fn setAffiliateCallSign_(&self, affiliateCallSign: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAffiliateCallSign : affiliateCallSign)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRChannelClusterProgramStruct(pub id);
impl std::ops::Deref for MTRChannelClusterProgramStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRChannelClusterProgramStruct {}
impl MTRChannelClusterProgramStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRChannelClusterProgramStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRChannelClusterProgramStruct {}
impl INSObject for MTRChannelClusterProgramStruct {}
impl PNSObject for MTRChannelClusterProgramStruct {}
impl std::convert::TryFrom<NSObject> for MTRChannelClusterProgramStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRChannelClusterProgramStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRChannelClusterProgramStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRChannelClusterProgramStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRChannelClusterProgramStruct")
        }
    }
}
impl IMTRChannelClusterProgramStruct for MTRChannelClusterProgramStruct {}
pub trait IMTRChannelClusterProgramStruct: Sized + std::ops::Deref {
    unsafe fn identifier(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, identifier)
    }
    unsafe fn setIdentifier_(&self, identifier: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIdentifier : identifier)
    }
    unsafe fn channel(&self) -> MTRChannelClusterChannelInfoStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, channel)
    }
    unsafe fn setChannel_(&self, channel: MTRChannelClusterChannelInfoStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChannel : channel)
    }
    unsafe fn startTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startTime)
    }
    unsafe fn setStartTime_(&self, startTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartTime : startTime)
    }
    unsafe fn endTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endTime)
    }
    unsafe fn setEndTime_(&self, endTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndTime : endTime)
    }
    unsafe fn title(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, title)
    }
    unsafe fn setTitle_(&self, title: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTitle : title)
    }
    unsafe fn subtitle(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, subtitle)
    }
    unsafe fn setSubtitle_(&self, subtitle: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSubtitle : subtitle)
    }
    unsafe fn descriptionString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, descriptionString)
    }
    unsafe fn setDescriptionString_(&self, descriptionString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDescriptionString : descriptionString)
    }
    unsafe fn audioLanguages(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, audioLanguages)
    }
    unsafe fn setAudioLanguages_(&self, audioLanguages: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAudioLanguages : audioLanguages)
    }
    unsafe fn ratings(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ratings)
    }
    unsafe fn setRatings_(&self, ratings: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRatings : ratings)
    }
    unsafe fn thumbnailUrl(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, thumbnailUrl)
    }
    unsafe fn setThumbnailUrl_(&self, thumbnailUrl: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setThumbnailUrl : thumbnailUrl)
    }
    unsafe fn posterArtUrl(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, posterArtUrl)
    }
    unsafe fn setPosterArtUrl_(&self, posterArtUrl: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPosterArtUrl : posterArtUrl)
    }
    unsafe fn dvbiUrl(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dvbiUrl)
    }
    unsafe fn setDvbiUrl_(&self, dvbiUrl: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDvbiUrl : dvbiUrl)
    }
    unsafe fn releaseDate(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, releaseDate)
    }
    unsafe fn setReleaseDate_(&self, releaseDate: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReleaseDate : releaseDate)
    }
    unsafe fn parentalGuidanceText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, parentalGuidanceText)
    }
    unsafe fn setParentalGuidanceText_(&self, parentalGuidanceText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setParentalGuidanceText : parentalGuidanceText)
    }
    unsafe fn recordingFlag(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, recordingFlag)
    }
    unsafe fn setRecordingFlag_(&self, recordingFlag: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRecordingFlag : recordingFlag)
    }
    unsafe fn seriesInfo(&self) -> MTRChannelClusterSeriesInfoStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, seriesInfo)
    }
    unsafe fn setSeriesInfo_(&self, seriesInfo: MTRChannelClusterSeriesInfoStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSeriesInfo : seriesInfo)
    }
    unsafe fn categoryList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, categoryList)
    }
    unsafe fn setCategoryList_(&self, categoryList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCategoryList : categoryList)
    }
    unsafe fn castList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, castList)
    }
    unsafe fn setCastList_(&self, castList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCastList : castList)
    }
    unsafe fn externalIDList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, externalIDList)
    }
    unsafe fn setExternalIDList_(&self, externalIDList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExternalIDList : externalIDList)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRChannelClusterPageTokenStruct(pub id);
impl std::ops::Deref for MTRChannelClusterPageTokenStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRChannelClusterPageTokenStruct {}
impl MTRChannelClusterPageTokenStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRChannelClusterPageTokenStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRChannelClusterPageTokenStruct {}
impl INSObject for MTRChannelClusterPageTokenStruct {}
impl PNSObject for MTRChannelClusterPageTokenStruct {}
impl std::convert::TryFrom<NSObject> for MTRChannelClusterPageTokenStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRChannelClusterPageTokenStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRChannelClusterPageTokenStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRChannelClusterPageTokenStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRChannelClusterPageTokenStruct")
        }
    }
}
impl IMTRChannelClusterPageTokenStruct for MTRChannelClusterPageTokenStruct {}
pub trait IMTRChannelClusterPageTokenStruct: Sized + std::ops::Deref {
    unsafe fn limit(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, limit)
    }
    unsafe fn setLimit_(&self, limit: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLimit : limit)
    }
    unsafe fn after(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, after)
    }
    unsafe fn setAfter_(&self, after: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAfter : after)
    }
    unsafe fn before(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, before)
    }
    unsafe fn setBefore_(&self, before: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBefore : before)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRChannelClusterChannelPagingStruct(pub id);
impl std::ops::Deref for MTRChannelClusterChannelPagingStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRChannelClusterChannelPagingStruct {}
impl MTRChannelClusterChannelPagingStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRChannelClusterChannelPagingStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRChannelClusterChannelPagingStruct {}
impl INSObject for MTRChannelClusterChannelPagingStruct {}
impl PNSObject for MTRChannelClusterChannelPagingStruct {}
impl std::convert::TryFrom<NSObject> for MTRChannelClusterChannelPagingStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRChannelClusterChannelPagingStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRChannelClusterChannelPagingStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRChannelClusterChannelPagingStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRChannelClusterChannelPagingStruct")
        }
    }
}
impl IMTRChannelClusterChannelPagingStruct for MTRChannelClusterChannelPagingStruct {}
pub trait IMTRChannelClusterChannelPagingStruct: Sized + std::ops::Deref {
    unsafe fn previousToken(&self) -> MTRChannelClusterPageTokenStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previousToken)
    }
    unsafe fn setPreviousToken_(&self, previousToken: MTRChannelClusterPageTokenStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPreviousToken : previousToken)
    }
    unsafe fn nextToken(&self) -> MTRChannelClusterPageTokenStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nextToken)
    }
    unsafe fn setNextToken_(&self, nextToken: MTRChannelClusterPageTokenStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNextToken : nextToken)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRChannelClusterAdditionalInfoStruct(pub id);
impl std::ops::Deref for MTRChannelClusterAdditionalInfoStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRChannelClusterAdditionalInfoStruct {}
impl MTRChannelClusterAdditionalInfoStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRChannelClusterAdditionalInfoStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRChannelClusterAdditionalInfoStruct {}
impl INSObject for MTRChannelClusterAdditionalInfoStruct {}
impl PNSObject for MTRChannelClusterAdditionalInfoStruct {}
impl std::convert::TryFrom<NSObject> for MTRChannelClusterAdditionalInfoStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRChannelClusterAdditionalInfoStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRChannelClusterAdditionalInfoStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRChannelClusterAdditionalInfoStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRChannelClusterAdditionalInfoStruct")
        }
    }
}
impl IMTRChannelClusterAdditionalInfoStruct for MTRChannelClusterAdditionalInfoStruct {}
pub trait IMTRChannelClusterAdditionalInfoStruct: Sized + std::ops::Deref {
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn value(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRChannelClusterLineupInfoStruct(pub id);
impl std::ops::Deref for MTRChannelClusterLineupInfoStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRChannelClusterLineupInfoStruct {}
impl MTRChannelClusterLineupInfoStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRChannelClusterLineupInfoStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRChannelClusterLineupInfoStruct {}
impl INSObject for MTRChannelClusterLineupInfoStruct {}
impl PNSObject for MTRChannelClusterLineupInfoStruct {}
impl std::convert::TryFrom<NSObject> for MTRChannelClusterLineupInfoStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRChannelClusterLineupInfoStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRChannelClusterLineupInfoStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRChannelClusterLineupInfoStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRChannelClusterLineupInfoStruct")
        }
    }
}
impl IMTRChannelClusterLineupInfoStruct for MTRChannelClusterLineupInfoStruct {}
pub trait IMTRChannelClusterLineupInfoStruct: Sized + std::ops::Deref {
    unsafe fn operatorName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operatorName)
    }
    unsafe fn setOperatorName_(&self, operatorName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperatorName : operatorName)
    }
    unsafe fn lineupName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lineupName)
    }
    unsafe fn setLineupName_(&self, lineupName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLineupName : lineupName)
    }
    unsafe fn postalCode(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, postalCode)
    }
    unsafe fn setPostalCode_(&self, postalCode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPostalCode : postalCode)
    }
    unsafe fn lineupInfoType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lineupInfoType)
    }
    unsafe fn setLineupInfoType_(&self, lineupInfoType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLineupInfoType : lineupInfoType)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRChannelClusterLineupInfo(pub id);
impl std::ops::Deref for MTRChannelClusterLineupInfo {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRChannelClusterLineupInfo {}
impl MTRChannelClusterLineupInfo {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRChannelClusterLineupInfo").unwrap(), alloc) })
    }
}
impl IMTRChannelClusterLineupInfoStruct for MTRChannelClusterLineupInfo {}
impl PNSCopying for MTRChannelClusterLineupInfo {}
impl From<MTRChannelClusterLineupInfo> for MTRChannelClusterLineupInfoStruct {
    fn from(child: MTRChannelClusterLineupInfo) -> MTRChannelClusterLineupInfoStruct {
        MTRChannelClusterLineupInfoStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRChannelClusterLineupInfoStruct> for MTRChannelClusterLineupInfo {
    type Error = &'static str;
    fn try_from(
        parent: MTRChannelClusterLineupInfoStruct,
    ) -> Result<MTRChannelClusterLineupInfo, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRChannelClusterLineupInfo").unwrap()) };
        if is_kind_of {
            Ok(MTRChannelClusterLineupInfo(parent.0))
        } else {
            Err ("This MTRChannelClusterLineupInfoStruct cannot be downcasted to MTRChannelClusterLineupInfo" ,)
        }
    }
}
impl INSObject for MTRChannelClusterLineupInfo {}
impl PNSObject for MTRChannelClusterLineupInfo {}
impl IMTRChannelClusterLineupInfo for MTRChannelClusterLineupInfo {}
pub trait IMTRChannelClusterLineupInfo: Sized + std::ops::Deref {
    unsafe fn operatorName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operatorName)
    }
    unsafe fn setOperatorName_(&self, operatorName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperatorName : operatorName)
    }
    unsafe fn lineupName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lineupName)
    }
    unsafe fn setLineupName_(&self, lineupName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLineupName : lineupName)
    }
    unsafe fn postalCode(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, postalCode)
    }
    unsafe fn setPostalCode_(&self, postalCode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPostalCode : postalCode)
    }
    unsafe fn lineupInfoType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lineupInfoType)
    }
    unsafe fn setLineupInfoType_(&self, lineupInfoType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLineupInfoType : lineupInfoType)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTargetNavigatorClusterTargetInfoStruct(pub id);
impl std::ops::Deref for MTRTargetNavigatorClusterTargetInfoStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTargetNavigatorClusterTargetInfoStruct {}
impl MTRTargetNavigatorClusterTargetInfoStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTargetNavigatorClusterTargetInfoStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRTargetNavigatorClusterTargetInfoStruct {}
impl INSObject for MTRTargetNavigatorClusterTargetInfoStruct {}
impl PNSObject for MTRTargetNavigatorClusterTargetInfoStruct {}
impl std::convert::TryFrom<NSObject> for MTRTargetNavigatorClusterTargetInfoStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTargetNavigatorClusterTargetInfoStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTargetNavigatorClusterTargetInfoStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRTargetNavigatorClusterTargetInfoStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRTargetNavigatorClusterTargetInfoStruct")
        }
    }
}
impl IMTRTargetNavigatorClusterTargetInfoStruct for MTRTargetNavigatorClusterTargetInfoStruct {}
pub trait IMTRTargetNavigatorClusterTargetInfoStruct: Sized + std::ops::Deref {
    unsafe fn identifier(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, identifier)
    }
    unsafe fn setIdentifier_(&self, identifier: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIdentifier : identifier)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTargetNavigatorClusterTargetInfo(pub id);
impl std::ops::Deref for MTRTargetNavigatorClusterTargetInfo {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTargetNavigatorClusterTargetInfo {}
impl MTRTargetNavigatorClusterTargetInfo {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTargetNavigatorClusterTargetInfo").unwrap(), alloc) })
    }
}
impl IMTRTargetNavigatorClusterTargetInfoStruct for MTRTargetNavigatorClusterTargetInfo {}
impl PNSCopying for MTRTargetNavigatorClusterTargetInfo {}
impl From<MTRTargetNavigatorClusterTargetInfo> for MTRTargetNavigatorClusterTargetInfoStruct {
    fn from(
        child: MTRTargetNavigatorClusterTargetInfo,
    ) -> MTRTargetNavigatorClusterTargetInfoStruct {
        MTRTargetNavigatorClusterTargetInfoStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRTargetNavigatorClusterTargetInfoStruct>
    for MTRTargetNavigatorClusterTargetInfo
{
    type Error = &'static str;
    fn try_from(
        parent: MTRTargetNavigatorClusterTargetInfoStruct,
    ) -> Result<MTRTargetNavigatorClusterTargetInfo, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTargetNavigatorClusterTargetInfo").unwrap())
        };
        if is_kind_of {
            Ok(MTRTargetNavigatorClusterTargetInfo(parent.0))
        } else {
            Err ("This MTRTargetNavigatorClusterTargetInfoStruct cannot be downcasted to MTRTargetNavigatorClusterTargetInfo" ,)
        }
    }
}
impl INSObject for MTRTargetNavigatorClusterTargetInfo {}
impl PNSObject for MTRTargetNavigatorClusterTargetInfo {}
impl IMTRTargetNavigatorClusterTargetInfo for MTRTargetNavigatorClusterTargetInfo {}
pub trait IMTRTargetNavigatorClusterTargetInfo: Sized + std::ops::Deref {
    unsafe fn identifier(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, identifier)
    }
    unsafe fn setIdentifier_(&self, identifier: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIdentifier : identifier)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTargetNavigatorClusterTargetUpdatedEvent(pub id);
impl std::ops::Deref for MTRTargetNavigatorClusterTargetUpdatedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTargetNavigatorClusterTargetUpdatedEvent {}
impl MTRTargetNavigatorClusterTargetUpdatedEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTargetNavigatorClusterTargetUpdatedEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRTargetNavigatorClusterTargetUpdatedEvent {}
impl INSObject for MTRTargetNavigatorClusterTargetUpdatedEvent {}
impl PNSObject for MTRTargetNavigatorClusterTargetUpdatedEvent {}
impl std::convert::TryFrom<NSObject> for MTRTargetNavigatorClusterTargetUpdatedEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTargetNavigatorClusterTargetUpdatedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTargetNavigatorClusterTargetUpdatedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRTargetNavigatorClusterTargetUpdatedEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRTargetNavigatorClusterTargetUpdatedEvent")
        }
    }
}
impl IMTRTargetNavigatorClusterTargetUpdatedEvent for MTRTargetNavigatorClusterTargetUpdatedEvent {}
pub trait IMTRTargetNavigatorClusterTargetUpdatedEvent: Sized + std::ops::Deref {
    unsafe fn targetList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, targetList)
    }
    unsafe fn setTargetList_(&self, targetList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTargetList : targetList)
    }
    unsafe fn currentTarget(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentTarget)
    }
    unsafe fn setCurrentTarget_(&self, currentTarget: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrentTarget : currentTarget)
    }
    unsafe fn data(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn setData_(&self, data: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setData : data)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaPlaybackClusterTrackAttributesStruct(pub id);
impl std::ops::Deref for MTRMediaPlaybackClusterTrackAttributesStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaPlaybackClusterTrackAttributesStruct {}
impl MTRMediaPlaybackClusterTrackAttributesStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterTrackAttributesStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMediaPlaybackClusterTrackAttributesStruct {}
impl INSObject for MTRMediaPlaybackClusterTrackAttributesStruct {}
impl PNSObject for MTRMediaPlaybackClusterTrackAttributesStruct {}
impl std::convert::TryFrom<NSObject> for MTRMediaPlaybackClusterTrackAttributesStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRMediaPlaybackClusterTrackAttributesStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterTrackAttributesStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaPlaybackClusterTrackAttributesStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRMediaPlaybackClusterTrackAttributesStruct" ,)
        }
    }
}
impl IMTRMediaPlaybackClusterTrackAttributesStruct
    for MTRMediaPlaybackClusterTrackAttributesStruct
{
}
pub trait IMTRMediaPlaybackClusterTrackAttributesStruct: Sized + std::ops::Deref {
    unsafe fn languageCode(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, languageCode)
    }
    unsafe fn setLanguageCode_(&self, languageCode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLanguageCode : languageCode)
    }
    unsafe fn displayName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, displayName)
    }
    unsafe fn setDisplayName_(&self, displayName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDisplayName : displayName)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaPlaybackClusterTrackStruct(pub id);
impl std::ops::Deref for MTRMediaPlaybackClusterTrackStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaPlaybackClusterTrackStruct {}
impl MTRMediaPlaybackClusterTrackStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterTrackStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMediaPlaybackClusterTrackStruct {}
impl INSObject for MTRMediaPlaybackClusterTrackStruct {}
impl PNSObject for MTRMediaPlaybackClusterTrackStruct {}
impl std::convert::TryFrom<NSObject> for MTRMediaPlaybackClusterTrackStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMediaPlaybackClusterTrackStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterTrackStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaPlaybackClusterTrackStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMediaPlaybackClusterTrackStruct")
        }
    }
}
impl IMTRMediaPlaybackClusterTrackStruct for MTRMediaPlaybackClusterTrackStruct {}
pub trait IMTRMediaPlaybackClusterTrackStruct: Sized + std::ops::Deref {
    unsafe fn id(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, id)
    }
    unsafe fn setId_(&self, id: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setId : id)
    }
    unsafe fn trackAttributes(&self) -> MTRMediaPlaybackClusterTrackAttributesStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, trackAttributes)
    }
    unsafe fn setTrackAttributes_(
        &self,
        trackAttributes: MTRMediaPlaybackClusterTrackAttributesStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTrackAttributes : trackAttributes)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaPlaybackClusterPlaybackPositionStruct(pub id);
impl std::ops::Deref for MTRMediaPlaybackClusterPlaybackPositionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaPlaybackClusterPlaybackPositionStruct {}
impl MTRMediaPlaybackClusterPlaybackPositionStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterPlaybackPositionStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMediaPlaybackClusterPlaybackPositionStruct {}
impl INSObject for MTRMediaPlaybackClusterPlaybackPositionStruct {}
impl PNSObject for MTRMediaPlaybackClusterPlaybackPositionStruct {}
impl std::convert::TryFrom<NSObject> for MTRMediaPlaybackClusterPlaybackPositionStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRMediaPlaybackClusterPlaybackPositionStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterPlaybackPositionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaPlaybackClusterPlaybackPositionStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRMediaPlaybackClusterPlaybackPositionStruct" ,)
        }
    }
}
impl IMTRMediaPlaybackClusterPlaybackPositionStruct
    for MTRMediaPlaybackClusterPlaybackPositionStruct
{
}
pub trait IMTRMediaPlaybackClusterPlaybackPositionStruct: Sized + std::ops::Deref {
    unsafe fn updatedAt(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, updatedAt)
    }
    unsafe fn setUpdatedAt_(&self, updatedAt: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUpdatedAt : updatedAt)
    }
    unsafe fn position(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, position)
    }
    unsafe fn setPosition_(&self, position: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPosition : position)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaPlaybackClusterPlaybackPosition(pub id);
impl std::ops::Deref for MTRMediaPlaybackClusterPlaybackPosition {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaPlaybackClusterPlaybackPosition {}
impl MTRMediaPlaybackClusterPlaybackPosition {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterPlaybackPosition").unwrap(), alloc) })
    }
}
impl IMTRMediaPlaybackClusterPlaybackPositionStruct for MTRMediaPlaybackClusterPlaybackPosition {}
impl PNSCopying for MTRMediaPlaybackClusterPlaybackPosition {}
impl From<MTRMediaPlaybackClusterPlaybackPosition>
    for MTRMediaPlaybackClusterPlaybackPositionStruct
{
    fn from(
        child: MTRMediaPlaybackClusterPlaybackPosition,
    ) -> MTRMediaPlaybackClusterPlaybackPositionStruct {
        MTRMediaPlaybackClusterPlaybackPositionStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRMediaPlaybackClusterPlaybackPositionStruct>
    for MTRMediaPlaybackClusterPlaybackPosition
{
    type Error = &'static str;
    fn try_from(
        parent: MTRMediaPlaybackClusterPlaybackPositionStruct,
    ) -> Result<MTRMediaPlaybackClusterPlaybackPosition, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterPlaybackPosition").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaPlaybackClusterPlaybackPosition(parent.0))
        } else {
            Err ("This MTRMediaPlaybackClusterPlaybackPositionStruct cannot be downcasted to MTRMediaPlaybackClusterPlaybackPosition" ,)
        }
    }
}
impl INSObject for MTRMediaPlaybackClusterPlaybackPosition {}
impl PNSObject for MTRMediaPlaybackClusterPlaybackPosition {}
impl IMTRMediaPlaybackClusterPlaybackPosition for MTRMediaPlaybackClusterPlaybackPosition {}
pub trait IMTRMediaPlaybackClusterPlaybackPosition: Sized + std::ops::Deref {
    unsafe fn updatedAt(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, updatedAt)
    }
    unsafe fn setUpdatedAt_(&self, updatedAt: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUpdatedAt : updatedAt)
    }
    unsafe fn position(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, position)
    }
    unsafe fn setPosition_(&self, position: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPosition : position)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaPlaybackClusterStateChangedEvent(pub id);
impl std::ops::Deref for MTRMediaPlaybackClusterStateChangedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaPlaybackClusterStateChangedEvent {}
impl MTRMediaPlaybackClusterStateChangedEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterStateChangedEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMediaPlaybackClusterStateChangedEvent {}
impl INSObject for MTRMediaPlaybackClusterStateChangedEvent {}
impl PNSObject for MTRMediaPlaybackClusterStateChangedEvent {}
impl std::convert::TryFrom<NSObject> for MTRMediaPlaybackClusterStateChangedEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMediaPlaybackClusterStateChangedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterStateChangedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaPlaybackClusterStateChangedEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMediaPlaybackClusterStateChangedEvent")
        }
    }
}
impl IMTRMediaPlaybackClusterStateChangedEvent for MTRMediaPlaybackClusterStateChangedEvent {}
pub trait IMTRMediaPlaybackClusterStateChangedEvent: Sized + std::ops::Deref {
    unsafe fn currentState(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentState)
    }
    unsafe fn setCurrentState_(&self, currentState: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrentState : currentState)
    }
    unsafe fn startTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startTime)
    }
    unsafe fn setStartTime_(&self, startTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartTime : startTime)
    }
    unsafe fn duration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, duration)
    }
    unsafe fn setDuration_(&self, duration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDuration : duration)
    }
    unsafe fn sampledPosition(&self) -> MTRMediaPlaybackClusterPlaybackPositionStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sampledPosition)
    }
    unsafe fn setSampledPosition_(
        &self,
        sampledPosition: MTRMediaPlaybackClusterPlaybackPositionStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSampledPosition : sampledPosition)
    }
    unsafe fn playbackSpeed(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, playbackSpeed)
    }
    unsafe fn setPlaybackSpeed_(&self, playbackSpeed: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPlaybackSpeed : playbackSpeed)
    }
    unsafe fn seekRangeEnd(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, seekRangeEnd)
    }
    unsafe fn setSeekRangeEnd_(&self, seekRangeEnd: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSeekRangeEnd : seekRangeEnd)
    }
    unsafe fn seekRangeStart(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, seekRangeStart)
    }
    unsafe fn setSeekRangeStart_(&self, seekRangeStart: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSeekRangeStart : seekRangeStart)
    }
    unsafe fn data(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn setData_(&self, data: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setData : data)
    }
    unsafe fn audioAdvanceUnmuted(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, audioAdvanceUnmuted)
    }
    unsafe fn setAudioAdvanceUnmuted_(&self, audioAdvanceUnmuted: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAudioAdvanceUnmuted : audioAdvanceUnmuted)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaInputClusterInputInfoStruct(pub id);
impl std::ops::Deref for MTRMediaInputClusterInputInfoStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaInputClusterInputInfoStruct {}
impl MTRMediaInputClusterInputInfoStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaInputClusterInputInfoStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMediaInputClusterInputInfoStruct {}
impl INSObject for MTRMediaInputClusterInputInfoStruct {}
impl PNSObject for MTRMediaInputClusterInputInfoStruct {}
impl std::convert::TryFrom<NSObject> for MTRMediaInputClusterInputInfoStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMediaInputClusterInputInfoStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaInputClusterInputInfoStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaInputClusterInputInfoStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMediaInputClusterInputInfoStruct")
        }
    }
}
impl IMTRMediaInputClusterInputInfoStruct for MTRMediaInputClusterInputInfoStruct {}
pub trait IMTRMediaInputClusterInputInfoStruct: Sized + std::ops::Deref {
    unsafe fn index(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, index)
    }
    unsafe fn setIndex_(&self, index: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIndex : index)
    }
    unsafe fn inputType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, inputType)
    }
    unsafe fn setInputType_(&self, inputType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInputType : inputType)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn descriptionString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, descriptionString)
    }
    unsafe fn setDescriptionString_(&self, descriptionString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDescriptionString : descriptionString)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaInputClusterInputInfo(pub id);
impl std::ops::Deref for MTRMediaInputClusterInputInfo {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaInputClusterInputInfo {}
impl MTRMediaInputClusterInputInfo {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaInputClusterInputInfo").unwrap(), alloc) })
    }
}
impl IMTRMediaInputClusterInputInfoStruct for MTRMediaInputClusterInputInfo {}
impl PNSCopying for MTRMediaInputClusterInputInfo {}
impl From<MTRMediaInputClusterInputInfo> for MTRMediaInputClusterInputInfoStruct {
    fn from(child: MTRMediaInputClusterInputInfo) -> MTRMediaInputClusterInputInfoStruct {
        MTRMediaInputClusterInputInfoStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRMediaInputClusterInputInfoStruct> for MTRMediaInputClusterInputInfo {
    type Error = &'static str;
    fn try_from(
        parent: MTRMediaInputClusterInputInfoStruct,
    ) -> Result<MTRMediaInputClusterInputInfo, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaInputClusterInputInfo").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaInputClusterInputInfo(parent.0))
        } else {
            Err ("This MTRMediaInputClusterInputInfoStruct cannot be downcasted to MTRMediaInputClusterInputInfo" ,)
        }
    }
}
impl INSObject for MTRMediaInputClusterInputInfo {}
impl PNSObject for MTRMediaInputClusterInputInfo {}
impl IMTRMediaInputClusterInputInfo for MTRMediaInputClusterInputInfo {}
pub trait IMTRMediaInputClusterInputInfo: Sized + std::ops::Deref {
    unsafe fn index(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, index)
    }
    unsafe fn setIndex_(&self, index: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIndex : index)
    }
    unsafe fn inputType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, inputType)
    }
    unsafe fn setInputType_(&self, inputType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInputType : inputType)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn descriptionString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, descriptionString)
    }
    unsafe fn setDescriptionString_(&self, descriptionString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDescriptionString : descriptionString)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentLauncherClusterDimensionStruct(pub id);
impl std::ops::Deref for MTRContentLauncherClusterDimensionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentLauncherClusterDimensionStruct {}
impl MTRContentLauncherClusterDimensionStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterDimensionStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRContentLauncherClusterDimensionStruct {}
impl INSObject for MTRContentLauncherClusterDimensionStruct {}
impl PNSObject for MTRContentLauncherClusterDimensionStruct {}
impl std::convert::TryFrom<NSObject> for MTRContentLauncherClusterDimensionStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRContentLauncherClusterDimensionStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterDimensionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentLauncherClusterDimensionStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRContentLauncherClusterDimensionStruct")
        }
    }
}
impl IMTRContentLauncherClusterDimensionStruct for MTRContentLauncherClusterDimensionStruct {}
pub trait IMTRContentLauncherClusterDimensionStruct: Sized + std::ops::Deref {
    unsafe fn width(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, width)
    }
    unsafe fn setWidth_(&self, width: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWidth : width)
    }
    unsafe fn height(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, height)
    }
    unsafe fn setHeight_(&self, height: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHeight : height)
    }
    unsafe fn metric(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, metric)
    }
    unsafe fn setMetric_(&self, metric: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMetric : metric)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentLauncherClusterDimension(pub id);
impl std::ops::Deref for MTRContentLauncherClusterDimension {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentLauncherClusterDimension {}
impl MTRContentLauncherClusterDimension {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterDimension").unwrap(), alloc) })
    }
}
impl IMTRContentLauncherClusterDimensionStruct for MTRContentLauncherClusterDimension {}
impl PNSCopying for MTRContentLauncherClusterDimension {}
impl From<MTRContentLauncherClusterDimension> for MTRContentLauncherClusterDimensionStruct {
    fn from(child: MTRContentLauncherClusterDimension) -> MTRContentLauncherClusterDimensionStruct {
        MTRContentLauncherClusterDimensionStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRContentLauncherClusterDimensionStruct>
    for MTRContentLauncherClusterDimension
{
    type Error = &'static str;
    fn try_from(
        parent: MTRContentLauncherClusterDimensionStruct,
    ) -> Result<MTRContentLauncherClusterDimension, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterDimension").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentLauncherClusterDimension(parent.0))
        } else {
            Err ("This MTRContentLauncherClusterDimensionStruct cannot be downcasted to MTRContentLauncherClusterDimension" ,)
        }
    }
}
impl INSObject for MTRContentLauncherClusterDimension {}
impl PNSObject for MTRContentLauncherClusterDimension {}
impl IMTRContentLauncherClusterDimension for MTRContentLauncherClusterDimension {}
pub trait IMTRContentLauncherClusterDimension: Sized + std::ops::Deref {
    unsafe fn width(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, width)
    }
    unsafe fn setWidth_(&self, width: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWidth : width)
    }
    unsafe fn height(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, height)
    }
    unsafe fn setHeight_(&self, height: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHeight : height)
    }
    unsafe fn metric(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, metric)
    }
    unsafe fn setMetric_(&self, metric: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMetric : metric)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentLauncherClusterTrackPreferenceStruct(pub id);
impl std::ops::Deref for MTRContentLauncherClusterTrackPreferenceStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentLauncherClusterTrackPreferenceStruct {}
impl MTRContentLauncherClusterTrackPreferenceStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterTrackPreferenceStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRContentLauncherClusterTrackPreferenceStruct {}
impl INSObject for MTRContentLauncherClusterTrackPreferenceStruct {}
impl PNSObject for MTRContentLauncherClusterTrackPreferenceStruct {}
impl std::convert::TryFrom<NSObject> for MTRContentLauncherClusterTrackPreferenceStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRContentLauncherClusterTrackPreferenceStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterTrackPreferenceStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentLauncherClusterTrackPreferenceStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRContentLauncherClusterTrackPreferenceStruct" ,)
        }
    }
}
impl IMTRContentLauncherClusterTrackPreferenceStruct
    for MTRContentLauncherClusterTrackPreferenceStruct
{
}
pub trait IMTRContentLauncherClusterTrackPreferenceStruct: Sized + std::ops::Deref {
    unsafe fn languageCode(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, languageCode)
    }
    unsafe fn setLanguageCode_(&self, languageCode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLanguageCode : languageCode)
    }
    unsafe fn characteristics(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, characteristics)
    }
    unsafe fn setCharacteristics_(&self, characteristics: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCharacteristics : characteristics)
    }
    unsafe fn audioOutputIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, audioOutputIndex)
    }
    unsafe fn setAudioOutputIndex_(&self, audioOutputIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAudioOutputIndex : audioOutputIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentLauncherClusterPlaybackPreferencesStruct(pub id);
impl std::ops::Deref for MTRContentLauncherClusterPlaybackPreferencesStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentLauncherClusterPlaybackPreferencesStruct {}
impl MTRContentLauncherClusterPlaybackPreferencesStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterPlaybackPreferencesStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRContentLauncherClusterPlaybackPreferencesStruct {}
impl INSObject for MTRContentLauncherClusterPlaybackPreferencesStruct {}
impl PNSObject for MTRContentLauncherClusterPlaybackPreferencesStruct {}
impl std::convert::TryFrom<NSObject> for MTRContentLauncherClusterPlaybackPreferencesStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRContentLauncherClusterPlaybackPreferencesStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterPlaybackPreferencesStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentLauncherClusterPlaybackPreferencesStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRContentLauncherClusterPlaybackPreferencesStruct" ,)
        }
    }
}
impl IMTRContentLauncherClusterPlaybackPreferencesStruct
    for MTRContentLauncherClusterPlaybackPreferencesStruct
{
}
pub trait IMTRContentLauncherClusterPlaybackPreferencesStruct: Sized + std::ops::Deref {
    unsafe fn playbackPosition(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, playbackPosition)
    }
    unsafe fn setPlaybackPosition_(&self, playbackPosition: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPlaybackPosition : playbackPosition)
    }
    unsafe fn textTrack(&self) -> MTRContentLauncherClusterTrackPreferenceStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, textTrack)
    }
    unsafe fn setTextTrack_(&self, textTrack: MTRContentLauncherClusterTrackPreferenceStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTextTrack : textTrack)
    }
    unsafe fn audioTracks(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, audioTracks)
    }
    unsafe fn setAudioTracks_(&self, audioTracks: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAudioTracks : audioTracks)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentLauncherClusterAdditionalInfoStruct(pub id);
impl std::ops::Deref for MTRContentLauncherClusterAdditionalInfoStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentLauncherClusterAdditionalInfoStruct {}
impl MTRContentLauncherClusterAdditionalInfoStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterAdditionalInfoStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRContentLauncherClusterAdditionalInfoStruct {}
impl INSObject for MTRContentLauncherClusterAdditionalInfoStruct {}
impl PNSObject for MTRContentLauncherClusterAdditionalInfoStruct {}
impl std::convert::TryFrom<NSObject> for MTRContentLauncherClusterAdditionalInfoStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRContentLauncherClusterAdditionalInfoStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterAdditionalInfoStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentLauncherClusterAdditionalInfoStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRContentLauncherClusterAdditionalInfoStruct" ,)
        }
    }
}
impl IMTRContentLauncherClusterAdditionalInfoStruct
    for MTRContentLauncherClusterAdditionalInfoStruct
{
}
pub trait IMTRContentLauncherClusterAdditionalInfoStruct: Sized + std::ops::Deref {
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn value(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentLauncherClusterAdditionalInfo(pub id);
impl std::ops::Deref for MTRContentLauncherClusterAdditionalInfo {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentLauncherClusterAdditionalInfo {}
impl MTRContentLauncherClusterAdditionalInfo {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterAdditionalInfo").unwrap(), alloc) })
    }
}
impl IMTRContentLauncherClusterAdditionalInfoStruct for MTRContentLauncherClusterAdditionalInfo {}
impl PNSCopying for MTRContentLauncherClusterAdditionalInfo {}
impl From<MTRContentLauncherClusterAdditionalInfo>
    for MTRContentLauncherClusterAdditionalInfoStruct
{
    fn from(
        child: MTRContentLauncherClusterAdditionalInfo,
    ) -> MTRContentLauncherClusterAdditionalInfoStruct {
        MTRContentLauncherClusterAdditionalInfoStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRContentLauncherClusterAdditionalInfoStruct>
    for MTRContentLauncherClusterAdditionalInfo
{
    type Error = &'static str;
    fn try_from(
        parent: MTRContentLauncherClusterAdditionalInfoStruct,
    ) -> Result<MTRContentLauncherClusterAdditionalInfo, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterAdditionalInfo").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentLauncherClusterAdditionalInfo(parent.0))
        } else {
            Err ("This MTRContentLauncherClusterAdditionalInfoStruct cannot be downcasted to MTRContentLauncherClusterAdditionalInfo" ,)
        }
    }
}
impl INSObject for MTRContentLauncherClusterAdditionalInfo {}
impl PNSObject for MTRContentLauncherClusterAdditionalInfo {}
impl IMTRContentLauncherClusterAdditionalInfo for MTRContentLauncherClusterAdditionalInfo {}
pub trait IMTRContentLauncherClusterAdditionalInfo: Sized + std::ops::Deref {
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn value(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentLauncherClusterParameterStruct(pub id);
impl std::ops::Deref for MTRContentLauncherClusterParameterStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentLauncherClusterParameterStruct {}
impl MTRContentLauncherClusterParameterStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterParameterStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRContentLauncherClusterParameterStruct {}
impl INSObject for MTRContentLauncherClusterParameterStruct {}
impl PNSObject for MTRContentLauncherClusterParameterStruct {}
impl std::convert::TryFrom<NSObject> for MTRContentLauncherClusterParameterStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRContentLauncherClusterParameterStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterParameterStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentLauncherClusterParameterStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRContentLauncherClusterParameterStruct")
        }
    }
}
impl IMTRContentLauncherClusterParameterStruct for MTRContentLauncherClusterParameterStruct {}
pub trait IMTRContentLauncherClusterParameterStruct: Sized + std::ops::Deref {
    unsafe fn type_(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, type)
    }
    unsafe fn setType_(&self, type_: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setType : type_)
    }
    unsafe fn value(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
    unsafe fn externalIDList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, externalIDList)
    }
    unsafe fn setExternalIDList_(&self, externalIDList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExternalIDList : externalIDList)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentLauncherClusterParameter(pub id);
impl std::ops::Deref for MTRContentLauncherClusterParameter {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentLauncherClusterParameter {}
impl MTRContentLauncherClusterParameter {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterParameter").unwrap(), alloc) })
    }
}
impl IMTRContentLauncherClusterParameterStruct for MTRContentLauncherClusterParameter {}
impl PNSCopying for MTRContentLauncherClusterParameter {}
impl From<MTRContentLauncherClusterParameter> for MTRContentLauncherClusterParameterStruct {
    fn from(child: MTRContentLauncherClusterParameter) -> MTRContentLauncherClusterParameterStruct {
        MTRContentLauncherClusterParameterStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRContentLauncherClusterParameterStruct>
    for MTRContentLauncherClusterParameter
{
    type Error = &'static str;
    fn try_from(
        parent: MTRContentLauncherClusterParameterStruct,
    ) -> Result<MTRContentLauncherClusterParameter, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterParameter").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentLauncherClusterParameter(parent.0))
        } else {
            Err ("This MTRContentLauncherClusterParameterStruct cannot be downcasted to MTRContentLauncherClusterParameter" ,)
        }
    }
}
impl INSObject for MTRContentLauncherClusterParameter {}
impl PNSObject for MTRContentLauncherClusterParameter {}
impl IMTRContentLauncherClusterParameter for MTRContentLauncherClusterParameter {}
pub trait IMTRContentLauncherClusterParameter: Sized + std::ops::Deref {
    unsafe fn type_(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, type)
    }
    unsafe fn setType_(&self, type_: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setType : type_)
    }
    unsafe fn value(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
    unsafe fn externalIDList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, externalIDList)
    }
    unsafe fn setExternalIDList_(&self, externalIDList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExternalIDList : externalIDList)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentLauncherClusterContentSearchStruct(pub id);
impl std::ops::Deref for MTRContentLauncherClusterContentSearchStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentLauncherClusterContentSearchStruct {}
impl MTRContentLauncherClusterContentSearchStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterContentSearchStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRContentLauncherClusterContentSearchStruct {}
impl INSObject for MTRContentLauncherClusterContentSearchStruct {}
impl PNSObject for MTRContentLauncherClusterContentSearchStruct {}
impl std::convert::TryFrom<NSObject> for MTRContentLauncherClusterContentSearchStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRContentLauncherClusterContentSearchStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterContentSearchStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentLauncherClusterContentSearchStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRContentLauncherClusterContentSearchStruct" ,)
        }
    }
}
impl IMTRContentLauncherClusterContentSearchStruct
    for MTRContentLauncherClusterContentSearchStruct
{
}
pub trait IMTRContentLauncherClusterContentSearchStruct: Sized + std::ops::Deref {
    unsafe fn parameterList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, parameterList)
    }
    unsafe fn setParameterList_(&self, parameterList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setParameterList : parameterList)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentLauncherClusterContentSearch(pub id);
impl std::ops::Deref for MTRContentLauncherClusterContentSearch {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentLauncherClusterContentSearch {}
impl MTRContentLauncherClusterContentSearch {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterContentSearch").unwrap(), alloc) })
    }
}
impl IMTRContentLauncherClusterContentSearchStruct for MTRContentLauncherClusterContentSearch {}
impl PNSCopying for MTRContentLauncherClusterContentSearch {}
impl From<MTRContentLauncherClusterContentSearch> for MTRContentLauncherClusterContentSearchStruct {
    fn from(
        child: MTRContentLauncherClusterContentSearch,
    ) -> MTRContentLauncherClusterContentSearchStruct {
        MTRContentLauncherClusterContentSearchStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRContentLauncherClusterContentSearchStruct>
    for MTRContentLauncherClusterContentSearch
{
    type Error = &'static str;
    fn try_from(
        parent: MTRContentLauncherClusterContentSearchStruct,
    ) -> Result<MTRContentLauncherClusterContentSearch, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterContentSearch").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentLauncherClusterContentSearch(parent.0))
        } else {
            Err ("This MTRContentLauncherClusterContentSearchStruct cannot be downcasted to MTRContentLauncherClusterContentSearch" ,)
        }
    }
}
impl INSObject for MTRContentLauncherClusterContentSearch {}
impl PNSObject for MTRContentLauncherClusterContentSearch {}
impl IMTRContentLauncherClusterContentSearch for MTRContentLauncherClusterContentSearch {}
pub trait IMTRContentLauncherClusterContentSearch: Sized + std::ops::Deref {
    unsafe fn parameterList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, parameterList)
    }
    unsafe fn setParameterList_(&self, parameterList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setParameterList : parameterList)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentLauncherClusterStyleInformationStruct(pub id);
impl std::ops::Deref for MTRContentLauncherClusterStyleInformationStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentLauncherClusterStyleInformationStruct {}
impl MTRContentLauncherClusterStyleInformationStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterStyleInformationStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRContentLauncherClusterStyleInformationStruct {}
impl INSObject for MTRContentLauncherClusterStyleInformationStruct {}
impl PNSObject for MTRContentLauncherClusterStyleInformationStruct {}
impl std::convert::TryFrom<NSObject> for MTRContentLauncherClusterStyleInformationStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRContentLauncherClusterStyleInformationStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterStyleInformationStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentLauncherClusterStyleInformationStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRContentLauncherClusterStyleInformationStruct" ,)
        }
    }
}
impl IMTRContentLauncherClusterStyleInformationStruct
    for MTRContentLauncherClusterStyleInformationStruct
{
}
pub trait IMTRContentLauncherClusterStyleInformationStruct: Sized + std::ops::Deref {
    unsafe fn imageURL(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, imageURL)
    }
    unsafe fn setImageURL_(&self, imageURL: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setImageURL : imageURL)
    }
    unsafe fn imageUrl(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, imageUrl)
    }
    unsafe fn setImageUrl_(&self, imageUrl: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setImageUrl : imageUrl)
    }
    unsafe fn color(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, color)
    }
    unsafe fn setColor_(&self, color: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setColor : color)
    }
    unsafe fn size(&self) -> MTRContentLauncherClusterDimensionStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, size)
    }
    unsafe fn setSize_(&self, size: MTRContentLauncherClusterDimensionStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSize : size)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentLauncherClusterStyleInformation(pub id);
impl std::ops::Deref for MTRContentLauncherClusterStyleInformation {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentLauncherClusterStyleInformation {}
impl MTRContentLauncherClusterStyleInformation {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterStyleInformation").unwrap(), alloc) })
    }
}
impl IMTRContentLauncherClusterStyleInformationStruct
    for MTRContentLauncherClusterStyleInformation
{
}
impl PNSCopying for MTRContentLauncherClusterStyleInformation {}
impl From<MTRContentLauncherClusterStyleInformation>
    for MTRContentLauncherClusterStyleInformationStruct
{
    fn from(
        child: MTRContentLauncherClusterStyleInformation,
    ) -> MTRContentLauncherClusterStyleInformationStruct {
        MTRContentLauncherClusterStyleInformationStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRContentLauncherClusterStyleInformationStruct>
    for MTRContentLauncherClusterStyleInformation
{
    type Error = &'static str;
    fn try_from(
        parent: MTRContentLauncherClusterStyleInformationStruct,
    ) -> Result<MTRContentLauncherClusterStyleInformation, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterStyleInformation").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentLauncherClusterStyleInformation(parent.0))
        } else {
            Err ("This MTRContentLauncherClusterStyleInformationStruct cannot be downcasted to MTRContentLauncherClusterStyleInformation" ,)
        }
    }
}
impl INSObject for MTRContentLauncherClusterStyleInformation {}
impl PNSObject for MTRContentLauncherClusterStyleInformation {}
impl IMTRContentLauncherClusterStyleInformation for MTRContentLauncherClusterStyleInformation {}
pub trait IMTRContentLauncherClusterStyleInformation: Sized + std::ops::Deref {
    unsafe fn color(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, color)
    }
    unsafe fn setColor_(&self, color: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setColor : color)
    }
    unsafe fn size(&self) -> MTRContentLauncherClusterDimensionStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, size)
    }
    unsafe fn setSize_(&self, size: MTRContentLauncherClusterDimensionStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSize : size)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentLauncherClusterBrandingInformationStruct(pub id);
impl std::ops::Deref for MTRContentLauncherClusterBrandingInformationStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentLauncherClusterBrandingInformationStruct {}
impl MTRContentLauncherClusterBrandingInformationStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterBrandingInformationStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRContentLauncherClusterBrandingInformationStruct {}
impl INSObject for MTRContentLauncherClusterBrandingInformationStruct {}
impl PNSObject for MTRContentLauncherClusterBrandingInformationStruct {}
impl std::convert::TryFrom<NSObject> for MTRContentLauncherClusterBrandingInformationStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRContentLauncherClusterBrandingInformationStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterBrandingInformationStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentLauncherClusterBrandingInformationStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRContentLauncherClusterBrandingInformationStruct" ,)
        }
    }
}
impl IMTRContentLauncherClusterBrandingInformationStruct
    for MTRContentLauncherClusterBrandingInformationStruct
{
}
pub trait IMTRContentLauncherClusterBrandingInformationStruct: Sized + std::ops::Deref {
    unsafe fn providerName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, providerName)
    }
    unsafe fn setProviderName_(&self, providerName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProviderName : providerName)
    }
    unsafe fn background(&self) -> MTRContentLauncherClusterStyleInformationStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, background)
    }
    unsafe fn setBackground_(&self, background: MTRContentLauncherClusterStyleInformationStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBackground : background)
    }
    unsafe fn logo(&self) -> MTRContentLauncherClusterStyleInformationStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, logo)
    }
    unsafe fn setLogo_(&self, logo: MTRContentLauncherClusterStyleInformationStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLogo : logo)
    }
    unsafe fn progressBar(&self) -> MTRContentLauncherClusterStyleInformationStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, progressBar)
    }
    unsafe fn setProgressBar_(&self, progressBar: MTRContentLauncherClusterStyleInformationStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProgressBar : progressBar)
    }
    unsafe fn splash(&self) -> MTRContentLauncherClusterStyleInformationStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, splash)
    }
    unsafe fn setSplash_(&self, splash: MTRContentLauncherClusterStyleInformationStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSplash : splash)
    }
    unsafe fn waterMark(&self) -> MTRContentLauncherClusterStyleInformationStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, waterMark)
    }
    unsafe fn setWaterMark_(&self, waterMark: MTRContentLauncherClusterStyleInformationStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWaterMark : waterMark)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentLauncherClusterBrandingInformation(pub id);
impl std::ops::Deref for MTRContentLauncherClusterBrandingInformation {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentLauncherClusterBrandingInformation {}
impl MTRContentLauncherClusterBrandingInformation {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterBrandingInformation").unwrap(), alloc) })
    }
}
impl IMTRContentLauncherClusterBrandingInformationStruct
    for MTRContentLauncherClusterBrandingInformation
{
}
impl PNSCopying for MTRContentLauncherClusterBrandingInformation {}
impl From<MTRContentLauncherClusterBrandingInformation>
    for MTRContentLauncherClusterBrandingInformationStruct
{
    fn from(
        child: MTRContentLauncherClusterBrandingInformation,
    ) -> MTRContentLauncherClusterBrandingInformationStruct {
        MTRContentLauncherClusterBrandingInformationStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRContentLauncherClusterBrandingInformationStruct>
    for MTRContentLauncherClusterBrandingInformation
{
    type Error = &'static str;
    fn try_from(
        parent: MTRContentLauncherClusterBrandingInformationStruct,
    ) -> Result<MTRContentLauncherClusterBrandingInformation, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterBrandingInformation").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentLauncherClusterBrandingInformation(parent.0))
        } else {
            Err ("This MTRContentLauncherClusterBrandingInformationStruct cannot be downcasted to MTRContentLauncherClusterBrandingInformation" ,)
        }
    }
}
impl INSObject for MTRContentLauncherClusterBrandingInformation {}
impl PNSObject for MTRContentLauncherClusterBrandingInformation {}
impl IMTRContentLauncherClusterBrandingInformation
    for MTRContentLauncherClusterBrandingInformation
{
}
pub trait IMTRContentLauncherClusterBrandingInformation: Sized + std::ops::Deref {
    unsafe fn providerName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, providerName)
    }
    unsafe fn setProviderName_(&self, providerName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProviderName : providerName)
    }
    unsafe fn background(&self) -> MTRContentLauncherClusterStyleInformationStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, background)
    }
    unsafe fn setBackground_(&self, background: MTRContentLauncherClusterStyleInformationStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBackground : background)
    }
    unsafe fn logo(&self) -> MTRContentLauncherClusterStyleInformationStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, logo)
    }
    unsafe fn setLogo_(&self, logo: MTRContentLauncherClusterStyleInformationStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLogo : logo)
    }
    unsafe fn progressBar(&self) -> MTRContentLauncherClusterStyleInformationStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, progressBar)
    }
    unsafe fn setProgressBar_(&self, progressBar: MTRContentLauncherClusterStyleInformationStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProgressBar : progressBar)
    }
    unsafe fn splash(&self) -> MTRContentLauncherClusterStyleInformationStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, splash)
    }
    unsafe fn setSplash_(&self, splash: MTRContentLauncherClusterStyleInformationStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSplash : splash)
    }
    unsafe fn waterMark(&self) -> MTRContentLauncherClusterStyleInformationStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, waterMark)
    }
    unsafe fn setWaterMark_(&self, waterMark: MTRContentLauncherClusterStyleInformationStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWaterMark : waterMark)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAudioOutputClusterOutputInfoStruct(pub id);
impl std::ops::Deref for MTRAudioOutputClusterOutputInfoStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAudioOutputClusterOutputInfoStruct {}
impl MTRAudioOutputClusterOutputInfoStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAudioOutputClusterOutputInfoStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRAudioOutputClusterOutputInfoStruct {}
impl INSObject for MTRAudioOutputClusterOutputInfoStruct {}
impl PNSObject for MTRAudioOutputClusterOutputInfoStruct {}
impl std::convert::TryFrom<NSObject> for MTRAudioOutputClusterOutputInfoStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRAudioOutputClusterOutputInfoStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAudioOutputClusterOutputInfoStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRAudioOutputClusterOutputInfoStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRAudioOutputClusterOutputInfoStruct")
        }
    }
}
impl IMTRAudioOutputClusterOutputInfoStruct for MTRAudioOutputClusterOutputInfoStruct {}
pub trait IMTRAudioOutputClusterOutputInfoStruct: Sized + std::ops::Deref {
    unsafe fn index(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, index)
    }
    unsafe fn setIndex_(&self, index: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIndex : index)
    }
    unsafe fn outputType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, outputType)
    }
    unsafe fn setOutputType_(&self, outputType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOutputType : outputType)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAudioOutputClusterOutputInfo(pub id);
impl std::ops::Deref for MTRAudioOutputClusterOutputInfo {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAudioOutputClusterOutputInfo {}
impl MTRAudioOutputClusterOutputInfo {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAudioOutputClusterOutputInfo").unwrap(), alloc) })
    }
}
impl IMTRAudioOutputClusterOutputInfoStruct for MTRAudioOutputClusterOutputInfo {}
impl PNSCopying for MTRAudioOutputClusterOutputInfo {}
impl From<MTRAudioOutputClusterOutputInfo> for MTRAudioOutputClusterOutputInfoStruct {
    fn from(child: MTRAudioOutputClusterOutputInfo) -> MTRAudioOutputClusterOutputInfoStruct {
        MTRAudioOutputClusterOutputInfoStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRAudioOutputClusterOutputInfoStruct>
    for MTRAudioOutputClusterOutputInfo
{
    type Error = &'static str;
    fn try_from(
        parent: MTRAudioOutputClusterOutputInfoStruct,
    ) -> Result<MTRAudioOutputClusterOutputInfo, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAudioOutputClusterOutputInfo").unwrap())
        };
        if is_kind_of {
            Ok(MTRAudioOutputClusterOutputInfo(parent.0))
        } else {
            Err ("This MTRAudioOutputClusterOutputInfoStruct cannot be downcasted to MTRAudioOutputClusterOutputInfo" ,)
        }
    }
}
impl INSObject for MTRAudioOutputClusterOutputInfo {}
impl PNSObject for MTRAudioOutputClusterOutputInfo {}
impl IMTRAudioOutputClusterOutputInfo for MTRAudioOutputClusterOutputInfo {}
pub trait IMTRAudioOutputClusterOutputInfo: Sized + std::ops::Deref {
    unsafe fn index(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, index)
    }
    unsafe fn setIndex_(&self, index: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIndex : index)
    }
    unsafe fn outputType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, outputType)
    }
    unsafe fn setOutputType_(&self, outputType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOutputType : outputType)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRApplicationLauncherClusterApplicationStruct(pub id);
impl std::ops::Deref for MTRApplicationLauncherClusterApplicationStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRApplicationLauncherClusterApplicationStruct {}
impl MTRApplicationLauncherClusterApplicationStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRApplicationLauncherClusterApplicationStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRApplicationLauncherClusterApplicationStruct {}
impl INSObject for MTRApplicationLauncherClusterApplicationStruct {}
impl PNSObject for MTRApplicationLauncherClusterApplicationStruct {}
impl std::convert::TryFrom<NSObject> for MTRApplicationLauncherClusterApplicationStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRApplicationLauncherClusterApplicationStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRApplicationLauncherClusterApplicationStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRApplicationLauncherClusterApplicationStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRApplicationLauncherClusterApplicationStruct" ,)
        }
    }
}
impl IMTRApplicationLauncherClusterApplicationStruct
    for MTRApplicationLauncherClusterApplicationStruct
{
}
pub trait IMTRApplicationLauncherClusterApplicationStruct: Sized + std::ops::Deref {
    unsafe fn catalogVendorID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, catalogVendorID)
    }
    unsafe fn setCatalogVendorID_(&self, catalogVendorID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCatalogVendorID : catalogVendorID)
    }
    unsafe fn catalogVendorId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, catalogVendorId)
    }
    unsafe fn setCatalogVendorId_(&self, catalogVendorId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCatalogVendorId : catalogVendorId)
    }
    unsafe fn applicationID(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, applicationID)
    }
    unsafe fn setApplicationID_(&self, applicationID: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setApplicationID : applicationID)
    }
    unsafe fn applicationId(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, applicationId)
    }
    unsafe fn setApplicationId_(&self, applicationId: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setApplicationId : applicationId)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRApplicationLauncherClusterApplication(pub id);
impl std::ops::Deref for MTRApplicationLauncherClusterApplication {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRApplicationLauncherClusterApplication {}
impl MTRApplicationLauncherClusterApplication {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRApplicationLauncherClusterApplication").unwrap(), alloc) })
    }
}
impl IMTRApplicationLauncherClusterApplicationStruct for MTRApplicationLauncherClusterApplication {}
impl PNSCopying for MTRApplicationLauncherClusterApplication {}
impl From<MTRApplicationLauncherClusterApplication>
    for MTRApplicationLauncherClusterApplicationStruct
{
    fn from(
        child: MTRApplicationLauncherClusterApplication,
    ) -> MTRApplicationLauncherClusterApplicationStruct {
        MTRApplicationLauncherClusterApplicationStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRApplicationLauncherClusterApplicationStruct>
    for MTRApplicationLauncherClusterApplication
{
    type Error = &'static str;
    fn try_from(
        parent: MTRApplicationLauncherClusterApplicationStruct,
    ) -> Result<MTRApplicationLauncherClusterApplication, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRApplicationLauncherClusterApplication").unwrap())
        };
        if is_kind_of {
            Ok(MTRApplicationLauncherClusterApplication(parent.0))
        } else {
            Err ("This MTRApplicationLauncherClusterApplicationStruct cannot be downcasted to MTRApplicationLauncherClusterApplication" ,)
        }
    }
}
impl INSObject for MTRApplicationLauncherClusterApplication {}
impl PNSObject for MTRApplicationLauncherClusterApplication {}
impl IMTRApplicationLauncherClusterApplication for MTRApplicationLauncherClusterApplication {}
pub trait IMTRApplicationLauncherClusterApplication: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRApplicationLauncherClusterApplicationEPStruct(pub id);
impl std::ops::Deref for MTRApplicationLauncherClusterApplicationEPStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRApplicationLauncherClusterApplicationEPStruct {}
impl MTRApplicationLauncherClusterApplicationEPStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRApplicationLauncherClusterApplicationEPStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRApplicationLauncherClusterApplicationEPStruct {}
impl INSObject for MTRApplicationLauncherClusterApplicationEPStruct {}
impl PNSObject for MTRApplicationLauncherClusterApplicationEPStruct {}
impl std::convert::TryFrom<NSObject> for MTRApplicationLauncherClusterApplicationEPStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRApplicationLauncherClusterApplicationEPStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRApplicationLauncherClusterApplicationEPStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRApplicationLauncherClusterApplicationEPStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRApplicationLauncherClusterApplicationEPStruct" ,)
        }
    }
}
impl IMTRApplicationLauncherClusterApplicationEPStruct
    for MTRApplicationLauncherClusterApplicationEPStruct
{
}
pub trait IMTRApplicationLauncherClusterApplicationEPStruct: Sized + std::ops::Deref {
    unsafe fn application(&self) -> MTRApplicationLauncherClusterApplicationStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, application)
    }
    unsafe fn setApplication_(&self, application: MTRApplicationLauncherClusterApplicationStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setApplication : application)
    }
    unsafe fn endpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn setEndpoint_(&self, endpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoint : endpoint)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRApplicationLauncherClusterApplicationEP(pub id);
impl std::ops::Deref for MTRApplicationLauncherClusterApplicationEP {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRApplicationLauncherClusterApplicationEP {}
impl MTRApplicationLauncherClusterApplicationEP {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRApplicationLauncherClusterApplicationEP").unwrap(), alloc) })
    }
}
impl IMTRApplicationLauncherClusterApplicationEPStruct
    for MTRApplicationLauncherClusterApplicationEP
{
}
impl PNSCopying for MTRApplicationLauncherClusterApplicationEP {}
impl From<MTRApplicationLauncherClusterApplicationEP>
    for MTRApplicationLauncherClusterApplicationEPStruct
{
    fn from(
        child: MTRApplicationLauncherClusterApplicationEP,
    ) -> MTRApplicationLauncherClusterApplicationEPStruct {
        MTRApplicationLauncherClusterApplicationEPStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRApplicationLauncherClusterApplicationEPStruct>
    for MTRApplicationLauncherClusterApplicationEP
{
    type Error = &'static str;
    fn try_from(
        parent: MTRApplicationLauncherClusterApplicationEPStruct,
    ) -> Result<MTRApplicationLauncherClusterApplicationEP, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRApplicationLauncherClusterApplicationEP").unwrap())
        };
        if is_kind_of {
            Ok(MTRApplicationLauncherClusterApplicationEP(parent.0))
        } else {
            Err ("This MTRApplicationLauncherClusterApplicationEPStruct cannot be downcasted to MTRApplicationLauncherClusterApplicationEP" ,)
        }
    }
}
impl INSObject for MTRApplicationLauncherClusterApplicationEP {}
impl PNSObject for MTRApplicationLauncherClusterApplicationEP {}
impl IMTRApplicationLauncherClusterApplicationEP for MTRApplicationLauncherClusterApplicationEP {}
pub trait IMTRApplicationLauncherClusterApplicationEP: Sized + std::ops::Deref {
    unsafe fn application(&self) -> MTRApplicationLauncherClusterApplicationStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, application)
    }
    unsafe fn setApplication_(&self, application: MTRApplicationLauncherClusterApplicationStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setApplication : application)
    }
    unsafe fn endpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn setEndpoint_(&self, endpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoint : endpoint)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRApplicationBasicClusterApplicationStruct(pub id);
impl std::ops::Deref for MTRApplicationBasicClusterApplicationStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRApplicationBasicClusterApplicationStruct {}
impl MTRApplicationBasicClusterApplicationStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRApplicationBasicClusterApplicationStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRApplicationBasicClusterApplicationStruct {}
impl INSObject for MTRApplicationBasicClusterApplicationStruct {}
impl PNSObject for MTRApplicationBasicClusterApplicationStruct {}
impl std::convert::TryFrom<NSObject> for MTRApplicationBasicClusterApplicationStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRApplicationBasicClusterApplicationStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRApplicationBasicClusterApplicationStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRApplicationBasicClusterApplicationStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRApplicationBasicClusterApplicationStruct")
        }
    }
}
impl IMTRApplicationBasicClusterApplicationStruct for MTRApplicationBasicClusterApplicationStruct {}
pub trait IMTRApplicationBasicClusterApplicationStruct: Sized + std::ops::Deref {
    unsafe fn catalogVendorID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, catalogVendorID)
    }
    unsafe fn setCatalogVendorID_(&self, catalogVendorID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCatalogVendorID : catalogVendorID)
    }
    unsafe fn catalogVendorId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, catalogVendorId)
    }
    unsafe fn setCatalogVendorId_(&self, catalogVendorId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCatalogVendorId : catalogVendorId)
    }
    unsafe fn applicationID(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, applicationID)
    }
    unsafe fn setApplicationID_(&self, applicationID: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setApplicationID : applicationID)
    }
    unsafe fn applicationId(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, applicationId)
    }
    unsafe fn setApplicationId_(&self, applicationId: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setApplicationId : applicationId)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRApplicationBasicClusterApplicationBasicApplication(pub id);
impl std::ops::Deref for MTRApplicationBasicClusterApplicationBasicApplication {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRApplicationBasicClusterApplicationBasicApplication {}
impl MTRApplicationBasicClusterApplicationBasicApplication {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRApplicationBasicClusterApplicationBasicApplication").unwrap(), alloc)
        })
    }
}
impl IMTRApplicationBasicClusterApplicationStruct
    for MTRApplicationBasicClusterApplicationBasicApplication
{
}
impl PNSCopying for MTRApplicationBasicClusterApplicationBasicApplication {}
impl From<MTRApplicationBasicClusterApplicationBasicApplication>
    for MTRApplicationBasicClusterApplicationStruct
{
    fn from(
        child: MTRApplicationBasicClusterApplicationBasicApplication,
    ) -> MTRApplicationBasicClusterApplicationStruct {
        MTRApplicationBasicClusterApplicationStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRApplicationBasicClusterApplicationStruct>
    for MTRApplicationBasicClusterApplicationBasicApplication
{
    type Error = &'static str;
    fn try_from(
        parent: MTRApplicationBasicClusterApplicationStruct,
    ) -> Result<MTRApplicationBasicClusterApplicationBasicApplication, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRApplicationBasicClusterApplicationBasicApplication").unwrap())
        };
        if is_kind_of {
            Ok(MTRApplicationBasicClusterApplicationBasicApplication(
                parent.0,
            ))
        } else {
            Err ("This MTRApplicationBasicClusterApplicationStruct cannot be downcasted to MTRApplicationBasicClusterApplicationBasicApplication" ,)
        }
    }
}
impl INSObject for MTRApplicationBasicClusterApplicationBasicApplication {}
impl PNSObject for MTRApplicationBasicClusterApplicationBasicApplication {}
impl IMTRApplicationBasicClusterApplicationBasicApplication
    for MTRApplicationBasicClusterApplicationBasicApplication
{
}
pub trait IMTRApplicationBasicClusterApplicationBasicApplication: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAccountLoginClusterLoggedOutEvent(pub id);
impl std::ops::Deref for MTRAccountLoginClusterLoggedOutEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAccountLoginClusterLoggedOutEvent {}
impl MTRAccountLoginClusterLoggedOutEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccountLoginClusterLoggedOutEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRAccountLoginClusterLoggedOutEvent {}
impl INSObject for MTRAccountLoginClusterLoggedOutEvent {}
impl PNSObject for MTRAccountLoginClusterLoggedOutEvent {}
impl std::convert::TryFrom<NSObject> for MTRAccountLoginClusterLoggedOutEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRAccountLoginClusterLoggedOutEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAccountLoginClusterLoggedOutEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRAccountLoginClusterLoggedOutEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRAccountLoginClusterLoggedOutEvent")
        }
    }
}
impl IMTRAccountLoginClusterLoggedOutEvent for MTRAccountLoginClusterLoggedOutEvent {}
pub trait IMTRAccountLoginClusterLoggedOutEvent: Sized + std::ops::Deref {
    unsafe fn node(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, node)
    }
    unsafe fn setNode_(&self, node: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNode : node)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentControlClusterRatingNameStruct(pub id);
impl std::ops::Deref for MTRContentControlClusterRatingNameStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentControlClusterRatingNameStruct {}
impl MTRContentControlClusterRatingNameStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentControlClusterRatingNameStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRContentControlClusterRatingNameStruct {}
impl INSObject for MTRContentControlClusterRatingNameStruct {}
impl PNSObject for MTRContentControlClusterRatingNameStruct {}
impl std::convert::TryFrom<NSObject> for MTRContentControlClusterRatingNameStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRContentControlClusterRatingNameStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentControlClusterRatingNameStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentControlClusterRatingNameStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRContentControlClusterRatingNameStruct")
        }
    }
}
impl IMTRContentControlClusterRatingNameStruct for MTRContentControlClusterRatingNameStruct {}
pub trait IMTRContentControlClusterRatingNameStruct: Sized + std::ops::Deref {
    unsafe fn ratingName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ratingName)
    }
    unsafe fn setRatingName_(&self, ratingName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRatingName : ratingName)
    }
    unsafe fn ratingNameDesc(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ratingNameDesc)
    }
    unsafe fn setRatingNameDesc_(&self, ratingNameDesc: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRatingNameDesc : ratingNameDesc)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentControlClusterRemainingScreenTimeExpiredEvent(pub id);
impl std::ops::Deref for MTRContentControlClusterRemainingScreenTimeExpiredEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentControlClusterRemainingScreenTimeExpiredEvent {}
impl MTRContentControlClusterRemainingScreenTimeExpiredEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentControlClusterRemainingScreenTimeExpiredEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRContentControlClusterRemainingScreenTimeExpiredEvent {}
impl INSObject for MTRContentControlClusterRemainingScreenTimeExpiredEvent {}
impl PNSObject for MTRContentControlClusterRemainingScreenTimeExpiredEvent {}
impl std::convert::TryFrom<NSObject> for MTRContentControlClusterRemainingScreenTimeExpiredEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRContentControlClusterRemainingScreenTimeExpiredEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentControlClusterRemainingScreenTimeExpiredEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentControlClusterRemainingScreenTimeExpiredEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRContentControlClusterRemainingScreenTimeExpiredEvent" ,)
        }
    }
}
impl IMTRContentControlClusterRemainingScreenTimeExpiredEvent
    for MTRContentControlClusterRemainingScreenTimeExpiredEvent
{
}
pub trait IMTRContentControlClusterRemainingScreenTimeExpiredEvent:
    Sized + std::ops::Deref
{
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRZoneManagementClusterTwoDCartesianVertexStruct(pub id);
impl std::ops::Deref for MTRZoneManagementClusterTwoDCartesianVertexStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRZoneManagementClusterTwoDCartesianVertexStruct {}
impl MTRZoneManagementClusterTwoDCartesianVertexStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterTwoDCartesianVertexStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRZoneManagementClusterTwoDCartesianVertexStruct {}
impl INSObject for MTRZoneManagementClusterTwoDCartesianVertexStruct {}
impl PNSObject for MTRZoneManagementClusterTwoDCartesianVertexStruct {}
impl std::convert::TryFrom<NSObject> for MTRZoneManagementClusterTwoDCartesianVertexStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRZoneManagementClusterTwoDCartesianVertexStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterTwoDCartesianVertexStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRZoneManagementClusterTwoDCartesianVertexStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRZoneManagementClusterTwoDCartesianVertexStruct" ,)
        }
    }
}
impl IMTRZoneManagementClusterTwoDCartesianVertexStruct
    for MTRZoneManagementClusterTwoDCartesianVertexStruct
{
}
pub trait IMTRZoneManagementClusterTwoDCartesianVertexStruct: Sized + std::ops::Deref {
    unsafe fn x(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, x)
    }
    unsafe fn setX_(&self, x: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setX : x)
    }
    unsafe fn y(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, y)
    }
    unsafe fn setY_(&self, y: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setY : y)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRZoneManagementClusterTwoDCartesianZoneStruct(pub id);
impl std::ops::Deref for MTRZoneManagementClusterTwoDCartesianZoneStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRZoneManagementClusterTwoDCartesianZoneStruct {}
impl MTRZoneManagementClusterTwoDCartesianZoneStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterTwoDCartesianZoneStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRZoneManagementClusterTwoDCartesianZoneStruct {}
impl INSObject for MTRZoneManagementClusterTwoDCartesianZoneStruct {}
impl PNSObject for MTRZoneManagementClusterTwoDCartesianZoneStruct {}
impl std::convert::TryFrom<NSObject> for MTRZoneManagementClusterTwoDCartesianZoneStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRZoneManagementClusterTwoDCartesianZoneStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterTwoDCartesianZoneStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRZoneManagementClusterTwoDCartesianZoneStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRZoneManagementClusterTwoDCartesianZoneStruct" ,)
        }
    }
}
impl IMTRZoneManagementClusterTwoDCartesianZoneStruct
    for MTRZoneManagementClusterTwoDCartesianZoneStruct
{
}
pub trait IMTRZoneManagementClusterTwoDCartesianZoneStruct: Sized + std::ops::Deref {
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn use_(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, use)
    }
    unsafe fn setUse_(&self, use_: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUse : use_)
    }
    unsafe fn vertices(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vertices)
    }
    unsafe fn setVertices_(&self, vertices: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVertices : vertices)
    }
    unsafe fn color(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, color)
    }
    unsafe fn setColor_(&self, color: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setColor : color)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRZoneManagementClusterZoneInformationStruct(pub id);
impl std::ops::Deref for MTRZoneManagementClusterZoneInformationStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRZoneManagementClusterZoneInformationStruct {}
impl MTRZoneManagementClusterZoneInformationStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterZoneInformationStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRZoneManagementClusterZoneInformationStruct {}
impl INSObject for MTRZoneManagementClusterZoneInformationStruct {}
impl PNSObject for MTRZoneManagementClusterZoneInformationStruct {}
impl std::convert::TryFrom<NSObject> for MTRZoneManagementClusterZoneInformationStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRZoneManagementClusterZoneInformationStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterZoneInformationStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRZoneManagementClusterZoneInformationStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRZoneManagementClusterZoneInformationStruct" ,)
        }
    }
}
impl IMTRZoneManagementClusterZoneInformationStruct
    for MTRZoneManagementClusterZoneInformationStruct
{
}
pub trait IMTRZoneManagementClusterZoneInformationStruct: Sized + std::ops::Deref {
    unsafe fn zoneID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, zoneID)
    }
    unsafe fn setZoneID_(&self, zoneID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setZoneID : zoneID)
    }
    unsafe fn zoneType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, zoneType)
    }
    unsafe fn setZoneType_(&self, zoneType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setZoneType : zoneType)
    }
    unsafe fn zoneSource(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, zoneSource)
    }
    unsafe fn setZoneSource_(&self, zoneSource: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setZoneSource : zoneSource)
    }
    unsafe fn twoDCartesianZone(&self) -> MTRZoneManagementClusterTwoDCartesianZoneStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, twoDCartesianZone)
    }
    unsafe fn setTwoDCartesianZone_(
        &self,
        twoDCartesianZone: MTRZoneManagementClusterTwoDCartesianZoneStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTwoDCartesianZone : twoDCartesianZone)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRZoneManagementClusterZoneTriggerControlStruct(pub id);
impl std::ops::Deref for MTRZoneManagementClusterZoneTriggerControlStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRZoneManagementClusterZoneTriggerControlStruct {}
impl MTRZoneManagementClusterZoneTriggerControlStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterZoneTriggerControlStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRZoneManagementClusterZoneTriggerControlStruct {}
impl INSObject for MTRZoneManagementClusterZoneTriggerControlStruct {}
impl PNSObject for MTRZoneManagementClusterZoneTriggerControlStruct {}
impl std::convert::TryFrom<NSObject> for MTRZoneManagementClusterZoneTriggerControlStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRZoneManagementClusterZoneTriggerControlStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterZoneTriggerControlStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRZoneManagementClusterZoneTriggerControlStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRZoneManagementClusterZoneTriggerControlStruct" ,)
        }
    }
}
impl IMTRZoneManagementClusterZoneTriggerControlStruct
    for MTRZoneManagementClusterZoneTriggerControlStruct
{
}
pub trait IMTRZoneManagementClusterZoneTriggerControlStruct: Sized + std::ops::Deref {
    unsafe fn zoneID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, zoneID)
    }
    unsafe fn setZoneID_(&self, zoneID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setZoneID : zoneID)
    }
    unsafe fn initialDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, initialDuration)
    }
    unsafe fn setInitialDuration_(&self, initialDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInitialDuration : initialDuration)
    }
    unsafe fn augmentationDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, augmentationDuration)
    }
    unsafe fn setAugmentationDuration_(&self, augmentationDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAugmentationDuration : augmentationDuration)
    }
    unsafe fn maxDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxDuration)
    }
    unsafe fn setMaxDuration_(&self, maxDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxDuration : maxDuration)
    }
    unsafe fn blindDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, blindDuration)
    }
    unsafe fn setBlindDuration_(&self, blindDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBlindDuration : blindDuration)
    }
    unsafe fn sensitivity(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sensitivity)
    }
    unsafe fn setSensitivity_(&self, sensitivity: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSensitivity : sensitivity)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRZoneManagementClusterZoneTriggeredEvent(pub id);
impl std::ops::Deref for MTRZoneManagementClusterZoneTriggeredEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRZoneManagementClusterZoneTriggeredEvent {}
impl MTRZoneManagementClusterZoneTriggeredEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterZoneTriggeredEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRZoneManagementClusterZoneTriggeredEvent {}
impl INSObject for MTRZoneManagementClusterZoneTriggeredEvent {}
impl PNSObject for MTRZoneManagementClusterZoneTriggeredEvent {}
impl std::convert::TryFrom<NSObject> for MTRZoneManagementClusterZoneTriggeredEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRZoneManagementClusterZoneTriggeredEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterZoneTriggeredEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRZoneManagementClusterZoneTriggeredEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRZoneManagementClusterZoneTriggeredEvent")
        }
    }
}
impl IMTRZoneManagementClusterZoneTriggeredEvent for MTRZoneManagementClusterZoneTriggeredEvent {}
pub trait IMTRZoneManagementClusterZoneTriggeredEvent: Sized + std::ops::Deref {
    unsafe fn zone(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, zone)
    }
    unsafe fn setZone_(&self, zone: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setZone : zone)
    }
    unsafe fn reason(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reason)
    }
    unsafe fn setReason_(&self, reason: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReason : reason)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRZoneManagementClusterZoneStoppedEvent(pub id);
impl std::ops::Deref for MTRZoneManagementClusterZoneStoppedEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRZoneManagementClusterZoneStoppedEvent {}
impl MTRZoneManagementClusterZoneStoppedEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterZoneStoppedEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRZoneManagementClusterZoneStoppedEvent {}
impl INSObject for MTRZoneManagementClusterZoneStoppedEvent {}
impl PNSObject for MTRZoneManagementClusterZoneStoppedEvent {}
impl std::convert::TryFrom<NSObject> for MTRZoneManagementClusterZoneStoppedEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRZoneManagementClusterZoneStoppedEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterZoneStoppedEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRZoneManagementClusterZoneStoppedEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRZoneManagementClusterZoneStoppedEvent")
        }
    }
}
impl IMTRZoneManagementClusterZoneStoppedEvent for MTRZoneManagementClusterZoneStoppedEvent {}
pub trait IMTRZoneManagementClusterZoneStoppedEvent: Sized + std::ops::Deref {
    unsafe fn zone(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, zone)
    }
    unsafe fn setZone_(&self, zone: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setZone : zone)
    }
    unsafe fn reason(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reason)
    }
    unsafe fn setReason_(&self, reason: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReason : reason)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterVideoResolutionStruct(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterVideoResolutionStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVStreamManagementClusterVideoResolutionStruct {}
impl MTRCameraAVStreamManagementClusterVideoResolutionStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterVideoResolutionStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterVideoResolutionStruct {}
impl INSObject for MTRCameraAVStreamManagementClusterVideoResolutionStruct {}
impl PNSObject for MTRCameraAVStreamManagementClusterVideoResolutionStruct {}
impl std::convert::TryFrom<NSObject> for MTRCameraAVStreamManagementClusterVideoResolutionStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterVideoResolutionStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterVideoResolutionStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterVideoResolutionStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterVideoResolutionStruct" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterVideoResolutionStruct
    for MTRCameraAVStreamManagementClusterVideoResolutionStruct
{
}
pub trait IMTRCameraAVStreamManagementClusterVideoResolutionStruct:
    Sized + std::ops::Deref
{
    unsafe fn width(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, width)
    }
    unsafe fn setWidth_(&self, width: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWidth : width)
    }
    unsafe fn height(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, height)
    }
    unsafe fn setHeight_(&self, height: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHeight : height)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterVideoStreamStruct(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterVideoStreamStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVStreamManagementClusterVideoStreamStruct {}
impl MTRCameraAVStreamManagementClusterVideoStreamStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterVideoStreamStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterVideoStreamStruct {}
impl INSObject for MTRCameraAVStreamManagementClusterVideoStreamStruct {}
impl PNSObject for MTRCameraAVStreamManagementClusterVideoStreamStruct {}
impl std::convert::TryFrom<NSObject> for MTRCameraAVStreamManagementClusterVideoStreamStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterVideoStreamStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterVideoStreamStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterVideoStreamStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterVideoStreamStruct" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterVideoStreamStruct
    for MTRCameraAVStreamManagementClusterVideoStreamStruct
{
}
pub trait IMTRCameraAVStreamManagementClusterVideoStreamStruct: Sized + std::ops::Deref {
    unsafe fn videoStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, videoStreamID)
    }
    unsafe fn setVideoStreamID_(&self, videoStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVideoStreamID : videoStreamID)
    }
    unsafe fn streamUsage(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, streamUsage)
    }
    unsafe fn setStreamUsage_(&self, streamUsage: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStreamUsage : streamUsage)
    }
    unsafe fn videoCodec(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, videoCodec)
    }
    unsafe fn setVideoCodec_(&self, videoCodec: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVideoCodec : videoCodec)
    }
    unsafe fn minFrameRate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minFrameRate)
    }
    unsafe fn setMinFrameRate_(&self, minFrameRate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinFrameRate : minFrameRate)
    }
    unsafe fn maxFrameRate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxFrameRate)
    }
    unsafe fn setMaxFrameRate_(&self, maxFrameRate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxFrameRate : maxFrameRate)
    }
    unsafe fn minResolution(&self) -> MTRCameraAVStreamManagementClusterVideoResolutionStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minResolution)
    }
    unsafe fn setMinResolution_(
        &self,
        minResolution: MTRCameraAVStreamManagementClusterVideoResolutionStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinResolution : minResolution)
    }
    unsafe fn maxResolution(&self) -> MTRCameraAVStreamManagementClusterVideoResolutionStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxResolution)
    }
    unsafe fn setMaxResolution_(
        &self,
        maxResolution: MTRCameraAVStreamManagementClusterVideoResolutionStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxResolution : maxResolution)
    }
    unsafe fn minBitRate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minBitRate)
    }
    unsafe fn setMinBitRate_(&self, minBitRate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinBitRate : minBitRate)
    }
    unsafe fn maxBitRate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxBitRate)
    }
    unsafe fn setMaxBitRate_(&self, maxBitRate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxBitRate : maxBitRate)
    }
    unsafe fn keyFrameInterval(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, keyFrameInterval)
    }
    unsafe fn setKeyFrameInterval_(&self, keyFrameInterval: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setKeyFrameInterval : keyFrameInterval)
    }
    unsafe fn watermarkEnabled(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, watermarkEnabled)
    }
    unsafe fn setWatermarkEnabled_(&self, watermarkEnabled: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWatermarkEnabled : watermarkEnabled)
    }
    unsafe fn osdEnabled(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, osdEnabled)
    }
    unsafe fn setOsdEnabled_(&self, osdEnabled: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOsdEnabled : osdEnabled)
    }
    unsafe fn referenceCount(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, referenceCount)
    }
    unsafe fn setReferenceCount_(&self, referenceCount: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReferenceCount : referenceCount)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterSnapshotStreamStruct(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterSnapshotStreamStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVStreamManagementClusterSnapshotStreamStruct {}
impl MTRCameraAVStreamManagementClusterSnapshotStreamStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterSnapshotStreamStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterSnapshotStreamStruct {}
impl INSObject for MTRCameraAVStreamManagementClusterSnapshotStreamStruct {}
impl PNSObject for MTRCameraAVStreamManagementClusterSnapshotStreamStruct {}
impl std::convert::TryFrom<NSObject> for MTRCameraAVStreamManagementClusterSnapshotStreamStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterSnapshotStreamStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterSnapshotStreamStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterSnapshotStreamStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterSnapshotStreamStruct" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterSnapshotStreamStruct
    for MTRCameraAVStreamManagementClusterSnapshotStreamStruct
{
}
pub trait IMTRCameraAVStreamManagementClusterSnapshotStreamStruct: Sized + std::ops::Deref {
    unsafe fn snapshotStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, snapshotStreamID)
    }
    unsafe fn setSnapshotStreamID_(&self, snapshotStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSnapshotStreamID : snapshotStreamID)
    }
    unsafe fn imageCodec(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, imageCodec)
    }
    unsafe fn setImageCodec_(&self, imageCodec: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setImageCodec : imageCodec)
    }
    unsafe fn frameRate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, frameRate)
    }
    unsafe fn setFrameRate_(&self, frameRate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFrameRate : frameRate)
    }
    unsafe fn minResolution(&self) -> MTRCameraAVStreamManagementClusterVideoResolutionStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minResolution)
    }
    unsafe fn setMinResolution_(
        &self,
        minResolution: MTRCameraAVStreamManagementClusterVideoResolutionStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinResolution : minResolution)
    }
    unsafe fn maxResolution(&self) -> MTRCameraAVStreamManagementClusterVideoResolutionStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxResolution)
    }
    unsafe fn setMaxResolution_(
        &self,
        maxResolution: MTRCameraAVStreamManagementClusterVideoResolutionStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxResolution : maxResolution)
    }
    unsafe fn quality(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, quality)
    }
    unsafe fn setQuality_(&self, quality: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setQuality : quality)
    }
    unsafe fn referenceCount(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, referenceCount)
    }
    unsafe fn setReferenceCount_(&self, referenceCount: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReferenceCount : referenceCount)
    }
    unsafe fn encodedPixels(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, encodedPixels)
    }
    unsafe fn setEncodedPixels_(&self, encodedPixels: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEncodedPixels : encodedPixels)
    }
    unsafe fn hardwareEncoder(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hardwareEncoder)
    }
    unsafe fn setHardwareEncoder_(&self, hardwareEncoder: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHardwareEncoder : hardwareEncoder)
    }
    unsafe fn watermarkEnabled(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, watermarkEnabled)
    }
    unsafe fn setWatermarkEnabled_(&self, watermarkEnabled: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWatermarkEnabled : watermarkEnabled)
    }
    unsafe fn osdEnabled(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, osdEnabled)
    }
    unsafe fn setOsdEnabled_(&self, osdEnabled: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOsdEnabled : osdEnabled)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterSnapshotCapabilitiesStruct(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterSnapshotCapabilitiesStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVStreamManagementClusterSnapshotCapabilitiesStruct {}
impl MTRCameraAVStreamManagementClusterSnapshotCapabilitiesStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterSnapshotCapabilitiesStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterSnapshotCapabilitiesStruct {}
impl INSObject for MTRCameraAVStreamManagementClusterSnapshotCapabilitiesStruct {}
impl PNSObject for MTRCameraAVStreamManagementClusterSnapshotCapabilitiesStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVStreamManagementClusterSnapshotCapabilitiesStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterSnapshotCapabilitiesStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterSnapshotCapabilitiesStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterSnapshotCapabilitiesStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterSnapshotCapabilitiesStruct" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterSnapshotCapabilitiesStruct
    for MTRCameraAVStreamManagementClusterSnapshotCapabilitiesStruct
{
}
pub trait IMTRCameraAVStreamManagementClusterSnapshotCapabilitiesStruct:
    Sized + std::ops::Deref
{
    unsafe fn resolution(&self) -> MTRCameraAVStreamManagementClusterVideoResolutionStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resolution)
    }
    unsafe fn setResolution_(
        &self,
        resolution: MTRCameraAVStreamManagementClusterVideoResolutionStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setResolution : resolution)
    }
    unsafe fn maxFrameRate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxFrameRate)
    }
    unsafe fn setMaxFrameRate_(&self, maxFrameRate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxFrameRate : maxFrameRate)
    }
    unsafe fn imageCodec(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, imageCodec)
    }
    unsafe fn setImageCodec_(&self, imageCodec: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setImageCodec : imageCodec)
    }
    unsafe fn requiresEncodedPixels(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requiresEncodedPixels)
    }
    unsafe fn setRequiresEncodedPixels_(&self, requiresEncodedPixels: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRequiresEncodedPixels : requiresEncodedPixels)
    }
    unsafe fn requiresHardwareEncoder(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requiresHardwareEncoder)
    }
    unsafe fn setRequiresHardwareEncoder_(&self, requiresHardwareEncoder: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRequiresHardwareEncoder : requiresHardwareEncoder)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterRateDistortionTradeOffPointsStruct(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterRateDistortionTradeOffPointsStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVStreamManagementClusterRateDistortionTradeOffPointsStruct {}
impl MTRCameraAVStreamManagementClusterRateDistortionTradeOffPointsStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterRateDistortionTradeOffPointsStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterRateDistortionTradeOffPointsStruct {}
impl INSObject for MTRCameraAVStreamManagementClusterRateDistortionTradeOffPointsStruct {}
impl PNSObject for MTRCameraAVStreamManagementClusterRateDistortionTradeOffPointsStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVStreamManagementClusterRateDistortionTradeOffPointsStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterRateDistortionTradeOffPointsStruct, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterRateDistortionTradeOffPointsStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterRateDistortionTradeOffPointsStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterRateDistortionTradeOffPointsStruct" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterRateDistortionTradeOffPointsStruct
    for MTRCameraAVStreamManagementClusterRateDistortionTradeOffPointsStruct
{
}
pub trait IMTRCameraAVStreamManagementClusterRateDistortionTradeOffPointsStruct:
    Sized + std::ops::Deref
{
    unsafe fn codec(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, codec)
    }
    unsafe fn setCodec_(&self, codec: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCodec : codec)
    }
    unsafe fn resolution(&self) -> MTRCameraAVStreamManagementClusterVideoResolutionStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resolution)
    }
    unsafe fn setResolution_(
        &self,
        resolution: MTRCameraAVStreamManagementClusterVideoResolutionStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setResolution : resolution)
    }
    unsafe fn minBitRate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minBitRate)
    }
    unsafe fn setMinBitRate_(&self, minBitRate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinBitRate : minBitRate)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterAudioCapabilitiesStruct(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterAudioCapabilitiesStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVStreamManagementClusterAudioCapabilitiesStruct {}
impl MTRCameraAVStreamManagementClusterAudioCapabilitiesStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterAudioCapabilitiesStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterAudioCapabilitiesStruct {}
impl INSObject for MTRCameraAVStreamManagementClusterAudioCapabilitiesStruct {}
impl PNSObject for MTRCameraAVStreamManagementClusterAudioCapabilitiesStruct {}
impl std::convert::TryFrom<NSObject> for MTRCameraAVStreamManagementClusterAudioCapabilitiesStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterAudioCapabilitiesStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterAudioCapabilitiesStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterAudioCapabilitiesStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterAudioCapabilitiesStruct" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterAudioCapabilitiesStruct
    for MTRCameraAVStreamManagementClusterAudioCapabilitiesStruct
{
}
pub trait IMTRCameraAVStreamManagementClusterAudioCapabilitiesStruct:
    Sized + std::ops::Deref
{
    unsafe fn maxNumberOfChannels(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxNumberOfChannels)
    }
    unsafe fn setMaxNumberOfChannels_(&self, maxNumberOfChannels: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxNumberOfChannels : maxNumberOfChannels)
    }
    unsafe fn supportedCodecs(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, supportedCodecs)
    }
    unsafe fn setSupportedCodecs_(&self, supportedCodecs: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSupportedCodecs : supportedCodecs)
    }
    unsafe fn supportedSampleRates(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, supportedSampleRates)
    }
    unsafe fn setSupportedSampleRates_(&self, supportedSampleRates: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSupportedSampleRates : supportedSampleRates)
    }
    unsafe fn supportedBitDepths(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, supportedBitDepths)
    }
    unsafe fn setSupportedBitDepths_(&self, supportedBitDepths: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSupportedBitDepths : supportedBitDepths)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterAudioStreamStruct(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterAudioStreamStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVStreamManagementClusterAudioStreamStruct {}
impl MTRCameraAVStreamManagementClusterAudioStreamStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterAudioStreamStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterAudioStreamStruct {}
impl INSObject for MTRCameraAVStreamManagementClusterAudioStreamStruct {}
impl PNSObject for MTRCameraAVStreamManagementClusterAudioStreamStruct {}
impl std::convert::TryFrom<NSObject> for MTRCameraAVStreamManagementClusterAudioStreamStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterAudioStreamStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterAudioStreamStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterAudioStreamStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterAudioStreamStruct" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterAudioStreamStruct
    for MTRCameraAVStreamManagementClusterAudioStreamStruct
{
}
pub trait IMTRCameraAVStreamManagementClusterAudioStreamStruct: Sized + std::ops::Deref {
    unsafe fn audioStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, audioStreamID)
    }
    unsafe fn setAudioStreamID_(&self, audioStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAudioStreamID : audioStreamID)
    }
    unsafe fn streamUsage(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, streamUsage)
    }
    unsafe fn setStreamUsage_(&self, streamUsage: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStreamUsage : streamUsage)
    }
    unsafe fn audioCodec(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, audioCodec)
    }
    unsafe fn setAudioCodec_(&self, audioCodec: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAudioCodec : audioCodec)
    }
    unsafe fn channelCount(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, channelCount)
    }
    unsafe fn setChannelCount_(&self, channelCount: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChannelCount : channelCount)
    }
    unsafe fn sampleRate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sampleRate)
    }
    unsafe fn setSampleRate_(&self, sampleRate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSampleRate : sampleRate)
    }
    unsafe fn bitRate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, bitRate)
    }
    unsafe fn setBitRate_(&self, bitRate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBitRate : bitRate)
    }
    unsafe fn bitDepth(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, bitDepth)
    }
    unsafe fn setBitDepth_(&self, bitDepth: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBitDepth : bitDepth)
    }
    unsafe fn referenceCount(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, referenceCount)
    }
    unsafe fn setReferenceCount_(&self, referenceCount: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReferenceCount : referenceCount)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterVideoSensorParamsStruct(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterVideoSensorParamsStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVStreamManagementClusterVideoSensorParamsStruct {}
impl MTRCameraAVStreamManagementClusterVideoSensorParamsStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterVideoSensorParamsStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterVideoSensorParamsStruct {}
impl INSObject for MTRCameraAVStreamManagementClusterVideoSensorParamsStruct {}
impl PNSObject for MTRCameraAVStreamManagementClusterVideoSensorParamsStruct {}
impl std::convert::TryFrom<NSObject> for MTRCameraAVStreamManagementClusterVideoSensorParamsStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterVideoSensorParamsStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterVideoSensorParamsStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterVideoSensorParamsStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterVideoSensorParamsStruct" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterVideoSensorParamsStruct
    for MTRCameraAVStreamManagementClusterVideoSensorParamsStruct
{
}
pub trait IMTRCameraAVStreamManagementClusterVideoSensorParamsStruct:
    Sized + std::ops::Deref
{
    unsafe fn sensorWidth(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sensorWidth)
    }
    unsafe fn setSensorWidth_(&self, sensorWidth: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSensorWidth : sensorWidth)
    }
    unsafe fn sensorHeight(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sensorHeight)
    }
    unsafe fn setSensorHeight_(&self, sensorHeight: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSensorHeight : sensorHeight)
    }
    unsafe fn maxFPS(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxFPS)
    }
    unsafe fn setMaxFPS_(&self, maxFPS: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxFPS : maxFPS)
    }
    unsafe fn maxHDRFPS(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxHDRFPS)
    }
    unsafe fn setMaxHDRFPS_(&self, maxHDRFPS: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxHDRFPS : maxHDRFPS)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVSettingsUserLevelManagementClusterMPTZStruct(pub id);
impl std::ops::Deref for MTRCameraAVSettingsUserLevelManagementClusterMPTZStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVSettingsUserLevelManagementClusterMPTZStruct {}
impl MTRCameraAVSettingsUserLevelManagementClusterMPTZStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVSettingsUserLevelManagementClusterMPTZStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVSettingsUserLevelManagementClusterMPTZStruct {}
impl INSObject for MTRCameraAVSettingsUserLevelManagementClusterMPTZStruct {}
impl PNSObject for MTRCameraAVSettingsUserLevelManagementClusterMPTZStruct {}
impl std::convert::TryFrom<NSObject> for MTRCameraAVSettingsUserLevelManagementClusterMPTZStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVSettingsUserLevelManagementClusterMPTZStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVSettingsUserLevelManagementClusterMPTZStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVSettingsUserLevelManagementClusterMPTZStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVSettingsUserLevelManagementClusterMPTZStruct" ,)
        }
    }
}
impl IMTRCameraAVSettingsUserLevelManagementClusterMPTZStruct
    for MTRCameraAVSettingsUserLevelManagementClusterMPTZStruct
{
}
pub trait IMTRCameraAVSettingsUserLevelManagementClusterMPTZStruct:
    Sized + std::ops::Deref
{
    unsafe fn pan(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pan)
    }
    unsafe fn setPan_(&self, pan: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPan : pan)
    }
    unsafe fn tilt(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tilt)
    }
    unsafe fn setTilt_(&self, tilt: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTilt : tilt)
    }
    unsafe fn zoom(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, zoom)
    }
    unsafe fn setZoom_(&self, zoom: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setZoom : zoom)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVSettingsUserLevelManagementClusterMPTZPresetStruct(pub id);
impl std::ops::Deref for MTRCameraAVSettingsUserLevelManagementClusterMPTZPresetStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVSettingsUserLevelManagementClusterMPTZPresetStruct {}
impl MTRCameraAVSettingsUserLevelManagementClusterMPTZPresetStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVSettingsUserLevelManagementClusterMPTZPresetStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVSettingsUserLevelManagementClusterMPTZPresetStruct {}
impl INSObject for MTRCameraAVSettingsUserLevelManagementClusterMPTZPresetStruct {}
impl PNSObject for MTRCameraAVSettingsUserLevelManagementClusterMPTZPresetStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVSettingsUserLevelManagementClusterMPTZPresetStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVSettingsUserLevelManagementClusterMPTZPresetStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVSettingsUserLevelManagementClusterMPTZPresetStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVSettingsUserLevelManagementClusterMPTZPresetStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVSettingsUserLevelManagementClusterMPTZPresetStruct" ,)
        }
    }
}
impl IMTRCameraAVSettingsUserLevelManagementClusterMPTZPresetStruct
    for MTRCameraAVSettingsUserLevelManagementClusterMPTZPresetStruct
{
}
pub trait IMTRCameraAVSettingsUserLevelManagementClusterMPTZPresetStruct:
    Sized + std::ops::Deref
{
    unsafe fn presetID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, presetID)
    }
    unsafe fn setPresetID_(&self, presetID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPresetID : presetID)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn settings(&self) -> MTRCameraAVSettingsUserLevelManagementClusterMPTZStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, settings)
    }
    unsafe fn setSettings_(&self, settings: MTRCameraAVSettingsUserLevelManagementClusterMPTZStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSettings : settings)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVSettingsUserLevelManagementClusterDPTZStruct(pub id);
impl std::ops::Deref for MTRCameraAVSettingsUserLevelManagementClusterDPTZStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVSettingsUserLevelManagementClusterDPTZStruct {}
impl MTRCameraAVSettingsUserLevelManagementClusterDPTZStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVSettingsUserLevelManagementClusterDPTZStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVSettingsUserLevelManagementClusterDPTZStruct {}
impl INSObject for MTRCameraAVSettingsUserLevelManagementClusterDPTZStruct {}
impl PNSObject for MTRCameraAVSettingsUserLevelManagementClusterDPTZStruct {}
impl std::convert::TryFrom<NSObject> for MTRCameraAVSettingsUserLevelManagementClusterDPTZStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVSettingsUserLevelManagementClusterDPTZStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVSettingsUserLevelManagementClusterDPTZStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVSettingsUserLevelManagementClusterDPTZStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVSettingsUserLevelManagementClusterDPTZStruct" ,)
        }
    }
}
impl IMTRCameraAVSettingsUserLevelManagementClusterDPTZStruct
    for MTRCameraAVSettingsUserLevelManagementClusterDPTZStruct
{
}
pub trait IMTRCameraAVSettingsUserLevelManagementClusterDPTZStruct:
    Sized + std::ops::Deref
{
    unsafe fn videoStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, videoStreamID)
    }
    unsafe fn setVideoStreamID_(&self, videoStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVideoStreamID : videoStreamID)
    }
    unsafe fn viewport(&self) -> MTRDataTypeViewportStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, viewport)
    }
    unsafe fn setViewport_(&self, viewport: MTRDataTypeViewportStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setViewport : viewport)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWebRTCTransportProviderClusterSFrameStruct(pub id);
impl std::ops::Deref for MTRWebRTCTransportProviderClusterSFrameStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWebRTCTransportProviderClusterSFrameStruct {}
impl MTRWebRTCTransportProviderClusterSFrameStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWebRTCTransportProviderClusterSFrameStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRWebRTCTransportProviderClusterSFrameStruct {}
impl INSObject for MTRWebRTCTransportProviderClusterSFrameStruct {}
impl PNSObject for MTRWebRTCTransportProviderClusterSFrameStruct {}
impl std::convert::TryFrom<NSObject> for MTRWebRTCTransportProviderClusterSFrameStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWebRTCTransportProviderClusterSFrameStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWebRTCTransportProviderClusterSFrameStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRWebRTCTransportProviderClusterSFrameStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWebRTCTransportProviderClusterSFrameStruct" ,)
        }
    }
}
impl IMTRWebRTCTransportProviderClusterSFrameStruct
    for MTRWebRTCTransportProviderClusterSFrameStruct
{
}
pub trait IMTRWebRTCTransportProviderClusterSFrameStruct: Sized + std::ops::Deref {
    unsafe fn cipherSuite(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cipherSuite)
    }
    unsafe fn setCipherSuite_(&self, cipherSuite: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCipherSuite : cipherSuite)
    }
    unsafe fn baseKey(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, baseKey)
    }
    unsafe fn setBaseKey_(&self, baseKey: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBaseKey : baseKey)
    }
    unsafe fn kid(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, kid)
    }
    unsafe fn setKid_(&self, kid: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setKid : kid)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct(pub id);
impl std::ops::Deref for MTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message
    for MTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct
{
}
impl MTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct {}
impl INSObject for MTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct {}
impl PNSObject for MTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct" ,)
        }
    }
}
impl IMTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct
    for MTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct
{
}
pub trait IMTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct:
    Sized + std::ops::Deref
{
    unsafe fn initialDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, initialDuration)
    }
    unsafe fn setInitialDuration_(&self, initialDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInitialDuration : initialDuration)
    }
    unsafe fn augmentationDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, augmentationDuration)
    }
    unsafe fn setAugmentationDuration_(&self, augmentationDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAugmentationDuration : augmentationDuration)
    }
    unsafe fn maxDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxDuration)
    }
    unsafe fn setMaxDuration_(&self, maxDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxDuration : maxDuration)
    }
    unsafe fn blindDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, blindDuration)
    }
    unsafe fn setBlindDuration_(&self, blindDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBlindDuration : blindDuration)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPushAVStreamTransportClusterTransportZoneOptionsStruct(pub id);
impl std::ops::Deref for MTRPushAVStreamTransportClusterTransportZoneOptionsStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPushAVStreamTransportClusterTransportZoneOptionsStruct {}
impl MTRPushAVStreamTransportClusterTransportZoneOptionsStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterTransportZoneOptionsStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPushAVStreamTransportClusterTransportZoneOptionsStruct {}
impl INSObject for MTRPushAVStreamTransportClusterTransportZoneOptionsStruct {}
impl PNSObject for MTRPushAVStreamTransportClusterTransportZoneOptionsStruct {}
impl std::convert::TryFrom<NSObject> for MTRPushAVStreamTransportClusterTransportZoneOptionsStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPushAVStreamTransportClusterTransportZoneOptionsStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterTransportZoneOptionsStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRPushAVStreamTransportClusterTransportZoneOptionsStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPushAVStreamTransportClusterTransportZoneOptionsStruct" ,)
        }
    }
}
impl IMTRPushAVStreamTransportClusterTransportZoneOptionsStruct
    for MTRPushAVStreamTransportClusterTransportZoneOptionsStruct
{
}
pub trait IMTRPushAVStreamTransportClusterTransportZoneOptionsStruct:
    Sized + std::ops::Deref
{
    unsafe fn zone(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, zone)
    }
    unsafe fn setZone_(&self, zone: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setZone : zone)
    }
    unsafe fn sensitivity(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sensitivity)
    }
    unsafe fn setSensitivity_(&self, sensitivity: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSensitivity : sensitivity)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPushAVStreamTransportClusterTransportTriggerOptionsStruct(pub id);
impl std::ops::Deref for MTRPushAVStreamTransportClusterTransportTriggerOptionsStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPushAVStreamTransportClusterTransportTriggerOptionsStruct {}
impl MTRPushAVStreamTransportClusterTransportTriggerOptionsStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterTransportTriggerOptionsStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPushAVStreamTransportClusterTransportTriggerOptionsStruct {}
impl INSObject for MTRPushAVStreamTransportClusterTransportTriggerOptionsStruct {}
impl PNSObject for MTRPushAVStreamTransportClusterTransportTriggerOptionsStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRPushAVStreamTransportClusterTransportTriggerOptionsStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPushAVStreamTransportClusterTransportTriggerOptionsStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterTransportTriggerOptionsStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRPushAVStreamTransportClusterTransportTriggerOptionsStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPushAVStreamTransportClusterTransportTriggerOptionsStruct" ,)
        }
    }
}
impl IMTRPushAVStreamTransportClusterTransportTriggerOptionsStruct
    for MTRPushAVStreamTransportClusterTransportTriggerOptionsStruct
{
}
pub trait IMTRPushAVStreamTransportClusterTransportTriggerOptionsStruct:
    Sized + std::ops::Deref
{
    unsafe fn triggerType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, triggerType)
    }
    unsafe fn setTriggerType_(&self, triggerType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTriggerType : triggerType)
    }
    unsafe fn motionZones(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, motionZones)
    }
    unsafe fn setMotionZones_(&self, motionZones: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMotionZones : motionZones)
    }
    unsafe fn motionSensitivity(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, motionSensitivity)
    }
    unsafe fn setMotionSensitivity_(&self, motionSensitivity: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMotionSensitivity : motionSensitivity)
    }
    unsafe fn motionTimeControl(
        &self,
    ) -> MTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, motionTimeControl)
    }
    unsafe fn setMotionTimeControl_(
        &self,
        motionTimeControl: MTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMotionTimeControl : motionTimeControl)
    }
    unsafe fn maxPreRollLen(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxPreRollLen)
    }
    unsafe fn setMaxPreRollLen_(&self, maxPreRollLen: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxPreRollLen : maxPreRollLen)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPushAVStreamTransportClusterCMAFContainerOptionsStruct(pub id);
impl std::ops::Deref for MTRPushAVStreamTransportClusterCMAFContainerOptionsStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPushAVStreamTransportClusterCMAFContainerOptionsStruct {}
impl MTRPushAVStreamTransportClusterCMAFContainerOptionsStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterCMAFContainerOptionsStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPushAVStreamTransportClusterCMAFContainerOptionsStruct {}
impl INSObject for MTRPushAVStreamTransportClusterCMAFContainerOptionsStruct {}
impl PNSObject for MTRPushAVStreamTransportClusterCMAFContainerOptionsStruct {}
impl std::convert::TryFrom<NSObject> for MTRPushAVStreamTransportClusterCMAFContainerOptionsStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPushAVStreamTransportClusterCMAFContainerOptionsStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterCMAFContainerOptionsStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRPushAVStreamTransportClusterCMAFContainerOptionsStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPushAVStreamTransportClusterCMAFContainerOptionsStruct" ,)
        }
    }
}
impl IMTRPushAVStreamTransportClusterCMAFContainerOptionsStruct
    for MTRPushAVStreamTransportClusterCMAFContainerOptionsStruct
{
}
pub trait IMTRPushAVStreamTransportClusterCMAFContainerOptionsStruct:
    Sized + std::ops::Deref
{
    unsafe fn cmafInterface(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cmafInterface)
    }
    unsafe fn setCmafInterface_(&self, cmafInterface: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCmafInterface : cmafInterface)
    }
    unsafe fn segmentDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, segmentDuration)
    }
    unsafe fn setSegmentDuration_(&self, segmentDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSegmentDuration : segmentDuration)
    }
    unsafe fn chunkDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, chunkDuration)
    }
    unsafe fn setChunkDuration_(&self, chunkDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChunkDuration : chunkDuration)
    }
    unsafe fn sessionGroup(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sessionGroup)
    }
    unsafe fn setSessionGroup_(&self, sessionGroup: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSessionGroup : sessionGroup)
    }
    unsafe fn trackName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, trackName)
    }
    unsafe fn setTrackName_(&self, trackName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTrackName : trackName)
    }
    unsafe fn cencKey(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cencKey)
    }
    unsafe fn setCencKey_(&self, cencKey: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCencKey : cencKey)
    }
    unsafe fn cencKeyID(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cencKeyID)
    }
    unsafe fn setCencKeyID_(&self, cencKeyID: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCencKeyID : cencKeyID)
    }
    unsafe fn metadataEnabled(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, metadataEnabled)
    }
    unsafe fn setMetadataEnabled_(&self, metadataEnabled: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMetadataEnabled : metadataEnabled)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPushAVStreamTransportClusterContainerOptionsStruct(pub id);
impl std::ops::Deref for MTRPushAVStreamTransportClusterContainerOptionsStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPushAVStreamTransportClusterContainerOptionsStruct {}
impl MTRPushAVStreamTransportClusterContainerOptionsStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterContainerOptionsStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPushAVStreamTransportClusterContainerOptionsStruct {}
impl INSObject for MTRPushAVStreamTransportClusterContainerOptionsStruct {}
impl PNSObject for MTRPushAVStreamTransportClusterContainerOptionsStruct {}
impl std::convert::TryFrom<NSObject> for MTRPushAVStreamTransportClusterContainerOptionsStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPushAVStreamTransportClusterContainerOptionsStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterContainerOptionsStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRPushAVStreamTransportClusterContainerOptionsStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPushAVStreamTransportClusterContainerOptionsStruct" ,)
        }
    }
}
impl IMTRPushAVStreamTransportClusterContainerOptionsStruct
    for MTRPushAVStreamTransportClusterContainerOptionsStruct
{
}
pub trait IMTRPushAVStreamTransportClusterContainerOptionsStruct: Sized + std::ops::Deref {
    unsafe fn containerType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, containerType)
    }
    unsafe fn setContainerType_(&self, containerType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setContainerType : containerType)
    }
    unsafe fn cmafContainerOptions(
        &self,
    ) -> MTRPushAVStreamTransportClusterCMAFContainerOptionsStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cmafContainerOptions)
    }
    unsafe fn setCmafContainerOptions_(
        &self,
        cmafContainerOptions: MTRPushAVStreamTransportClusterCMAFContainerOptionsStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCmafContainerOptions : cmafContainerOptions)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPushAVStreamTransportClusterTransportOptionsStruct(pub id);
impl std::ops::Deref for MTRPushAVStreamTransportClusterTransportOptionsStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPushAVStreamTransportClusterTransportOptionsStruct {}
impl MTRPushAVStreamTransportClusterTransportOptionsStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterTransportOptionsStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPushAVStreamTransportClusterTransportOptionsStruct {}
impl INSObject for MTRPushAVStreamTransportClusterTransportOptionsStruct {}
impl PNSObject for MTRPushAVStreamTransportClusterTransportOptionsStruct {}
impl std::convert::TryFrom<NSObject> for MTRPushAVStreamTransportClusterTransportOptionsStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPushAVStreamTransportClusterTransportOptionsStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterTransportOptionsStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRPushAVStreamTransportClusterTransportOptionsStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPushAVStreamTransportClusterTransportOptionsStruct" ,)
        }
    }
}
impl IMTRPushAVStreamTransportClusterTransportOptionsStruct
    for MTRPushAVStreamTransportClusterTransportOptionsStruct
{
}
pub trait IMTRPushAVStreamTransportClusterTransportOptionsStruct: Sized + std::ops::Deref {
    unsafe fn streamUsage(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, streamUsage)
    }
    unsafe fn setStreamUsage_(&self, streamUsage: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStreamUsage : streamUsage)
    }
    unsafe fn videoStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, videoStreamID)
    }
    unsafe fn setVideoStreamID_(&self, videoStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVideoStreamID : videoStreamID)
    }
    unsafe fn audioStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, audioStreamID)
    }
    unsafe fn setAudioStreamID_(&self, audioStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAudioStreamID : audioStreamID)
    }
    unsafe fn tlsEndpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tlsEndpointID)
    }
    unsafe fn setTlsEndpointID_(&self, tlsEndpointID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTlsEndpointID : tlsEndpointID)
    }
    unsafe fn url(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, url)
    }
    unsafe fn setUrl_(&self, url: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUrl : url)
    }
    unsafe fn triggerOptions(&self) -> MTRPushAVStreamTransportClusterTransportTriggerOptionsStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, triggerOptions)
    }
    unsafe fn setTriggerOptions_(
        &self,
        triggerOptions: MTRPushAVStreamTransportClusterTransportTriggerOptionsStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTriggerOptions : triggerOptions)
    }
    unsafe fn ingestMethod(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ingestMethod)
    }
    unsafe fn setIngestMethod_(&self, ingestMethod: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIngestMethod : ingestMethod)
    }
    unsafe fn containerOptions(&self) -> MTRPushAVStreamTransportClusterContainerOptionsStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, containerOptions)
    }
    unsafe fn setContainerOptions_(
        &self,
        containerOptions: MTRPushAVStreamTransportClusterContainerOptionsStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setContainerOptions : containerOptions)
    }
    unsafe fn expiryTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, expiryTime)
    }
    unsafe fn setExpiryTime_(&self, expiryTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExpiryTime : expiryTime)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPushAVStreamTransportClusterTransportConfigurationStruct(pub id);
impl std::ops::Deref for MTRPushAVStreamTransportClusterTransportConfigurationStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPushAVStreamTransportClusterTransportConfigurationStruct {}
impl MTRPushAVStreamTransportClusterTransportConfigurationStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterTransportConfigurationStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPushAVStreamTransportClusterTransportConfigurationStruct {}
impl INSObject for MTRPushAVStreamTransportClusterTransportConfigurationStruct {}
impl PNSObject for MTRPushAVStreamTransportClusterTransportConfigurationStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRPushAVStreamTransportClusterTransportConfigurationStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPushAVStreamTransportClusterTransportConfigurationStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterTransportConfigurationStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRPushAVStreamTransportClusterTransportConfigurationStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPushAVStreamTransportClusterTransportConfigurationStruct" ,)
        }
    }
}
impl IMTRPushAVStreamTransportClusterTransportConfigurationStruct
    for MTRPushAVStreamTransportClusterTransportConfigurationStruct
{
}
pub trait IMTRPushAVStreamTransportClusterTransportConfigurationStruct:
    Sized + std::ops::Deref
{
    unsafe fn connectionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, connectionID)
    }
    unsafe fn setConnectionID_(&self, connectionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setConnectionID : connectionID)
    }
    unsafe fn transportStatus(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transportStatus)
    }
    unsafe fn setTransportStatus_(&self, transportStatus: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransportStatus : transportStatus)
    }
    unsafe fn transportOptions(&self) -> MTRPushAVStreamTransportClusterTransportOptionsStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transportOptions)
    }
    unsafe fn setTransportOptions_(
        &self,
        transportOptions: MTRPushAVStreamTransportClusterTransportOptionsStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransportOptions : transportOptions)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPushAVStreamTransportClusterSupportedFormatStruct(pub id);
impl std::ops::Deref for MTRPushAVStreamTransportClusterSupportedFormatStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPushAVStreamTransportClusterSupportedFormatStruct {}
impl MTRPushAVStreamTransportClusterSupportedFormatStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterSupportedFormatStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPushAVStreamTransportClusterSupportedFormatStruct {}
impl INSObject for MTRPushAVStreamTransportClusterSupportedFormatStruct {}
impl PNSObject for MTRPushAVStreamTransportClusterSupportedFormatStruct {}
impl std::convert::TryFrom<NSObject> for MTRPushAVStreamTransportClusterSupportedFormatStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPushAVStreamTransportClusterSupportedFormatStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterSupportedFormatStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRPushAVStreamTransportClusterSupportedFormatStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPushAVStreamTransportClusterSupportedFormatStruct" ,)
        }
    }
}
impl IMTRPushAVStreamTransportClusterSupportedFormatStruct
    for MTRPushAVStreamTransportClusterSupportedFormatStruct
{
}
pub trait IMTRPushAVStreamTransportClusterSupportedFormatStruct: Sized + std::ops::Deref {
    unsafe fn containerFormat(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, containerFormat)
    }
    unsafe fn setContainerFormat_(&self, containerFormat: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setContainerFormat : containerFormat)
    }
    unsafe fn ingestMethod(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ingestMethod)
    }
    unsafe fn setIngestMethod_(&self, ingestMethod: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIngestMethod : ingestMethod)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPushAVStreamTransportClusterPushTransportBeginEvent(pub id);
impl std::ops::Deref for MTRPushAVStreamTransportClusterPushTransportBeginEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPushAVStreamTransportClusterPushTransportBeginEvent {}
impl MTRPushAVStreamTransportClusterPushTransportBeginEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterPushTransportBeginEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPushAVStreamTransportClusterPushTransportBeginEvent {}
impl INSObject for MTRPushAVStreamTransportClusterPushTransportBeginEvent {}
impl PNSObject for MTRPushAVStreamTransportClusterPushTransportBeginEvent {}
impl std::convert::TryFrom<NSObject> for MTRPushAVStreamTransportClusterPushTransportBeginEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPushAVStreamTransportClusterPushTransportBeginEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterPushTransportBeginEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPushAVStreamTransportClusterPushTransportBeginEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPushAVStreamTransportClusterPushTransportBeginEvent" ,)
        }
    }
}
impl IMTRPushAVStreamTransportClusterPushTransportBeginEvent
    for MTRPushAVStreamTransportClusterPushTransportBeginEvent
{
}
pub trait IMTRPushAVStreamTransportClusterPushTransportBeginEvent: Sized + std::ops::Deref {
    unsafe fn connectionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, connectionID)
    }
    unsafe fn setConnectionID_(&self, connectionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setConnectionID : connectionID)
    }
    unsafe fn triggerType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, triggerType)
    }
    unsafe fn setTriggerType_(&self, triggerType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTriggerType : triggerType)
    }
    unsafe fn activationReason(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, activationReason)
    }
    unsafe fn setActivationReason_(&self, activationReason: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActivationReason : activationReason)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPushAVStreamTransportClusterPushTransportEndEvent(pub id);
impl std::ops::Deref for MTRPushAVStreamTransportClusterPushTransportEndEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPushAVStreamTransportClusterPushTransportEndEvent {}
impl MTRPushAVStreamTransportClusterPushTransportEndEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterPushTransportEndEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPushAVStreamTransportClusterPushTransportEndEvent {}
impl INSObject for MTRPushAVStreamTransportClusterPushTransportEndEvent {}
impl PNSObject for MTRPushAVStreamTransportClusterPushTransportEndEvent {}
impl std::convert::TryFrom<NSObject> for MTRPushAVStreamTransportClusterPushTransportEndEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPushAVStreamTransportClusterPushTransportEndEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterPushTransportEndEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRPushAVStreamTransportClusterPushTransportEndEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPushAVStreamTransportClusterPushTransportEndEvent" ,)
        }
    }
}
impl IMTRPushAVStreamTransportClusterPushTransportEndEvent
    for MTRPushAVStreamTransportClusterPushTransportEndEvent
{
}
pub trait IMTRPushAVStreamTransportClusterPushTransportEndEvent: Sized + std::ops::Deref {
    unsafe fn connectionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, connectionID)
    }
    unsafe fn setConnectionID_(&self, connectionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setConnectionID : connectionID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRChimeClusterChimeSoundStruct(pub id);
impl std::ops::Deref for MTRChimeClusterChimeSoundStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRChimeClusterChimeSoundStruct {}
impl MTRChimeClusterChimeSoundStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRChimeClusterChimeSoundStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRChimeClusterChimeSoundStruct {}
impl INSObject for MTRChimeClusterChimeSoundStruct {}
impl PNSObject for MTRChimeClusterChimeSoundStruct {}
impl std::convert::TryFrom<NSObject> for MTRChimeClusterChimeSoundStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRChimeClusterChimeSoundStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRChimeClusterChimeSoundStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRChimeClusterChimeSoundStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRChimeClusterChimeSoundStruct")
        }
    }
}
impl IMTRChimeClusterChimeSoundStruct for MTRChimeClusterChimeSoundStruct {}
pub trait IMTRChimeClusterChimeSoundStruct: Sized + std::ops::Deref {
    unsafe fn chimeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, chimeID)
    }
    unsafe fn setChimeID_(&self, chimeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChimeID : chimeID)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityTariffClusterPeakPeriodStruct(pub id);
impl std::ops::Deref for MTRCommodityTariffClusterPeakPeriodStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityTariffClusterPeakPeriodStruct {}
impl MTRCommodityTariffClusterPeakPeriodStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterPeakPeriodStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRCommodityTariffClusterPeakPeriodStruct {}
impl INSObject for MTRCommodityTariffClusterPeakPeriodStruct {}
impl PNSObject for MTRCommodityTariffClusterPeakPeriodStruct {}
impl std::convert::TryFrom<NSObject> for MTRCommodityTariffClusterPeakPeriodStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommodityTariffClusterPeakPeriodStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterPeakPeriodStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityTariffClusterPeakPeriodStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRCommodityTariffClusterPeakPeriodStruct")
        }
    }
}
impl IMTRCommodityTariffClusterPeakPeriodStruct for MTRCommodityTariffClusterPeakPeriodStruct {}
pub trait IMTRCommodityTariffClusterPeakPeriodStruct: Sized + std::ops::Deref {
    unsafe fn severity(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, severity)
    }
    unsafe fn setSeverity_(&self, severity: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSeverity : severity)
    }
    unsafe fn peakPeriod(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, peakPeriod)
    }
    unsafe fn setPeakPeriod_(&self, peakPeriod: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPeakPeriod : peakPeriod)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityTariffClusterAuxiliaryLoadSwitchSettingsStruct(pub id);
impl std::ops::Deref for MTRCommodityTariffClusterAuxiliaryLoadSwitchSettingsStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityTariffClusterAuxiliaryLoadSwitchSettingsStruct {}
impl MTRCommodityTariffClusterAuxiliaryLoadSwitchSettingsStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterAuxiliaryLoadSwitchSettingsStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCommodityTariffClusterAuxiliaryLoadSwitchSettingsStruct {}
impl INSObject for MTRCommodityTariffClusterAuxiliaryLoadSwitchSettingsStruct {}
impl PNSObject for MTRCommodityTariffClusterAuxiliaryLoadSwitchSettingsStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRCommodityTariffClusterAuxiliaryLoadSwitchSettingsStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommodityTariffClusterAuxiliaryLoadSwitchSettingsStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterAuxiliaryLoadSwitchSettingsStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityTariffClusterAuxiliaryLoadSwitchSettingsStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCommodityTariffClusterAuxiliaryLoadSwitchSettingsStruct" ,)
        }
    }
}
impl IMTRCommodityTariffClusterAuxiliaryLoadSwitchSettingsStruct
    for MTRCommodityTariffClusterAuxiliaryLoadSwitchSettingsStruct
{
}
pub trait IMTRCommodityTariffClusterAuxiliaryLoadSwitchSettingsStruct:
    Sized + std::ops::Deref
{
    unsafe fn number(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, number)
    }
    unsafe fn setNumber_(&self, number: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNumber : number)
    }
    unsafe fn requiredState(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requiredState)
    }
    unsafe fn setRequiredState_(&self, requiredState: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRequiredState : requiredState)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityTariffClusterTariffPriceStruct(pub id);
impl std::ops::Deref for MTRCommodityTariffClusterTariffPriceStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityTariffClusterTariffPriceStruct {}
impl MTRCommodityTariffClusterTariffPriceStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterTariffPriceStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRCommodityTariffClusterTariffPriceStruct {}
impl INSObject for MTRCommodityTariffClusterTariffPriceStruct {}
impl PNSObject for MTRCommodityTariffClusterTariffPriceStruct {}
impl std::convert::TryFrom<NSObject> for MTRCommodityTariffClusterTariffPriceStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommodityTariffClusterTariffPriceStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterTariffPriceStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityTariffClusterTariffPriceStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRCommodityTariffClusterTariffPriceStruct")
        }
    }
}
impl IMTRCommodityTariffClusterTariffPriceStruct for MTRCommodityTariffClusterTariffPriceStruct {}
pub trait IMTRCommodityTariffClusterTariffPriceStruct: Sized + std::ops::Deref {
    unsafe fn priceType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, priceType)
    }
    unsafe fn setPriceType_(&self, priceType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPriceType : priceType)
    }
    unsafe fn price(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, price)
    }
    unsafe fn setPrice_(&self, price: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPrice : price)
    }
    unsafe fn priceLevel(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, priceLevel)
    }
    unsafe fn setPriceLevel_(&self, priceLevel: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPriceLevel : priceLevel)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityTariffClusterTariffComponentStruct(pub id);
impl std::ops::Deref for MTRCommodityTariffClusterTariffComponentStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityTariffClusterTariffComponentStruct {}
impl MTRCommodityTariffClusterTariffComponentStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterTariffComponentStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCommodityTariffClusterTariffComponentStruct {}
impl INSObject for MTRCommodityTariffClusterTariffComponentStruct {}
impl PNSObject for MTRCommodityTariffClusterTariffComponentStruct {}
impl std::convert::TryFrom<NSObject> for MTRCommodityTariffClusterTariffComponentStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommodityTariffClusterTariffComponentStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterTariffComponentStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityTariffClusterTariffComponentStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCommodityTariffClusterTariffComponentStruct" ,)
        }
    }
}
impl IMTRCommodityTariffClusterTariffComponentStruct
    for MTRCommodityTariffClusterTariffComponentStruct
{
}
pub trait IMTRCommodityTariffClusterTariffComponentStruct: Sized + std::ops::Deref {
    unsafe fn tariffComponentID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tariffComponentID)
    }
    unsafe fn setTariffComponentID_(&self, tariffComponentID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTariffComponentID : tariffComponentID)
    }
    unsafe fn price(&self) -> MTRCommodityTariffClusterTariffPriceStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, price)
    }
    unsafe fn setPrice_(&self, price: MTRCommodityTariffClusterTariffPriceStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPrice : price)
    }
    unsafe fn friendlyCredit(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, friendlyCredit)
    }
    unsafe fn setFriendlyCredit_(&self, friendlyCredit: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFriendlyCredit : friendlyCredit)
    }
    unsafe fn auxiliaryLoad(&self) -> MTRCommodityTariffClusterAuxiliaryLoadSwitchSettingsStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, auxiliaryLoad)
    }
    unsafe fn setAuxiliaryLoad_(
        &self,
        auxiliaryLoad: MTRCommodityTariffClusterAuxiliaryLoadSwitchSettingsStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAuxiliaryLoad : auxiliaryLoad)
    }
    unsafe fn peakPeriod(&self) -> MTRCommodityTariffClusterPeakPeriodStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, peakPeriod)
    }
    unsafe fn setPeakPeriod_(&self, peakPeriod: MTRCommodityTariffClusterPeakPeriodStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPeakPeriod : peakPeriod)
    }
    unsafe fn powerThreshold(&self) -> MTRDataTypePowerThresholdStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, powerThreshold)
    }
    unsafe fn setPowerThreshold_(&self, powerThreshold: MTRDataTypePowerThresholdStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPowerThreshold : powerThreshold)
    }
    unsafe fn threshold(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, threshold)
    }
    unsafe fn setThreshold_(&self, threshold: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setThreshold : threshold)
    }
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
    unsafe fn predicted(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, predicted)
    }
    unsafe fn setPredicted_(&self, predicted: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPredicted : predicted)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityTariffClusterCalendarPeriodStruct(pub id);
impl std::ops::Deref for MTRCommodityTariffClusterCalendarPeriodStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityTariffClusterCalendarPeriodStruct {}
impl MTRCommodityTariffClusterCalendarPeriodStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterCalendarPeriodStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRCommodityTariffClusterCalendarPeriodStruct {}
impl INSObject for MTRCommodityTariffClusterCalendarPeriodStruct {}
impl PNSObject for MTRCommodityTariffClusterCalendarPeriodStruct {}
impl std::convert::TryFrom<NSObject> for MTRCommodityTariffClusterCalendarPeriodStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommodityTariffClusterCalendarPeriodStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterCalendarPeriodStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityTariffClusterCalendarPeriodStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCommodityTariffClusterCalendarPeriodStruct" ,)
        }
    }
}
impl IMTRCommodityTariffClusterCalendarPeriodStruct
    for MTRCommodityTariffClusterCalendarPeriodStruct
{
}
pub trait IMTRCommodityTariffClusterCalendarPeriodStruct: Sized + std::ops::Deref {
    unsafe fn startDate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startDate)
    }
    unsafe fn setStartDate_(&self, startDate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartDate : startDate)
    }
    unsafe fn dayPatternIDs(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dayPatternIDs)
    }
    unsafe fn setDayPatternIDs_(&self, dayPatternIDs: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDayPatternIDs : dayPatternIDs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityTariffClusterDayEntryStruct(pub id);
impl std::ops::Deref for MTRCommodityTariffClusterDayEntryStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityTariffClusterDayEntryStruct {}
impl MTRCommodityTariffClusterDayEntryStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterDayEntryStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRCommodityTariffClusterDayEntryStruct {}
impl INSObject for MTRCommodityTariffClusterDayEntryStruct {}
impl PNSObject for MTRCommodityTariffClusterDayEntryStruct {}
impl std::convert::TryFrom<NSObject> for MTRCommodityTariffClusterDayEntryStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRCommodityTariffClusterDayEntryStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterDayEntryStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityTariffClusterDayEntryStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRCommodityTariffClusterDayEntryStruct")
        }
    }
}
impl IMTRCommodityTariffClusterDayEntryStruct for MTRCommodityTariffClusterDayEntryStruct {}
pub trait IMTRCommodityTariffClusterDayEntryStruct: Sized + std::ops::Deref {
    unsafe fn dayEntryID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dayEntryID)
    }
    unsafe fn setDayEntryID_(&self, dayEntryID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDayEntryID : dayEntryID)
    }
    unsafe fn startTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startTime)
    }
    unsafe fn setStartTime_(&self, startTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartTime : startTime)
    }
    unsafe fn duration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, duration)
    }
    unsafe fn setDuration_(&self, duration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDuration : duration)
    }
    unsafe fn randomizationOffset(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, randomizationOffset)
    }
    unsafe fn setRandomizationOffset_(&self, randomizationOffset: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRandomizationOffset : randomizationOffset)
    }
    unsafe fn randomizationType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, randomizationType)
    }
    unsafe fn setRandomizationType_(&self, randomizationType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRandomizationType : randomizationType)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityTariffClusterDayPatternStruct(pub id);
impl std::ops::Deref for MTRCommodityTariffClusterDayPatternStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityTariffClusterDayPatternStruct {}
impl MTRCommodityTariffClusterDayPatternStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterDayPatternStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRCommodityTariffClusterDayPatternStruct {}
impl INSObject for MTRCommodityTariffClusterDayPatternStruct {}
impl PNSObject for MTRCommodityTariffClusterDayPatternStruct {}
impl std::convert::TryFrom<NSObject> for MTRCommodityTariffClusterDayPatternStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommodityTariffClusterDayPatternStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterDayPatternStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityTariffClusterDayPatternStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRCommodityTariffClusterDayPatternStruct")
        }
    }
}
impl IMTRCommodityTariffClusterDayPatternStruct for MTRCommodityTariffClusterDayPatternStruct {}
pub trait IMTRCommodityTariffClusterDayPatternStruct: Sized + std::ops::Deref {
    unsafe fn dayPatternID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dayPatternID)
    }
    unsafe fn setDayPatternID_(&self, dayPatternID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDayPatternID : dayPatternID)
    }
    unsafe fn daysOfWeek(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, daysOfWeek)
    }
    unsafe fn setDaysOfWeek_(&self, daysOfWeek: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDaysOfWeek : daysOfWeek)
    }
    unsafe fn dayEntryIDs(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dayEntryIDs)
    }
    unsafe fn setDayEntryIDs_(&self, dayEntryIDs: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDayEntryIDs : dayEntryIDs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityTariffClusterDayStruct(pub id);
impl std::ops::Deref for MTRCommodityTariffClusterDayStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityTariffClusterDayStruct {}
impl MTRCommodityTariffClusterDayStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterDayStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRCommodityTariffClusterDayStruct {}
impl INSObject for MTRCommodityTariffClusterDayStruct {}
impl PNSObject for MTRCommodityTariffClusterDayStruct {}
impl std::convert::TryFrom<NSObject> for MTRCommodityTariffClusterDayStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRCommodityTariffClusterDayStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterDayStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityTariffClusterDayStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRCommodityTariffClusterDayStruct")
        }
    }
}
impl IMTRCommodityTariffClusterDayStruct for MTRCommodityTariffClusterDayStruct {}
pub trait IMTRCommodityTariffClusterDayStruct: Sized + std::ops::Deref {
    unsafe fn date(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, date)
    }
    unsafe fn setDate_(&self, date: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDate : date)
    }
    unsafe fn dayType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dayType)
    }
    unsafe fn setDayType_(&self, dayType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDayType : dayType)
    }
    unsafe fn dayEntryIDs(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dayEntryIDs)
    }
    unsafe fn setDayEntryIDs_(&self, dayEntryIDs: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDayEntryIDs : dayEntryIDs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityTariffClusterTariffInformationStruct(pub id);
impl std::ops::Deref for MTRCommodityTariffClusterTariffInformationStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityTariffClusterTariffInformationStruct {}
impl MTRCommodityTariffClusterTariffInformationStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterTariffInformationStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCommodityTariffClusterTariffInformationStruct {}
impl INSObject for MTRCommodityTariffClusterTariffInformationStruct {}
impl PNSObject for MTRCommodityTariffClusterTariffInformationStruct {}
impl std::convert::TryFrom<NSObject> for MTRCommodityTariffClusterTariffInformationStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommodityTariffClusterTariffInformationStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterTariffInformationStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityTariffClusterTariffInformationStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCommodityTariffClusterTariffInformationStruct" ,)
        }
    }
}
impl IMTRCommodityTariffClusterTariffInformationStruct
    for MTRCommodityTariffClusterTariffInformationStruct
{
}
pub trait IMTRCommodityTariffClusterTariffInformationStruct: Sized + std::ops::Deref {
    unsafe fn tariffLabel(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tariffLabel)
    }
    unsafe fn setTariffLabel_(&self, tariffLabel: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTariffLabel : tariffLabel)
    }
    unsafe fn providerName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, providerName)
    }
    unsafe fn setProviderName_(&self, providerName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProviderName : providerName)
    }
    unsafe fn currency(&self) -> MTRDataTypeCurrencyStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currency)
    }
    unsafe fn setCurrency_(&self, currency: MTRDataTypeCurrencyStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrency : currency)
    }
    unsafe fn blockMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, blockMode)
    }
    unsafe fn setBlockMode_(&self, blockMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBlockMode : blockMode)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityTariffClusterTariffPeriodStruct(pub id);
impl std::ops::Deref for MTRCommodityTariffClusterTariffPeriodStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityTariffClusterTariffPeriodStruct {}
impl MTRCommodityTariffClusterTariffPeriodStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterTariffPeriodStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRCommodityTariffClusterTariffPeriodStruct {}
impl INSObject for MTRCommodityTariffClusterTariffPeriodStruct {}
impl PNSObject for MTRCommodityTariffClusterTariffPeriodStruct {}
impl std::convert::TryFrom<NSObject> for MTRCommodityTariffClusterTariffPeriodStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommodityTariffClusterTariffPeriodStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterTariffPeriodStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityTariffClusterTariffPeriodStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRCommodityTariffClusterTariffPeriodStruct")
        }
    }
}
impl IMTRCommodityTariffClusterTariffPeriodStruct for MTRCommodityTariffClusterTariffPeriodStruct {}
pub trait IMTRCommodityTariffClusterTariffPeriodStruct: Sized + std::ops::Deref {
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
    unsafe fn dayEntryIDs(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dayEntryIDs)
    }
    unsafe fn setDayEntryIDs_(&self, dayEntryIDs: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDayEntryIDs : dayEntryIDs)
    }
    unsafe fn tariffComponentIDs(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tariffComponentIDs)
    }
    unsafe fn setTariffComponentIDs_(&self, tariffComponentIDs: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTariffComponentIDs : tariffComponentIDs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREcosystemInformationClusterDeviceTypeStruct(pub id);
impl std::ops::Deref for MTREcosystemInformationClusterDeviceTypeStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREcosystemInformationClusterDeviceTypeStruct {}
impl MTREcosystemInformationClusterDeviceTypeStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTREcosystemInformationClusterDeviceTypeStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTREcosystemInformationClusterDeviceTypeStruct {}
impl INSObject for MTREcosystemInformationClusterDeviceTypeStruct {}
impl PNSObject for MTREcosystemInformationClusterDeviceTypeStruct {}
impl std::convert::TryFrom<NSObject> for MTREcosystemInformationClusterDeviceTypeStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTREcosystemInformationClusterDeviceTypeStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREcosystemInformationClusterDeviceTypeStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTREcosystemInformationClusterDeviceTypeStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTREcosystemInformationClusterDeviceTypeStruct" ,)
        }
    }
}
impl IMTREcosystemInformationClusterDeviceTypeStruct
    for MTREcosystemInformationClusterDeviceTypeStruct
{
}
pub trait IMTREcosystemInformationClusterDeviceTypeStruct: Sized + std::ops::Deref {
    unsafe fn deviceType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deviceType)
    }
    unsafe fn setDeviceType_(&self, deviceType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDeviceType : deviceType)
    }
    unsafe fn revision(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, revision)
    }
    unsafe fn setRevision_(&self, revision: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRevision : revision)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREcosystemInformationClusterEcosystemDeviceStruct(pub id);
impl std::ops::Deref for MTREcosystemInformationClusterEcosystemDeviceStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREcosystemInformationClusterEcosystemDeviceStruct {}
impl MTREcosystemInformationClusterEcosystemDeviceStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTREcosystemInformationClusterEcosystemDeviceStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTREcosystemInformationClusterEcosystemDeviceStruct {}
impl INSObject for MTREcosystemInformationClusterEcosystemDeviceStruct {}
impl PNSObject for MTREcosystemInformationClusterEcosystemDeviceStruct {}
impl std::convert::TryFrom<NSObject> for MTREcosystemInformationClusterEcosystemDeviceStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTREcosystemInformationClusterEcosystemDeviceStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREcosystemInformationClusterEcosystemDeviceStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTREcosystemInformationClusterEcosystemDeviceStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTREcosystemInformationClusterEcosystemDeviceStruct" ,)
        }
    }
}
impl IMTREcosystemInformationClusterEcosystemDeviceStruct
    for MTREcosystemInformationClusterEcosystemDeviceStruct
{
}
pub trait IMTREcosystemInformationClusterEcosystemDeviceStruct: Sized + std::ops::Deref {
    unsafe fn deviceName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deviceName)
    }
    unsafe fn setDeviceName_(&self, deviceName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDeviceName : deviceName)
    }
    unsafe fn deviceNameLastEdit(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deviceNameLastEdit)
    }
    unsafe fn setDeviceNameLastEdit_(&self, deviceNameLastEdit: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDeviceNameLastEdit : deviceNameLastEdit)
    }
    unsafe fn bridgedEndpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, bridgedEndpoint)
    }
    unsafe fn setBridgedEndpoint_(&self, bridgedEndpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBridgedEndpoint : bridgedEndpoint)
    }
    unsafe fn originalEndpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, originalEndpoint)
    }
    unsafe fn setOriginalEndpoint_(&self, originalEndpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOriginalEndpoint : originalEndpoint)
    }
    unsafe fn deviceTypes(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deviceTypes)
    }
    unsafe fn setDeviceTypes_(&self, deviceTypes: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDeviceTypes : deviceTypes)
    }
    unsafe fn uniqueLocationIDs(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, uniqueLocationIDs)
    }
    unsafe fn setUniqueLocationIDs_(&self, uniqueLocationIDs: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUniqueLocationIDs : uniqueLocationIDs)
    }
    unsafe fn uniqueLocationIDsLastEdit(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, uniqueLocationIDsLastEdit)
    }
    unsafe fn setUniqueLocationIDsLastEdit_(&self, uniqueLocationIDsLastEdit: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUniqueLocationIDsLastEdit : uniqueLocationIDsLastEdit)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREcosystemInformationClusterEcosystemLocationStruct(pub id);
impl std::ops::Deref for MTREcosystemInformationClusterEcosystemLocationStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREcosystemInformationClusterEcosystemLocationStruct {}
impl MTREcosystemInformationClusterEcosystemLocationStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTREcosystemInformationClusterEcosystemLocationStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTREcosystemInformationClusterEcosystemLocationStruct {}
impl INSObject for MTREcosystemInformationClusterEcosystemLocationStruct {}
impl PNSObject for MTREcosystemInformationClusterEcosystemLocationStruct {}
impl std::convert::TryFrom<NSObject> for MTREcosystemInformationClusterEcosystemLocationStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTREcosystemInformationClusterEcosystemLocationStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREcosystemInformationClusterEcosystemLocationStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTREcosystemInformationClusterEcosystemLocationStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTREcosystemInformationClusterEcosystemLocationStruct" ,)
        }
    }
}
impl IMTREcosystemInformationClusterEcosystemLocationStruct
    for MTREcosystemInformationClusterEcosystemLocationStruct
{
}
pub trait IMTREcosystemInformationClusterEcosystemLocationStruct: Sized + std::ops::Deref {
    unsafe fn uniqueLocationID(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, uniqueLocationID)
    }
    unsafe fn setUniqueLocationID_(&self, uniqueLocationID: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUniqueLocationID : uniqueLocationID)
    }
    unsafe fn locationDescriptor(&self) -> MTRDataTypeLocationDescriptorStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, locationDescriptor)
    }
    unsafe fn setLocationDescriptor_(&self, locationDescriptor: MTRDataTypeLocationDescriptorStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocationDescriptor : locationDescriptor)
    }
    unsafe fn locationDescriptorLastEdit(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, locationDescriptorLastEdit)
    }
    unsafe fn setLocationDescriptorLastEdit_(&self, locationDescriptorLastEdit: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocationDescriptorLastEdit : locationDescriptorLastEdit)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommissionerControlClusterCommissioningRequestResultEvent(pub id);
impl std::ops::Deref for MTRCommissionerControlClusterCommissioningRequestResultEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommissionerControlClusterCommissioningRequestResultEvent {}
impl MTRCommissionerControlClusterCommissioningRequestResultEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommissionerControlClusterCommissioningRequestResultEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCommissionerControlClusterCommissioningRequestResultEvent {}
impl INSObject for MTRCommissionerControlClusterCommissioningRequestResultEvent {}
impl PNSObject for MTRCommissionerControlClusterCommissioningRequestResultEvent {}
impl std::convert::TryFrom<NSObject>
    for MTRCommissionerControlClusterCommissioningRequestResultEvent
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommissionerControlClusterCommissioningRequestResultEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommissionerControlClusterCommissioningRequestResultEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommissionerControlClusterCommissioningRequestResultEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCommissionerControlClusterCommissioningRequestResultEvent" ,)
        }
    }
}
impl IMTRCommissionerControlClusterCommissioningRequestResultEvent
    for MTRCommissionerControlClusterCommissioningRequestResultEvent
{
}
pub trait IMTRCommissionerControlClusterCommissioningRequestResultEvent:
    Sized + std::ops::Deref
{
    unsafe fn requestID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requestID)
    }
    unsafe fn setRequestID_(&self, requestID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRequestID : requestID)
    }
    unsafe fn clientNodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, clientNodeID)
    }
    unsafe fn setClientNodeID_(&self, clientNodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setClientNodeID : clientNodeID)
    }
    unsafe fn statusCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusCode)
    }
    unsafe fn setStatusCode_(&self, statusCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusCode : statusCode)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct {}
impl MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct {}
impl INSObject for MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct {}
impl PNSObject for MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterDatastoreStatusEntryStruct
    for MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct
{
}
pub trait IMTRJointFabricDatastoreClusterDatastoreStatusEntryStruct:
    Sized + std::ops::Deref
{
    unsafe fn state(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, state)
    }
    unsafe fn setState_(&self, state: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setState : state)
    }
    unsafe fn updateTimestamp(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, updateTimestamp)
    }
    unsafe fn setUpdateTimestamp_(&self, updateTimestamp: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUpdateTimestamp : updateTimestamp)
    }
    unsafe fn failureCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, failureCode)
    }
    unsafe fn setFailureCode_(&self, failureCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFailureCode : failureCode)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterDatastoreNodeKeySetEntryStruct(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterDatastoreNodeKeySetEntryStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterDatastoreNodeKeySetEntryStruct {}
impl MTRJointFabricDatastoreClusterDatastoreNodeKeySetEntryStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreNodeKeySetEntryStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterDatastoreNodeKeySetEntryStruct {}
impl INSObject for MTRJointFabricDatastoreClusterDatastoreNodeKeySetEntryStruct {}
impl PNSObject for MTRJointFabricDatastoreClusterDatastoreNodeKeySetEntryStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRJointFabricDatastoreClusterDatastoreNodeKeySetEntryStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterDatastoreNodeKeySetEntryStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreNodeKeySetEntryStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterDatastoreNodeKeySetEntryStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterDatastoreNodeKeySetEntryStruct" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterDatastoreNodeKeySetEntryStruct
    for MTRJointFabricDatastoreClusterDatastoreNodeKeySetEntryStruct
{
}
pub trait IMTRJointFabricDatastoreClusterDatastoreNodeKeySetEntryStruct:
    Sized + std::ops::Deref
{
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn groupKeySetID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupKeySetID)
    }
    unsafe fn setGroupKeySetID_(&self, groupKeySetID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupKeySetID : groupKeySetID)
    }
    unsafe fn statusEntry(&self) -> MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusEntry)
    }
    unsafe fn setStatusEntry_(
        &self,
        statusEntry: MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusEntry : statusEntry)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterDatastoreNodeInformationEntryStruct(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterDatastoreNodeInformationEntryStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterDatastoreNodeInformationEntryStruct {}
impl MTRJointFabricDatastoreClusterDatastoreNodeInformationEntryStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreNodeInformationEntryStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterDatastoreNodeInformationEntryStruct {}
impl INSObject for MTRJointFabricDatastoreClusterDatastoreNodeInformationEntryStruct {}
impl PNSObject for MTRJointFabricDatastoreClusterDatastoreNodeInformationEntryStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRJointFabricDatastoreClusterDatastoreNodeInformationEntryStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterDatastoreNodeInformationEntryStruct, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreNodeInformationEntryStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterDatastoreNodeInformationEntryStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterDatastoreNodeInformationEntryStruct" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterDatastoreNodeInformationEntryStruct
    for MTRJointFabricDatastoreClusterDatastoreNodeInformationEntryStruct
{
}
pub trait IMTRJointFabricDatastoreClusterDatastoreNodeInformationEntryStruct:
    Sized + std::ops::Deref
{
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn friendlyName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, friendlyName)
    }
    unsafe fn setFriendlyName_(&self, friendlyName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFriendlyName : friendlyName)
    }
    unsafe fn commissioningStatusEntry(
        &self,
    ) -> MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, commissioningStatusEntry)
    }
    unsafe fn setCommissioningStatusEntry_(
        &self,
        commissioningStatusEntry: MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCommissioningStatusEntry : commissioningStatusEntry)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterDatastoreEndpointGroupIDEntryStruct(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterDatastoreEndpointGroupIDEntryStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterDatastoreEndpointGroupIDEntryStruct {}
impl MTRJointFabricDatastoreClusterDatastoreEndpointGroupIDEntryStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreEndpointGroupIDEntryStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterDatastoreEndpointGroupIDEntryStruct {}
impl INSObject for MTRJointFabricDatastoreClusterDatastoreEndpointGroupIDEntryStruct {}
impl PNSObject for MTRJointFabricDatastoreClusterDatastoreEndpointGroupIDEntryStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRJointFabricDatastoreClusterDatastoreEndpointGroupIDEntryStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterDatastoreEndpointGroupIDEntryStruct, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreEndpointGroupIDEntryStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterDatastoreEndpointGroupIDEntryStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterDatastoreEndpointGroupIDEntryStruct" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterDatastoreEndpointGroupIDEntryStruct
    for MTRJointFabricDatastoreClusterDatastoreEndpointGroupIDEntryStruct
{
}
pub trait IMTRJointFabricDatastoreClusterDatastoreEndpointGroupIDEntryStruct:
    Sized + std::ops::Deref
{
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn endpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpointID)
    }
    unsafe fn setEndpointID_(&self, endpointID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpointID : endpointID)
    }
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn statusEntry(&self) -> MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusEntry)
    }
    unsafe fn setStatusEntry_(
        &self,
        statusEntry: MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusEntry : statusEntry)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterDatastoreEndpointEntryStruct(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterDatastoreEndpointEntryStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterDatastoreEndpointEntryStruct {}
impl MTRJointFabricDatastoreClusterDatastoreEndpointEntryStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreEndpointEntryStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterDatastoreEndpointEntryStruct {}
impl INSObject for MTRJointFabricDatastoreClusterDatastoreEndpointEntryStruct {}
impl PNSObject for MTRJointFabricDatastoreClusterDatastoreEndpointEntryStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRJointFabricDatastoreClusterDatastoreEndpointEntryStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterDatastoreEndpointEntryStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreEndpointEntryStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterDatastoreEndpointEntryStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterDatastoreEndpointEntryStruct" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterDatastoreEndpointEntryStruct
    for MTRJointFabricDatastoreClusterDatastoreEndpointEntryStruct
{
}
pub trait IMTRJointFabricDatastoreClusterDatastoreEndpointEntryStruct:
    Sized + std::ops::Deref
{
    unsafe fn endpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpointID)
    }
    unsafe fn setEndpointID_(&self, endpointID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpointID : endpointID)
    }
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn friendlyName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, friendlyName)
    }
    unsafe fn setFriendlyName_(&self, friendlyName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFriendlyName : friendlyName)
    }
    unsafe fn statusEntry(&self) -> MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusEntry)
    }
    unsafe fn setStatusEntry_(
        &self,
        statusEntry: MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusEntry : statusEntry)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterDatastoreBindingTargetStruct(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterDatastoreBindingTargetStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterDatastoreBindingTargetStruct {}
impl MTRJointFabricDatastoreClusterDatastoreBindingTargetStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreBindingTargetStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterDatastoreBindingTargetStruct {}
impl INSObject for MTRJointFabricDatastoreClusterDatastoreBindingTargetStruct {}
impl PNSObject for MTRJointFabricDatastoreClusterDatastoreBindingTargetStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRJointFabricDatastoreClusterDatastoreBindingTargetStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterDatastoreBindingTargetStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreBindingTargetStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterDatastoreBindingTargetStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterDatastoreBindingTargetStruct" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterDatastoreBindingTargetStruct
    for MTRJointFabricDatastoreClusterDatastoreBindingTargetStruct
{
}
pub trait IMTRJointFabricDatastoreClusterDatastoreBindingTargetStruct:
    Sized + std::ops::Deref
{
    unsafe fn node(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, node)
    }
    unsafe fn setNode_(&self, node: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNode : node)
    }
    unsafe fn group(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, group)
    }
    unsafe fn setGroup_(&self, group: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroup : group)
    }
    unsafe fn endpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn setEndpoint_(&self, endpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoint : endpoint)
    }
    unsafe fn cluster(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cluster)
    }
    unsafe fn setCluster_(&self, cluster: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCluster : cluster)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterDatastoreEndpointBindingEntryStruct(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterDatastoreEndpointBindingEntryStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterDatastoreEndpointBindingEntryStruct {}
impl MTRJointFabricDatastoreClusterDatastoreEndpointBindingEntryStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreEndpointBindingEntryStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterDatastoreEndpointBindingEntryStruct {}
impl INSObject for MTRJointFabricDatastoreClusterDatastoreEndpointBindingEntryStruct {}
impl PNSObject for MTRJointFabricDatastoreClusterDatastoreEndpointBindingEntryStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRJointFabricDatastoreClusterDatastoreEndpointBindingEntryStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterDatastoreEndpointBindingEntryStruct, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreEndpointBindingEntryStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterDatastoreEndpointBindingEntryStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterDatastoreEndpointBindingEntryStruct" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterDatastoreEndpointBindingEntryStruct
    for MTRJointFabricDatastoreClusterDatastoreEndpointBindingEntryStruct
{
}
pub trait IMTRJointFabricDatastoreClusterDatastoreEndpointBindingEntryStruct:
    Sized + std::ops::Deref
{
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn endpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpointID)
    }
    unsafe fn setEndpointID_(&self, endpointID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpointID : endpointID)
    }
    unsafe fn listID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, listID)
    }
    unsafe fn setListID_(&self, listID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setListID : listID)
    }
    unsafe fn binding(&self) -> MTRJointFabricDatastoreClusterDatastoreBindingTargetStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, binding)
    }
    unsafe fn setBinding_(
        &self,
        binding: MTRJointFabricDatastoreClusterDatastoreBindingTargetStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBinding : binding)
    }
    unsafe fn statusEntry(&self) -> MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusEntry)
    }
    unsafe fn setStatusEntry_(
        &self,
        statusEntry: MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusEntry : statusEntry)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterDatastoreAccessControlTargetStruct(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterDatastoreAccessControlTargetStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterDatastoreAccessControlTargetStruct {}
impl MTRJointFabricDatastoreClusterDatastoreAccessControlTargetStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreAccessControlTargetStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterDatastoreAccessControlTargetStruct {}
impl INSObject for MTRJointFabricDatastoreClusterDatastoreAccessControlTargetStruct {}
impl PNSObject for MTRJointFabricDatastoreClusterDatastoreAccessControlTargetStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRJointFabricDatastoreClusterDatastoreAccessControlTargetStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterDatastoreAccessControlTargetStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreAccessControlTargetStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterDatastoreAccessControlTargetStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterDatastoreAccessControlTargetStruct" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterDatastoreAccessControlTargetStruct
    for MTRJointFabricDatastoreClusterDatastoreAccessControlTargetStruct
{
}
pub trait IMTRJointFabricDatastoreClusterDatastoreAccessControlTargetStruct:
    Sized + std::ops::Deref
{
    unsafe fn cluster(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cluster)
    }
    unsafe fn setCluster_(&self, cluster: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCluster : cluster)
    }
    unsafe fn endpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn setEndpoint_(&self, endpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoint : endpoint)
    }
    unsafe fn deviceType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deviceType)
    }
    unsafe fn setDeviceType_(&self, deviceType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDeviceType : deviceType)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct {}
impl MTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct {}
impl INSObject for MTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct {}
impl PNSObject for MTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct
    for MTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct
{
}
pub trait IMTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct:
    Sized + std::ops::Deref
{
    unsafe fn privilege(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, privilege)
    }
    unsafe fn setPrivilege_(&self, privilege: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPrivilege : privilege)
    }
    unsafe fn authMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, authMode)
    }
    unsafe fn setAuthMode_(&self, authMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAuthMode : authMode)
    }
    unsafe fn subjects(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, subjects)
    }
    unsafe fn setSubjects_(&self, subjects: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSubjects : subjects)
    }
    unsafe fn targets(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, targets)
    }
    unsafe fn setTargets_(&self, targets: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTargets : targets)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterDatastoreACLEntryStruct(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterDatastoreACLEntryStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterDatastoreACLEntryStruct {}
impl MTRJointFabricDatastoreClusterDatastoreACLEntryStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreACLEntryStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterDatastoreACLEntryStruct {}
impl INSObject for MTRJointFabricDatastoreClusterDatastoreACLEntryStruct {}
impl PNSObject for MTRJointFabricDatastoreClusterDatastoreACLEntryStruct {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricDatastoreClusterDatastoreACLEntryStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterDatastoreACLEntryStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreACLEntryStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterDatastoreACLEntryStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterDatastoreACLEntryStruct" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterDatastoreACLEntryStruct
    for MTRJointFabricDatastoreClusterDatastoreACLEntryStruct
{
}
pub trait IMTRJointFabricDatastoreClusterDatastoreACLEntryStruct: Sized + std::ops::Deref {
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn listID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, listID)
    }
    unsafe fn setListID_(&self, listID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setListID : listID)
    }
    unsafe fn aclEntry(&self) -> MTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, aclEntry)
    }
    unsafe fn setAclEntry_(
        &self,
        aclEntry: MTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAclEntry : aclEntry)
    }
    unsafe fn statusEntry(&self) -> MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusEntry)
    }
    unsafe fn setStatusEntry_(
        &self,
        statusEntry: MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusEntry : statusEntry)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterDatastoreAdministratorInformationEntryStruct(pub id);
impl std::ops::Deref
    for MTRJointFabricDatastoreClusterDatastoreAdministratorInformationEntryStruct
{
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message
    for MTRJointFabricDatastoreClusterDatastoreAdministratorInformationEntryStruct
{
}
impl MTRJointFabricDatastoreClusterDatastoreAdministratorInformationEntryStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreAdministratorInformationEntryStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterDatastoreAdministratorInformationEntryStruct {}
impl INSObject for MTRJointFabricDatastoreClusterDatastoreAdministratorInformationEntryStruct {}
impl PNSObject for MTRJointFabricDatastoreClusterDatastoreAdministratorInformationEntryStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRJointFabricDatastoreClusterDatastoreAdministratorInformationEntryStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<
        MTRJointFabricDatastoreClusterDatastoreAdministratorInformationEntryStruct,
        Self::Error,
    > {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreAdministratorInformationEntryStruct").unwrap())
        };
        if is_kind_of {
            Ok(
                MTRJointFabricDatastoreClusterDatastoreAdministratorInformationEntryStruct(
                    parent.0,
                ),
            )
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterDatastoreAdministratorInformationEntryStruct" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterDatastoreAdministratorInformationEntryStruct
    for MTRJointFabricDatastoreClusterDatastoreAdministratorInformationEntryStruct
{
}
pub trait IMTRJointFabricDatastoreClusterDatastoreAdministratorInformationEntryStruct:
    Sized + std::ops::Deref
{
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn friendlyName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, friendlyName)
    }
    unsafe fn setFriendlyName_(&self, friendlyName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFriendlyName : friendlyName)
    }
    unsafe fn vendorID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vendorID)
    }
    unsafe fn setVendorID_(&self, vendorID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVendorID : vendorID)
    }
    unsafe fn icac(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, icac)
    }
    unsafe fn setIcac_(&self, icac: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIcac : icac)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterDatastoreGroupInformationEntryStruct(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterDatastoreGroupInformationEntryStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterDatastoreGroupInformationEntryStruct {}
impl MTRJointFabricDatastoreClusterDatastoreGroupInformationEntryStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreGroupInformationEntryStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterDatastoreGroupInformationEntryStruct {}
impl INSObject for MTRJointFabricDatastoreClusterDatastoreGroupInformationEntryStruct {}
impl PNSObject for MTRJointFabricDatastoreClusterDatastoreGroupInformationEntryStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRJointFabricDatastoreClusterDatastoreGroupInformationEntryStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterDatastoreGroupInformationEntryStruct, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreGroupInformationEntryStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterDatastoreGroupInformationEntryStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterDatastoreGroupInformationEntryStruct" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterDatastoreGroupInformationEntryStruct
    for MTRJointFabricDatastoreClusterDatastoreGroupInformationEntryStruct
{
}
pub trait IMTRJointFabricDatastoreClusterDatastoreGroupInformationEntryStruct:
    Sized + std::ops::Deref
{
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn friendlyName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, friendlyName)
    }
    unsafe fn setFriendlyName_(&self, friendlyName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFriendlyName : friendlyName)
    }
    unsafe fn groupKeySetID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupKeySetID)
    }
    unsafe fn setGroupKeySetID_(&self, groupKeySetID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupKeySetID : groupKeySetID)
    }
    unsafe fn groupCAT(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupCAT)
    }
    unsafe fn setGroupCAT_(&self, groupCAT: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupCAT : groupCAT)
    }
    unsafe fn groupCATVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupCATVersion)
    }
    unsafe fn setGroupCATVersion_(&self, groupCATVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupCATVersion : groupCATVersion)
    }
    unsafe fn groupPermission(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupPermission)
    }
    unsafe fn setGroupPermission_(&self, groupPermission: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupPermission : groupPermission)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct {}
impl MTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct {}
impl INSObject for MTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct {}
impl PNSObject for MTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct
    for MTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct
{
}
pub trait IMTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct:
    Sized + std::ops::Deref
{
    unsafe fn groupKeySetID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupKeySetID)
    }
    unsafe fn setGroupKeySetID_(&self, groupKeySetID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupKeySetID : groupKeySetID)
    }
    unsafe fn groupKeySecurityPolicy(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupKeySecurityPolicy)
    }
    unsafe fn setGroupKeySecurityPolicy_(&self, groupKeySecurityPolicy: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupKeySecurityPolicy : groupKeySecurityPolicy)
    }
    unsafe fn epochKey0(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, epochKey0)
    }
    unsafe fn setEpochKey0_(&self, epochKey0: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEpochKey0 : epochKey0)
    }
    unsafe fn epochStartTime0(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, epochStartTime0)
    }
    unsafe fn setEpochStartTime0_(&self, epochStartTime0: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEpochStartTime0 : epochStartTime0)
    }
    unsafe fn epochKey1(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, epochKey1)
    }
    unsafe fn setEpochKey1_(&self, epochKey1: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEpochKey1 : epochKey1)
    }
    unsafe fn epochStartTime1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, epochStartTime1)
    }
    unsafe fn setEpochStartTime1_(&self, epochStartTime1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEpochStartTime1 : epochStartTime1)
    }
    unsafe fn epochKey2(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, epochKey2)
    }
    unsafe fn setEpochKey2_(&self, epochKey2: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEpochKey2 : epochKey2)
    }
    unsafe fn epochStartTime2(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, epochStartTime2)
    }
    unsafe fn setEpochStartTime2_(&self, epochStartTime2: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEpochStartTime2 : epochStartTime2)
    }
    unsafe fn groupKeyMulticastPolicy(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupKeyMulticastPolicy)
    }
    unsafe fn setGroupKeyMulticastPolicy_(&self, groupKeyMulticastPolicy: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupKeyMulticastPolicy : groupKeyMulticastPolicy)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSCertificateManagementClusterTLSCertStruct(pub id);
impl std::ops::Deref for MTRTLSCertificateManagementClusterTLSCertStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTLSCertificateManagementClusterTLSCertStruct {}
impl MTRTLSCertificateManagementClusterTLSCertStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterTLSCertStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSCertificateManagementClusterTLSCertStruct {}
impl INSObject for MTRTLSCertificateManagementClusterTLSCertStruct {}
impl PNSObject for MTRTLSCertificateManagementClusterTLSCertStruct {}
impl std::convert::TryFrom<NSObject> for MTRTLSCertificateManagementClusterTLSCertStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSCertificateManagementClusterTLSCertStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterTLSCertStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSCertificateManagementClusterTLSCertStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSCertificateManagementClusterTLSCertStruct" ,)
        }
    }
}
impl IMTRTLSCertificateManagementClusterTLSCertStruct
    for MTRTLSCertificateManagementClusterTLSCertStruct
{
}
pub trait IMTRTLSCertificateManagementClusterTLSCertStruct: Sized + std::ops::Deref {
    unsafe fn caid(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, caid)
    }
    unsafe fn setCaid_(&self, caid: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCaid : caid)
    }
    unsafe fn certificate(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, certificate)
    }
    unsafe fn setCertificate_(&self, certificate: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCertificate : certificate)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSCertificateManagementClusterTLSClientCertificateDetailStruct(pub id);
impl std::ops::Deref for MTRTLSCertificateManagementClusterTLSClientCertificateDetailStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTLSCertificateManagementClusterTLSClientCertificateDetailStruct {}
impl MTRTLSCertificateManagementClusterTLSClientCertificateDetailStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterTLSClientCertificateDetailStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSCertificateManagementClusterTLSClientCertificateDetailStruct {}
impl INSObject for MTRTLSCertificateManagementClusterTLSClientCertificateDetailStruct {}
impl PNSObject for MTRTLSCertificateManagementClusterTLSClientCertificateDetailStruct {}
impl std::convert::TryFrom<NSObject>
    for MTRTLSCertificateManagementClusterTLSClientCertificateDetailStruct
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSCertificateManagementClusterTLSClientCertificateDetailStruct, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterTLSClientCertificateDetailStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSCertificateManagementClusterTLSClientCertificateDetailStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSCertificateManagementClusterTLSClientCertificateDetailStruct" ,)
        }
    }
}
impl IMTRTLSCertificateManagementClusterTLSClientCertificateDetailStruct
    for MTRTLSCertificateManagementClusterTLSClientCertificateDetailStruct
{
}
pub trait IMTRTLSCertificateManagementClusterTLSClientCertificateDetailStruct:
    Sized + std::ops::Deref
{
    unsafe fn ccdid(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ccdid)
    }
    unsafe fn setCcdid_(&self, ccdid: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCcdid : ccdid)
    }
    unsafe fn clientCertificate(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, clientCertificate)
    }
    unsafe fn setClientCertificate_(&self, clientCertificate: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setClientCertificate : clientCertificate)
    }
    unsafe fn intermediateCertificates(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, intermediateCertificates)
    }
    unsafe fn setIntermediateCertificates_(&self, intermediateCertificates: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIntermediateCertificates : intermediateCertificates)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSClientManagementClusterTLSEndpointStruct(pub id);
impl std::ops::Deref for MTRTLSClientManagementClusterTLSEndpointStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTLSClientManagementClusterTLSEndpointStruct {}
impl MTRTLSClientManagementClusterTLSEndpointStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSClientManagementClusterTLSEndpointStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSClientManagementClusterTLSEndpointStruct {}
impl INSObject for MTRTLSClientManagementClusterTLSEndpointStruct {}
impl PNSObject for MTRTLSClientManagementClusterTLSEndpointStruct {}
impl std::convert::TryFrom<NSObject> for MTRTLSClientManagementClusterTLSEndpointStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSClientManagementClusterTLSEndpointStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSClientManagementClusterTLSEndpointStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSClientManagementClusterTLSEndpointStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSClientManagementClusterTLSEndpointStruct" ,)
        }
    }
}
impl IMTRTLSClientManagementClusterTLSEndpointStruct
    for MTRTLSClientManagementClusterTLSEndpointStruct
{
}
pub trait IMTRTLSClientManagementClusterTLSEndpointStruct: Sized + std::ops::Deref {
    unsafe fn endpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpointID)
    }
    unsafe fn setEndpointID_(&self, endpointID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpointID : endpointID)
    }
    unsafe fn hostname(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hostname)
    }
    unsafe fn setHostname_(&self, hostname: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHostname : hostname)
    }
    unsafe fn port(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, port)
    }
    unsafe fn setPort_(&self, port: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPort : port)
    }
    unsafe fn caid(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, caid)
    }
    unsafe fn setCaid_(&self, caid: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCaid : caid)
    }
    unsafe fn ccdid(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ccdid)
    }
    unsafe fn setCcdid_(&self, ccdid: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCcdid : ccdid)
    }
    unsafe fn referenceCount(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, referenceCount)
    }
    unsafe fn setReferenceCount_(&self, referenceCount: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReferenceCount : referenceCount)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityMeteringClusterMeteredQuantityStruct(pub id);
impl std::ops::Deref for MTRCommodityMeteringClusterMeteredQuantityStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityMeteringClusterMeteredQuantityStruct {}
impl MTRCommodityMeteringClusterMeteredQuantityStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityMeteringClusterMeteredQuantityStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCommodityMeteringClusterMeteredQuantityStruct {}
impl INSObject for MTRCommodityMeteringClusterMeteredQuantityStruct {}
impl PNSObject for MTRCommodityMeteringClusterMeteredQuantityStruct {}
impl std::convert::TryFrom<NSObject> for MTRCommodityMeteringClusterMeteredQuantityStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommodityMeteringClusterMeteredQuantityStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityMeteringClusterMeteredQuantityStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityMeteringClusterMeteredQuantityStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCommodityMeteringClusterMeteredQuantityStruct" ,)
        }
    }
}
impl IMTRCommodityMeteringClusterMeteredQuantityStruct
    for MTRCommodityMeteringClusterMeteredQuantityStruct
{
}
pub trait IMTRCommodityMeteringClusterMeteredQuantityStruct: Sized + std::ops::Deref {
    unsafe fn tariffComponentIDs(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tariffComponentIDs)
    }
    unsafe fn setTariffComponentIDs_(&self, tariffComponentIDs: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTariffComponentIDs : tariffComponentIDs)
    }
    unsafe fn quantity(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, quantity)
    }
    unsafe fn setQuantity_(&self, quantity: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setQuantity : quantity)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterSimpleStruct(pub id);
impl std::ops::Deref for MTRUnitTestingClusterSimpleStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterSimpleStruct {}
impl MTRUnitTestingClusterSimpleStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterSimpleStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRUnitTestingClusterSimpleStruct {}
impl INSObject for MTRUnitTestingClusterSimpleStruct {}
impl PNSObject for MTRUnitTestingClusterSimpleStruct {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterSimpleStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRUnitTestingClusterSimpleStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterSimpleStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterSimpleStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRUnitTestingClusterSimpleStruct")
        }
    }
}
impl IMTRUnitTestingClusterSimpleStruct for MTRUnitTestingClusterSimpleStruct {}
pub trait IMTRUnitTestingClusterSimpleStruct: Sized + std::ops::Deref {
    unsafe fn a(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, a)
    }
    unsafe fn setA_(&self, a: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setA : a)
    }
    unsafe fn b(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, b)
    }
    unsafe fn setB_(&self, b: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setB : b)
    }
    unsafe fn c(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, c)
    }
    unsafe fn setC_(&self, c: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setC : c)
    }
    unsafe fn d(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, d)
    }
    unsafe fn setD_(&self, d: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setD : d)
    }
    unsafe fn e(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, e)
    }
    unsafe fn setE_(&self, e: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setE : e)
    }
    unsafe fn f(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, f)
    }
    unsafe fn setF_(&self, f: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setF : f)
    }
    unsafe fn g(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, g)
    }
    unsafe fn setG_(&self, g: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setG : g)
    }
    unsafe fn h(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, h)
    }
    unsafe fn setH_(&self, h: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setH : h)
    }
    unsafe fn i(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, i)
    }
    unsafe fn setI_(&self, i: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setI : i)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterSimpleStruct(pub id);
impl std::ops::Deref for MTRTestClusterClusterSimpleStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterSimpleStruct {}
impl MTRTestClusterClusterSimpleStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterSimpleStruct").unwrap(), alloc) })
    }
}
impl IMTRUnitTestingClusterSimpleStruct for MTRTestClusterClusterSimpleStruct {}
impl PNSCopying for MTRTestClusterClusterSimpleStruct {}
impl From<MTRTestClusterClusterSimpleStruct> for MTRUnitTestingClusterSimpleStruct {
    fn from(child: MTRTestClusterClusterSimpleStruct) -> MTRUnitTestingClusterSimpleStruct {
        MTRUnitTestingClusterSimpleStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterSimpleStruct>
    for MTRTestClusterClusterSimpleStruct
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterSimpleStruct,
    ) -> Result<MTRTestClusterClusterSimpleStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterSimpleStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterSimpleStruct(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterSimpleStruct cannot be downcasted to MTRTestClusterClusterSimpleStruct" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterSimpleStruct {}
impl PNSObject for MTRTestClusterClusterSimpleStruct {}
impl IMTRTestClusterClusterSimpleStruct for MTRTestClusterClusterSimpleStruct {}
pub trait IMTRTestClusterClusterSimpleStruct: Sized + std::ops::Deref {
    unsafe fn a(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, a)
    }
    unsafe fn setA_(&self, a: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setA : a)
    }
    unsafe fn b(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, b)
    }
    unsafe fn setB_(&self, b: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setB : b)
    }
    unsafe fn c(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, c)
    }
    unsafe fn setC_(&self, c: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setC : c)
    }
    unsafe fn d(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, d)
    }
    unsafe fn setD_(&self, d: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setD : d)
    }
    unsafe fn e(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, e)
    }
    unsafe fn setE_(&self, e: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setE : e)
    }
    unsafe fn f(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, f)
    }
    unsafe fn setF_(&self, f: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setF : f)
    }
    unsafe fn g(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, g)
    }
    unsafe fn setG_(&self, g: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setG : g)
    }
    unsafe fn h(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, h)
    }
    unsafe fn setH_(&self, h: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setH : h)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestFabricScoped(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestFabricScoped {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestFabricScoped {}
impl MTRUnitTestingClusterTestFabricScoped {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestFabricScoped").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestFabricScoped {}
impl INSObject for MTRUnitTestingClusterTestFabricScoped {}
impl PNSObject for MTRUnitTestingClusterTestFabricScoped {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestFabricScoped {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRUnitTestingClusterTestFabricScoped, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestFabricScoped").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestFabricScoped(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRUnitTestingClusterTestFabricScoped")
        }
    }
}
impl IMTRUnitTestingClusterTestFabricScoped for MTRUnitTestingClusterTestFabricScoped {}
pub trait IMTRUnitTestingClusterTestFabricScoped: Sized + std::ops::Deref {
    unsafe fn fabricSensitiveInt8u(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricSensitiveInt8u)
    }
    unsafe fn setFabricSensitiveInt8u_(&self, fabricSensitiveInt8u: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricSensitiveInt8u : fabricSensitiveInt8u)
    }
    unsafe fn optionalFabricSensitiveInt8u(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalFabricSensitiveInt8u)
    }
    unsafe fn setOptionalFabricSensitiveInt8u_(&self, optionalFabricSensitiveInt8u: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalFabricSensitiveInt8u : optionalFabricSensitiveInt8u)
    }
    unsafe fn nullableFabricSensitiveInt8u(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableFabricSensitiveInt8u)
    }
    unsafe fn setNullableFabricSensitiveInt8u_(&self, nullableFabricSensitiveInt8u: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableFabricSensitiveInt8u : nullableFabricSensitiveInt8u)
    }
    unsafe fn nullableOptionalFabricSensitiveInt8u(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalFabricSensitiveInt8u)
    }
    unsafe fn setNullableOptionalFabricSensitiveInt8u_(
        &self,
        nullableOptionalFabricSensitiveInt8u: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalFabricSensitiveInt8u : nullableOptionalFabricSensitiveInt8u)
    }
    unsafe fn fabricSensitiveCharString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricSensitiveCharString)
    }
    unsafe fn setFabricSensitiveCharString_(&self, fabricSensitiveCharString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricSensitiveCharString : fabricSensitiveCharString)
    }
    unsafe fn fabricSensitiveStruct(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricSensitiveStruct)
    }
    unsafe fn setFabricSensitiveStruct_(
        &self,
        fabricSensitiveStruct: MTRUnitTestingClusterSimpleStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricSensitiveStruct : fabricSensitiveStruct)
    }
    unsafe fn fabricSensitiveInt8uList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricSensitiveInt8uList)
    }
    unsafe fn setFabricSensitiveInt8uList_(&self, fabricSensitiveInt8uList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricSensitiveInt8uList : fabricSensitiveInt8uList)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestFabricScoped(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestFabricScoped {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestFabricScoped {}
impl MTRTestClusterClusterTestFabricScoped {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestFabricScoped").unwrap(), alloc) })
    }
}
impl IMTRUnitTestingClusterTestFabricScoped for MTRTestClusterClusterTestFabricScoped {}
impl PNSCopying for MTRTestClusterClusterTestFabricScoped {}
impl From<MTRTestClusterClusterTestFabricScoped> for MTRUnitTestingClusterTestFabricScoped {
    fn from(child: MTRTestClusterClusterTestFabricScoped) -> MTRUnitTestingClusterTestFabricScoped {
        MTRUnitTestingClusterTestFabricScoped(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestFabricScoped>
    for MTRTestClusterClusterTestFabricScoped
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestFabricScoped,
    ) -> Result<MTRTestClusterClusterTestFabricScoped, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestFabricScoped").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestFabricScoped(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterTestFabricScoped cannot be downcasted to MTRTestClusterClusterTestFabricScoped" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestFabricScoped {}
impl PNSObject for MTRTestClusterClusterTestFabricScoped {}
impl IMTRTestClusterClusterTestFabricScoped for MTRTestClusterClusterTestFabricScoped {}
pub trait IMTRTestClusterClusterTestFabricScoped: Sized + std::ops::Deref {
    unsafe fn fabricSensitiveInt8u(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricSensitiveInt8u)
    }
    unsafe fn setFabricSensitiveInt8u_(&self, fabricSensitiveInt8u: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricSensitiveInt8u : fabricSensitiveInt8u)
    }
    unsafe fn optionalFabricSensitiveInt8u(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalFabricSensitiveInt8u)
    }
    unsafe fn setOptionalFabricSensitiveInt8u_(&self, optionalFabricSensitiveInt8u: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalFabricSensitiveInt8u : optionalFabricSensitiveInt8u)
    }
    unsafe fn nullableFabricSensitiveInt8u(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableFabricSensitiveInt8u)
    }
    unsafe fn setNullableFabricSensitiveInt8u_(&self, nullableFabricSensitiveInt8u: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableFabricSensitiveInt8u : nullableFabricSensitiveInt8u)
    }
    unsafe fn nullableOptionalFabricSensitiveInt8u(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalFabricSensitiveInt8u)
    }
    unsafe fn setNullableOptionalFabricSensitiveInt8u_(
        &self,
        nullableOptionalFabricSensitiveInt8u: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalFabricSensitiveInt8u : nullableOptionalFabricSensitiveInt8u)
    }
    unsafe fn fabricSensitiveCharString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricSensitiveCharString)
    }
    unsafe fn setFabricSensitiveCharString_(&self, fabricSensitiveCharString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricSensitiveCharString : fabricSensitiveCharString)
    }
    unsafe fn fabricSensitiveStruct(&self) -> MTRTestClusterClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricSensitiveStruct)
    }
    unsafe fn setFabricSensitiveStruct_(
        &self,
        fabricSensitiveStruct: MTRTestClusterClusterSimpleStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricSensitiveStruct : fabricSensitiveStruct)
    }
    unsafe fn fabricSensitiveInt8uList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricSensitiveInt8uList)
    }
    unsafe fn setFabricSensitiveInt8uList_(&self, fabricSensitiveInt8uList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricSensitiveInt8uList : fabricSensitiveInt8uList)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterNullablesAndOptionalsStruct(pub id);
impl std::ops::Deref for MTRUnitTestingClusterNullablesAndOptionalsStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterNullablesAndOptionalsStruct {}
impl MTRUnitTestingClusterNullablesAndOptionalsStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterNullablesAndOptionalsStruct").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterNullablesAndOptionalsStruct {}
impl INSObject for MTRUnitTestingClusterNullablesAndOptionalsStruct {}
impl PNSObject for MTRUnitTestingClusterNullablesAndOptionalsStruct {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterNullablesAndOptionalsStruct {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterNullablesAndOptionalsStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterNullablesAndOptionalsStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterNullablesAndOptionalsStruct(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterNullablesAndOptionalsStruct" ,)
        }
    }
}
impl IMTRUnitTestingClusterNullablesAndOptionalsStruct
    for MTRUnitTestingClusterNullablesAndOptionalsStruct
{
}
pub trait IMTRUnitTestingClusterNullablesAndOptionalsStruct: Sized + std::ops::Deref {
    unsafe fn nullableInt(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableInt)
    }
    unsafe fn setNullableInt_(&self, nullableInt: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableInt : nullableInt)
    }
    unsafe fn optionalInt(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalInt)
    }
    unsafe fn setOptionalInt_(&self, optionalInt: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalInt : optionalInt)
    }
    unsafe fn nullableOptionalInt(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalInt)
    }
    unsafe fn setNullableOptionalInt_(&self, nullableOptionalInt: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalInt : nullableOptionalInt)
    }
    unsafe fn nullableString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableString)
    }
    unsafe fn setNullableString_(&self, nullableString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableString : nullableString)
    }
    unsafe fn optionalString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalString)
    }
    unsafe fn setOptionalString_(&self, optionalString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalString : optionalString)
    }
    unsafe fn nullableOptionalString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalString)
    }
    unsafe fn setNullableOptionalString_(&self, nullableOptionalString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalString : nullableOptionalString)
    }
    unsafe fn nullableStruct(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableStruct)
    }
    unsafe fn setNullableStruct_(&self, nullableStruct: MTRUnitTestingClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableStruct : nullableStruct)
    }
    unsafe fn optionalStruct(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalStruct)
    }
    unsafe fn setOptionalStruct_(&self, optionalStruct: MTRUnitTestingClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalStruct : optionalStruct)
    }
    unsafe fn nullableOptionalStruct(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalStruct)
    }
    unsafe fn setNullableOptionalStruct_(
        &self,
        nullableOptionalStruct: MTRUnitTestingClusterSimpleStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalStruct : nullableOptionalStruct)
    }
    unsafe fn nullableList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableList)
    }
    unsafe fn setNullableList_(&self, nullableList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableList : nullableList)
    }
    unsafe fn optionalList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalList)
    }
    unsafe fn setOptionalList_(&self, optionalList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalList : optionalList)
    }
    unsafe fn nullableOptionalList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalList)
    }
    unsafe fn setNullableOptionalList_(&self, nullableOptionalList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalList : nullableOptionalList)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterNullablesAndOptionalsStruct(pub id);
impl std::ops::Deref for MTRTestClusterClusterNullablesAndOptionalsStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterNullablesAndOptionalsStruct {}
impl MTRTestClusterClusterNullablesAndOptionalsStruct {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterNullablesAndOptionalsStruct").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterNullablesAndOptionalsStruct
    for MTRTestClusterClusterNullablesAndOptionalsStruct
{
}
impl PNSCopying for MTRTestClusterClusterNullablesAndOptionalsStruct {}
impl From<MTRTestClusterClusterNullablesAndOptionalsStruct>
    for MTRUnitTestingClusterNullablesAndOptionalsStruct
{
    fn from(
        child: MTRTestClusterClusterNullablesAndOptionalsStruct,
    ) -> MTRUnitTestingClusterNullablesAndOptionalsStruct {
        MTRUnitTestingClusterNullablesAndOptionalsStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterNullablesAndOptionalsStruct>
    for MTRTestClusterClusterNullablesAndOptionalsStruct
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterNullablesAndOptionalsStruct,
    ) -> Result<MTRTestClusterClusterNullablesAndOptionalsStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterNullablesAndOptionalsStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterNullablesAndOptionalsStruct(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterNullablesAndOptionalsStruct cannot be downcasted to MTRTestClusterClusterNullablesAndOptionalsStruct" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterNullablesAndOptionalsStruct {}
impl PNSObject for MTRTestClusterClusterNullablesAndOptionalsStruct {}
impl IMTRTestClusterClusterNullablesAndOptionalsStruct
    for MTRTestClusterClusterNullablesAndOptionalsStruct
{
}
pub trait IMTRTestClusterClusterNullablesAndOptionalsStruct: Sized + std::ops::Deref {
    unsafe fn nullableInt(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableInt)
    }
    unsafe fn setNullableInt_(&self, nullableInt: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableInt : nullableInt)
    }
    unsafe fn optionalInt(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalInt)
    }
    unsafe fn setOptionalInt_(&self, optionalInt: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalInt : optionalInt)
    }
    unsafe fn nullableOptionalInt(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalInt)
    }
    unsafe fn setNullableOptionalInt_(&self, nullableOptionalInt: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalInt : nullableOptionalInt)
    }
    unsafe fn nullableString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableString)
    }
    unsafe fn setNullableString_(&self, nullableString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableString : nullableString)
    }
    unsafe fn optionalString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalString)
    }
    unsafe fn setOptionalString_(&self, optionalString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalString : optionalString)
    }
    unsafe fn nullableOptionalString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalString)
    }
    unsafe fn setNullableOptionalString_(&self, nullableOptionalString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalString : nullableOptionalString)
    }
    unsafe fn nullableStruct(&self) -> MTRTestClusterClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableStruct)
    }
    unsafe fn setNullableStruct_(&self, nullableStruct: MTRTestClusterClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableStruct : nullableStruct)
    }
    unsafe fn optionalStruct(&self) -> MTRTestClusterClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalStruct)
    }
    unsafe fn setOptionalStruct_(&self, optionalStruct: MTRTestClusterClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalStruct : optionalStruct)
    }
    unsafe fn nullableOptionalStruct(&self) -> MTRTestClusterClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalStruct)
    }
    unsafe fn setNullableOptionalStruct_(
        &self,
        nullableOptionalStruct: MTRTestClusterClusterSimpleStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalStruct : nullableOptionalStruct)
    }
    unsafe fn nullableList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableList)
    }
    unsafe fn setNullableList_(&self, nullableList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableList : nullableList)
    }
    unsafe fn optionalList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalList)
    }
    unsafe fn setOptionalList_(&self, optionalList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalList : optionalList)
    }
    unsafe fn nullableOptionalList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalList)
    }
    unsafe fn setNullableOptionalList_(&self, nullableOptionalList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalList : nullableOptionalList)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterNestedStruct(pub id);
impl std::ops::Deref for MTRUnitTestingClusterNestedStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterNestedStruct {}
impl MTRUnitTestingClusterNestedStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterNestedStruct").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRUnitTestingClusterNestedStruct {}
impl INSObject for MTRUnitTestingClusterNestedStruct {}
impl PNSObject for MTRUnitTestingClusterNestedStruct {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterNestedStruct {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRUnitTestingClusterNestedStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterNestedStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterNestedStruct(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRUnitTestingClusterNestedStruct")
        }
    }
}
impl IMTRUnitTestingClusterNestedStruct for MTRUnitTestingClusterNestedStruct {}
pub trait IMTRUnitTestingClusterNestedStruct: Sized + std::ops::Deref {
    unsafe fn a(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, a)
    }
    unsafe fn setA_(&self, a: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setA : a)
    }
    unsafe fn b(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, b)
    }
    unsafe fn setB_(&self, b: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setB : b)
    }
    unsafe fn c(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, c)
    }
    unsafe fn setC_(&self, c: MTRUnitTestingClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setC : c)
    }
    unsafe fn d(&self) -> MTRDataTypeTestGlobalStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, d)
    }
    unsafe fn setD_(&self, d: MTRDataTypeTestGlobalStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setD : d)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterNestedStruct(pub id);
impl std::ops::Deref for MTRTestClusterClusterNestedStruct {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterNestedStruct {}
impl MTRTestClusterClusterNestedStruct {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterNestedStruct").unwrap(), alloc) })
    }
}
impl IMTRUnitTestingClusterNestedStruct for MTRTestClusterClusterNestedStruct {}
impl PNSCopying for MTRTestClusterClusterNestedStruct {}
impl From<MTRTestClusterClusterNestedStruct> for MTRUnitTestingClusterNestedStruct {
    fn from(child: MTRTestClusterClusterNestedStruct) -> MTRUnitTestingClusterNestedStruct {
        MTRUnitTestingClusterNestedStruct(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterNestedStruct>
    for MTRTestClusterClusterNestedStruct
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterNestedStruct,
    ) -> Result<MTRTestClusterClusterNestedStruct, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterNestedStruct").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterNestedStruct(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterNestedStruct cannot be downcasted to MTRTestClusterClusterNestedStruct" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterNestedStruct {}
impl PNSObject for MTRTestClusterClusterNestedStruct {}
impl IMTRTestClusterClusterNestedStruct for MTRTestClusterClusterNestedStruct {}
pub trait IMTRTestClusterClusterNestedStruct: Sized + std::ops::Deref {
    unsafe fn a(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, a)
    }
    unsafe fn setA_(&self, a: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setA : a)
    }
    unsafe fn b(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, b)
    }
    unsafe fn setB_(&self, b: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setB : b)
    }
    unsafe fn c(&self) -> MTRTestClusterClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, c)
    }
    unsafe fn setC_(&self, c: MTRTestClusterClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setC : c)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterNestedStructList(pub id);
impl std::ops::Deref for MTRUnitTestingClusterNestedStructList {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterNestedStructList {}
impl MTRUnitTestingClusterNestedStructList {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterNestedStructList").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRUnitTestingClusterNestedStructList {}
impl INSObject for MTRUnitTestingClusterNestedStructList {}
impl PNSObject for MTRUnitTestingClusterNestedStructList {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterNestedStructList {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRUnitTestingClusterNestedStructList, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterNestedStructList").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterNestedStructList(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRUnitTestingClusterNestedStructList")
        }
    }
}
impl IMTRUnitTestingClusterNestedStructList for MTRUnitTestingClusterNestedStructList {}
pub trait IMTRUnitTestingClusterNestedStructList: Sized + std::ops::Deref {
    unsafe fn a(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, a)
    }
    unsafe fn setA_(&self, a: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setA : a)
    }
    unsafe fn b(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, b)
    }
    unsafe fn setB_(&self, b: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setB : b)
    }
    unsafe fn c(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, c)
    }
    unsafe fn setC_(&self, c: MTRUnitTestingClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setC : c)
    }
    unsafe fn d(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, d)
    }
    unsafe fn setD_(&self, d: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setD : d)
    }
    unsafe fn e(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, e)
    }
    unsafe fn setE_(&self, e: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setE : e)
    }
    unsafe fn f(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, f)
    }
    unsafe fn setF_(&self, f: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setF : f)
    }
    unsafe fn g(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, g)
    }
    unsafe fn setG_(&self, g: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setG : g)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterNestedStructList(pub id);
impl std::ops::Deref for MTRTestClusterClusterNestedStructList {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterNestedStructList {}
impl MTRTestClusterClusterNestedStructList {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterNestedStructList").unwrap(), alloc) })
    }
}
impl IMTRUnitTestingClusterNestedStructList for MTRTestClusterClusterNestedStructList {}
impl PNSCopying for MTRTestClusterClusterNestedStructList {}
impl From<MTRTestClusterClusterNestedStructList> for MTRUnitTestingClusterNestedStructList {
    fn from(child: MTRTestClusterClusterNestedStructList) -> MTRUnitTestingClusterNestedStructList {
        MTRUnitTestingClusterNestedStructList(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterNestedStructList>
    for MTRTestClusterClusterNestedStructList
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterNestedStructList,
    ) -> Result<MTRTestClusterClusterNestedStructList, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterNestedStructList").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterNestedStructList(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterNestedStructList cannot be downcasted to MTRTestClusterClusterNestedStructList" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterNestedStructList {}
impl PNSObject for MTRTestClusterClusterNestedStructList {}
impl IMTRTestClusterClusterNestedStructList for MTRTestClusterClusterNestedStructList {}
pub trait IMTRTestClusterClusterNestedStructList: Sized + std::ops::Deref {
    unsafe fn a(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, a)
    }
    unsafe fn setA_(&self, a: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setA : a)
    }
    unsafe fn b(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, b)
    }
    unsafe fn setB_(&self, b: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setB : b)
    }
    unsafe fn c(&self) -> MTRTestClusterClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, c)
    }
    unsafe fn setC_(&self, c: MTRTestClusterClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setC : c)
    }
    unsafe fn d(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, d)
    }
    unsafe fn setD_(&self, d: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setD : d)
    }
    unsafe fn e(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, e)
    }
    unsafe fn setE_(&self, e: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setE : e)
    }
    unsafe fn f(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, f)
    }
    unsafe fn setF_(&self, f: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setF : f)
    }
    unsafe fn g(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, g)
    }
    unsafe fn setG_(&self, g: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setG : g)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterDoubleNestedStructList(pub id);
impl std::ops::Deref for MTRUnitTestingClusterDoubleNestedStructList {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterDoubleNestedStructList {}
impl MTRUnitTestingClusterDoubleNestedStructList {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterDoubleNestedStructList").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRUnitTestingClusterDoubleNestedStructList {}
impl INSObject for MTRUnitTestingClusterDoubleNestedStructList {}
impl PNSObject for MTRUnitTestingClusterDoubleNestedStructList {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterDoubleNestedStructList {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterDoubleNestedStructList, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterDoubleNestedStructList").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterDoubleNestedStructList(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRUnitTestingClusterDoubleNestedStructList")
        }
    }
}
impl IMTRUnitTestingClusterDoubleNestedStructList for MTRUnitTestingClusterDoubleNestedStructList {}
pub trait IMTRUnitTestingClusterDoubleNestedStructList: Sized + std::ops::Deref {
    unsafe fn a(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, a)
    }
    unsafe fn setA_(&self, a: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setA : a)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterDoubleNestedStructList(pub id);
impl std::ops::Deref for MTRTestClusterClusterDoubleNestedStructList {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterDoubleNestedStructList {}
impl MTRTestClusterClusterDoubleNestedStructList {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterDoubleNestedStructList").unwrap(), alloc) })
    }
}
impl IMTRUnitTestingClusterDoubleNestedStructList for MTRTestClusterClusterDoubleNestedStructList {}
impl PNSCopying for MTRTestClusterClusterDoubleNestedStructList {}
impl From<MTRTestClusterClusterDoubleNestedStructList>
    for MTRUnitTestingClusterDoubleNestedStructList
{
    fn from(
        child: MTRTestClusterClusterDoubleNestedStructList,
    ) -> MTRUnitTestingClusterDoubleNestedStructList {
        MTRUnitTestingClusterDoubleNestedStructList(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterDoubleNestedStructList>
    for MTRTestClusterClusterDoubleNestedStructList
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterDoubleNestedStructList,
    ) -> Result<MTRTestClusterClusterDoubleNestedStructList, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterDoubleNestedStructList").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterDoubleNestedStructList(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterDoubleNestedStructList cannot be downcasted to MTRTestClusterClusterDoubleNestedStructList" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterDoubleNestedStructList {}
impl PNSObject for MTRTestClusterClusterDoubleNestedStructList {}
impl IMTRTestClusterClusterDoubleNestedStructList for MTRTestClusterClusterDoubleNestedStructList {}
pub trait IMTRTestClusterClusterDoubleNestedStructList: Sized + std::ops::Deref {
    unsafe fn a(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, a)
    }
    unsafe fn setA_(&self, a: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setA : a)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestListStructOctet(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestListStructOctet {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestListStructOctet {}
impl MTRUnitTestingClusterTestListStructOctet {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestListStructOctet").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestListStructOctet {}
impl INSObject for MTRUnitTestingClusterTestListStructOctet {}
impl PNSObject for MTRUnitTestingClusterTestListStructOctet {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestListStructOctet {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRUnitTestingClusterTestListStructOctet, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestListStructOctet").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestListStructOctet(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRUnitTestingClusterTestListStructOctet")
        }
    }
}
impl IMTRUnitTestingClusterTestListStructOctet for MTRUnitTestingClusterTestListStructOctet {}
pub trait IMTRUnitTestingClusterTestListStructOctet: Sized + std::ops::Deref {
    unsafe fn member1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, member1)
    }
    unsafe fn setMember1_(&self, member1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMember1 : member1)
    }
    unsafe fn member2(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, member2)
    }
    unsafe fn setMember2_(&self, member2: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMember2 : member2)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestListStructOctet(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestListStructOctet {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestListStructOctet {}
impl MTRTestClusterClusterTestListStructOctet {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestListStructOctet").unwrap(), alloc) })
    }
}
impl IMTRUnitTestingClusterTestListStructOctet for MTRTestClusterClusterTestListStructOctet {}
impl PNSCopying for MTRTestClusterClusterTestListStructOctet {}
impl From<MTRTestClusterClusterTestListStructOctet> for MTRUnitTestingClusterTestListStructOctet {
    fn from(
        child: MTRTestClusterClusterTestListStructOctet,
    ) -> MTRUnitTestingClusterTestListStructOctet {
        MTRUnitTestingClusterTestListStructOctet(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestListStructOctet>
    for MTRTestClusterClusterTestListStructOctet
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestListStructOctet,
    ) -> Result<MTRTestClusterClusterTestListStructOctet, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestListStructOctet").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestListStructOctet(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterTestListStructOctet cannot be downcasted to MTRTestClusterClusterTestListStructOctet" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestListStructOctet {}
impl PNSObject for MTRTestClusterClusterTestListStructOctet {}
impl IMTRTestClusterClusterTestListStructOctet for MTRTestClusterClusterTestListStructOctet {}
pub trait IMTRTestClusterClusterTestListStructOctet: Sized + std::ops::Deref {
    unsafe fn member1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, member1)
    }
    unsafe fn setMember1_(&self, member1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMember1 : member1)
    }
    unsafe fn member2(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, member2)
    }
    unsafe fn setMember2_(&self, member2: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMember2 : member2)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestEventEvent(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestEventEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestEventEvent {}
impl MTRUnitTestingClusterTestEventEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestEventEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestEventEvent {}
impl INSObject for MTRUnitTestingClusterTestEventEvent {}
impl PNSObject for MTRUnitTestingClusterTestEventEvent {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestEventEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRUnitTestingClusterTestEventEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestEventEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestEventEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRUnitTestingClusterTestEventEvent")
        }
    }
}
impl IMTRUnitTestingClusterTestEventEvent for MTRUnitTestingClusterTestEventEvent {}
pub trait IMTRUnitTestingClusterTestEventEvent: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn arg2(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg2)
    }
    unsafe fn setArg2_(&self, arg2: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg2 : arg2)
    }
    unsafe fn arg3(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg3)
    }
    unsafe fn setArg3_(&self, arg3: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg3 : arg3)
    }
    unsafe fn arg4(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg4)
    }
    unsafe fn setArg4_(&self, arg4: MTRUnitTestingClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg4 : arg4)
    }
    unsafe fn arg5(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg5)
    }
    unsafe fn setArg5_(&self, arg5: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg5 : arg5)
    }
    unsafe fn arg6(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg6)
    }
    unsafe fn setArg6_(&self, arg6: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg6 : arg6)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestEventEvent(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestEventEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestEventEvent {}
impl MTRTestClusterClusterTestEventEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestEventEvent").unwrap(), alloc) })
    }
}
impl IMTRUnitTestingClusterTestEventEvent for MTRTestClusterClusterTestEventEvent {}
impl PNSCopying for MTRTestClusterClusterTestEventEvent {}
impl From<MTRTestClusterClusterTestEventEvent> for MTRUnitTestingClusterTestEventEvent {
    fn from(child: MTRTestClusterClusterTestEventEvent) -> MTRUnitTestingClusterTestEventEvent {
        MTRUnitTestingClusterTestEventEvent(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestEventEvent>
    for MTRTestClusterClusterTestEventEvent
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestEventEvent,
    ) -> Result<MTRTestClusterClusterTestEventEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestEventEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestEventEvent(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterTestEventEvent cannot be downcasted to MTRTestClusterClusterTestEventEvent" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestEventEvent {}
impl PNSObject for MTRTestClusterClusterTestEventEvent {}
impl IMTRTestClusterClusterTestEventEvent for MTRTestClusterClusterTestEventEvent {}
pub trait IMTRTestClusterClusterTestEventEvent: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn arg2(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg2)
    }
    unsafe fn setArg2_(&self, arg2: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg2 : arg2)
    }
    unsafe fn arg3(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg3)
    }
    unsafe fn setArg3_(&self, arg3: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg3 : arg3)
    }
    unsafe fn arg4(&self) -> MTRTestClusterClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg4)
    }
    unsafe fn setArg4_(&self, arg4: MTRTestClusterClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg4 : arg4)
    }
    unsafe fn arg5(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg5)
    }
    unsafe fn setArg5_(&self, arg5: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg5 : arg5)
    }
    unsafe fn arg6(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg6)
    }
    unsafe fn setArg6_(&self, arg6: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg6 : arg6)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestFabricScopedEventEvent(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestFabricScopedEventEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestFabricScopedEventEvent {}
impl MTRUnitTestingClusterTestFabricScopedEventEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestFabricScopedEventEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestFabricScopedEventEvent {}
impl INSObject for MTRUnitTestingClusterTestFabricScopedEventEvent {}
impl PNSObject for MTRUnitTestingClusterTestFabricScopedEventEvent {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestFabricScopedEventEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestFabricScopedEventEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestFabricScopedEventEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestFabricScopedEventEvent(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestFabricScopedEventEvent" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestFabricScopedEventEvent
    for MTRUnitTestingClusterTestFabricScopedEventEvent
{
}
pub trait IMTRUnitTestingClusterTestFabricScopedEventEvent: Sized + std::ops::Deref {
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestFabricScopedEventEvent(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestFabricScopedEventEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestFabricScopedEventEvent {}
impl MTRTestClusterClusterTestFabricScopedEventEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestFabricScopedEventEvent").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestFabricScopedEventEvent
    for MTRTestClusterClusterTestFabricScopedEventEvent
{
}
impl PNSCopying for MTRTestClusterClusterTestFabricScopedEventEvent {}
impl From<MTRTestClusterClusterTestFabricScopedEventEvent>
    for MTRUnitTestingClusterTestFabricScopedEventEvent
{
    fn from(
        child: MTRTestClusterClusterTestFabricScopedEventEvent,
    ) -> MTRUnitTestingClusterTestFabricScopedEventEvent {
        MTRUnitTestingClusterTestFabricScopedEventEvent(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestFabricScopedEventEvent>
    for MTRTestClusterClusterTestFabricScopedEventEvent
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestFabricScopedEventEvent,
    ) -> Result<MTRTestClusterClusterTestFabricScopedEventEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestFabricScopedEventEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestFabricScopedEventEvent(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterTestFabricScopedEventEvent cannot be downcasted to MTRTestClusterClusterTestFabricScopedEventEvent" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestFabricScopedEventEvent {}
impl PNSObject for MTRTestClusterClusterTestFabricScopedEventEvent {}
impl IMTRTestClusterClusterTestFabricScopedEventEvent
    for MTRTestClusterClusterTestFabricScopedEventEvent
{
}
pub trait IMTRTestClusterClusterTestFabricScopedEventEvent: Sized + std::ops::Deref {
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestDifferentVendorMeiEventEvent(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestDifferentVendorMeiEventEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestDifferentVendorMeiEventEvent {}
impl MTRUnitTestingClusterTestDifferentVendorMeiEventEvent {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestDifferentVendorMeiEventEvent").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestDifferentVendorMeiEventEvent {}
impl INSObject for MTRUnitTestingClusterTestDifferentVendorMeiEventEvent {}
impl PNSObject for MTRUnitTestingClusterTestDifferentVendorMeiEventEvent {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestDifferentVendorMeiEventEvent {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestDifferentVendorMeiEventEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestDifferentVendorMeiEventEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestDifferentVendorMeiEventEvent(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestDifferentVendorMeiEventEvent" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestDifferentVendorMeiEventEvent
    for MTRUnitTestingClusterTestDifferentVendorMeiEventEvent
{
}
pub trait IMTRUnitTestingClusterTestDifferentVendorMeiEventEvent: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSampleMEIClusterPingCountEventEvent(pub id);
impl std::ops::Deref for MTRSampleMEIClusterPingCountEventEvent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSampleMEIClusterPingCountEventEvent {}
impl MTRSampleMEIClusterPingCountEventEvent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSampleMEIClusterPingCountEventEvent").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSampleMEIClusterPingCountEventEvent {}
impl INSObject for MTRSampleMEIClusterPingCountEventEvent {}
impl PNSObject for MTRSampleMEIClusterPingCountEventEvent {}
impl std::convert::TryFrom<NSObject> for MTRSampleMEIClusterPingCountEventEvent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRSampleMEIClusterPingCountEventEvent, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSampleMEIClusterPingCountEventEvent").unwrap())
        };
        if is_kind_of {
            Ok(MTRSampleMEIClusterPingCountEventEvent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRSampleMEIClusterPingCountEventEvent")
        }
    }
}
impl IMTRSampleMEIClusterPingCountEventEvent for MTRSampleMEIClusterPingCountEventEvent {}
pub trait IMTRSampleMEIClusterPingCountEventEvent: Sized + std::ops::Deref {
    unsafe fn getCount(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getCount)
    }
    unsafe fn setCount_(&self, count: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCount : count)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRIdentifyClusterIdentifyParams(pub id);
impl std::ops::Deref for MTRIdentifyClusterIdentifyParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRIdentifyClusterIdentifyParams {}
impl MTRIdentifyClusterIdentifyParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRIdentifyClusterIdentifyParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRIdentifyClusterIdentifyParams {}
impl INSObject for MTRIdentifyClusterIdentifyParams {}
impl PNSObject for MTRIdentifyClusterIdentifyParams {}
impl std::convert::TryFrom<NSObject> for MTRIdentifyClusterIdentifyParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRIdentifyClusterIdentifyParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRIdentifyClusterIdentifyParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRIdentifyClusterIdentifyParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRIdentifyClusterIdentifyParams")
        }
    }
}
impl IMTRIdentifyClusterIdentifyParams for MTRIdentifyClusterIdentifyParams {}
pub trait IMTRIdentifyClusterIdentifyParams: Sized + std::ops::Deref {
    unsafe fn identifyTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, identifyTime)
    }
    unsafe fn setIdentifyTime_(&self, identifyTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIdentifyTime : identifyTime)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRIdentifyClusterTriggerEffectParams(pub id);
impl std::ops::Deref for MTRIdentifyClusterTriggerEffectParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRIdentifyClusterTriggerEffectParams {}
impl MTRIdentifyClusterTriggerEffectParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRIdentifyClusterTriggerEffectParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRIdentifyClusterTriggerEffectParams {}
impl INSObject for MTRIdentifyClusterTriggerEffectParams {}
impl PNSObject for MTRIdentifyClusterTriggerEffectParams {}
impl std::convert::TryFrom<NSObject> for MTRIdentifyClusterTriggerEffectParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRIdentifyClusterTriggerEffectParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRIdentifyClusterTriggerEffectParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRIdentifyClusterTriggerEffectParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRIdentifyClusterTriggerEffectParams")
        }
    }
}
impl IMTRIdentifyClusterTriggerEffectParams for MTRIdentifyClusterTriggerEffectParams {}
pub trait IMTRIdentifyClusterTriggerEffectParams: Sized + std::ops::Deref {
    unsafe fn effectIdentifier(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, effectIdentifier)
    }
    unsafe fn setEffectIdentifier_(&self, effectIdentifier: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEffectIdentifier : effectIdentifier)
    }
    unsafe fn effectVariant(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, effectVariant)
    }
    unsafe fn setEffectVariant_(&self, effectVariant: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEffectVariant : effectVariant)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupsClusterAddGroupParams(pub id);
impl std::ops::Deref for MTRGroupsClusterAddGroupParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupsClusterAddGroupParams {}
impl MTRGroupsClusterAddGroupParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupsClusterAddGroupParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRGroupsClusterAddGroupParams {}
impl INSObject for MTRGroupsClusterAddGroupParams {}
impl PNSObject for MTRGroupsClusterAddGroupParams {}
impl std::convert::TryFrom<NSObject> for MTRGroupsClusterAddGroupParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRGroupsClusterAddGroupParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupsClusterAddGroupParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupsClusterAddGroupParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRGroupsClusterAddGroupParams")
        }
    }
}
impl IMTRGroupsClusterAddGroupParams for MTRGroupsClusterAddGroupParams {}
pub trait IMTRGroupsClusterAddGroupParams: Sized + std::ops::Deref {
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn groupName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupName)
    }
    unsafe fn setGroupName_(&self, groupName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupName : groupName)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
impl MTRGroupsClusterAddGroupParams_Deprecated for MTRGroupsClusterAddGroupParams {}
pub trait MTRGroupsClusterAddGroupParams_Deprecated: Sized + std::ops::Deref {
    unsafe fn groupId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupId)
    }
    unsafe fn setGroupId_(&self, groupId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupId : groupId)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupsClusterAddGroupResponseParams(pub id);
impl std::ops::Deref for MTRGroupsClusterAddGroupResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupsClusterAddGroupResponseParams {}
impl MTRGroupsClusterAddGroupResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupsClusterAddGroupResponseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRGroupsClusterAddGroupResponseParams {}
impl INSObject for MTRGroupsClusterAddGroupResponseParams {}
impl PNSObject for MTRGroupsClusterAddGroupResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRGroupsClusterAddGroupResponseParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRGroupsClusterAddGroupResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupsClusterAddGroupResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupsClusterAddGroupResponseParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRGroupsClusterAddGroupResponseParams")
        }
    }
}
impl IMTRGroupsClusterAddGroupResponseParams for MTRGroupsClusterAddGroupResponseParams {}
pub trait IMTRGroupsClusterAddGroupResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
impl MTRGroupsClusterAddGroupResponseParams_Deprecated for MTRGroupsClusterAddGroupResponseParams {}
pub trait MTRGroupsClusterAddGroupResponseParams_Deprecated: Sized + std::ops::Deref {
    unsafe fn groupId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupId)
    }
    unsafe fn setGroupId_(&self, groupId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupId : groupId)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupsClusterViewGroupParams(pub id);
impl std::ops::Deref for MTRGroupsClusterViewGroupParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupsClusterViewGroupParams {}
impl MTRGroupsClusterViewGroupParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupsClusterViewGroupParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRGroupsClusterViewGroupParams {}
impl INSObject for MTRGroupsClusterViewGroupParams {}
impl PNSObject for MTRGroupsClusterViewGroupParams {}
impl std::convert::TryFrom<NSObject> for MTRGroupsClusterViewGroupParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRGroupsClusterViewGroupParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupsClusterViewGroupParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupsClusterViewGroupParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRGroupsClusterViewGroupParams")
        }
    }
}
impl IMTRGroupsClusterViewGroupParams for MTRGroupsClusterViewGroupParams {}
pub trait IMTRGroupsClusterViewGroupParams: Sized + std::ops::Deref {
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
impl MTRGroupsClusterViewGroupParams_Deprecated for MTRGroupsClusterViewGroupParams {}
pub trait MTRGroupsClusterViewGroupParams_Deprecated: Sized + std::ops::Deref {
    unsafe fn groupId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupId)
    }
    unsafe fn setGroupId_(&self, groupId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupId : groupId)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupsClusterViewGroupResponseParams(pub id);
impl std::ops::Deref for MTRGroupsClusterViewGroupResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupsClusterViewGroupResponseParams {}
impl MTRGroupsClusterViewGroupResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupsClusterViewGroupResponseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRGroupsClusterViewGroupResponseParams {}
impl INSObject for MTRGroupsClusterViewGroupResponseParams {}
impl PNSObject for MTRGroupsClusterViewGroupResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRGroupsClusterViewGroupResponseParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRGroupsClusterViewGroupResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupsClusterViewGroupResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupsClusterViewGroupResponseParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRGroupsClusterViewGroupResponseParams")
        }
    }
}
impl IMTRGroupsClusterViewGroupResponseParams for MTRGroupsClusterViewGroupResponseParams {}
pub trait IMTRGroupsClusterViewGroupResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn groupName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupName)
    }
    unsafe fn setGroupName_(&self, groupName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupName : groupName)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
impl MTRGroupsClusterViewGroupResponseParams_Deprecated
    for MTRGroupsClusterViewGroupResponseParams
{
}
pub trait MTRGroupsClusterViewGroupResponseParams_Deprecated: Sized + std::ops::Deref {
    unsafe fn groupId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupId)
    }
    unsafe fn setGroupId_(&self, groupId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupId : groupId)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupsClusterGetGroupMembershipParams(pub id);
impl std::ops::Deref for MTRGroupsClusterGetGroupMembershipParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupsClusterGetGroupMembershipParams {}
impl MTRGroupsClusterGetGroupMembershipParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupsClusterGetGroupMembershipParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRGroupsClusterGetGroupMembershipParams {}
impl INSObject for MTRGroupsClusterGetGroupMembershipParams {}
impl PNSObject for MTRGroupsClusterGetGroupMembershipParams {}
impl std::convert::TryFrom<NSObject> for MTRGroupsClusterGetGroupMembershipParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRGroupsClusterGetGroupMembershipParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupsClusterGetGroupMembershipParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupsClusterGetGroupMembershipParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRGroupsClusterGetGroupMembershipParams")
        }
    }
}
impl IMTRGroupsClusterGetGroupMembershipParams for MTRGroupsClusterGetGroupMembershipParams {}
pub trait IMTRGroupsClusterGetGroupMembershipParams: Sized + std::ops::Deref {
    unsafe fn groupList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupList)
    }
    unsafe fn setGroupList_(&self, groupList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupList : groupList)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupsClusterGetGroupMembershipResponseParams(pub id);
impl std::ops::Deref for MTRGroupsClusterGetGroupMembershipResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupsClusterGetGroupMembershipResponseParams {}
impl MTRGroupsClusterGetGroupMembershipResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupsClusterGetGroupMembershipResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGroupsClusterGetGroupMembershipResponseParams {}
impl INSObject for MTRGroupsClusterGetGroupMembershipResponseParams {}
impl PNSObject for MTRGroupsClusterGetGroupMembershipResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRGroupsClusterGetGroupMembershipResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGroupsClusterGetGroupMembershipResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupsClusterGetGroupMembershipResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupsClusterGetGroupMembershipResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGroupsClusterGetGroupMembershipResponseParams" ,)
        }
    }
}
impl IMTRGroupsClusterGetGroupMembershipResponseParams
    for MTRGroupsClusterGetGroupMembershipResponseParams
{
}
pub trait IMTRGroupsClusterGetGroupMembershipResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn capacity(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, capacity)
    }
    unsafe fn setCapacity_(&self, capacity: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCapacity : capacity)
    }
    unsafe fn groupList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupList)
    }
    unsafe fn setGroupList_(&self, groupList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupList : groupList)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupsClusterRemoveGroupParams(pub id);
impl std::ops::Deref for MTRGroupsClusterRemoveGroupParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupsClusterRemoveGroupParams {}
impl MTRGroupsClusterRemoveGroupParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupsClusterRemoveGroupParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRGroupsClusterRemoveGroupParams {}
impl INSObject for MTRGroupsClusterRemoveGroupParams {}
impl PNSObject for MTRGroupsClusterRemoveGroupParams {}
impl std::convert::TryFrom<NSObject> for MTRGroupsClusterRemoveGroupParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRGroupsClusterRemoveGroupParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupsClusterRemoveGroupParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupsClusterRemoveGroupParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRGroupsClusterRemoveGroupParams")
        }
    }
}
impl IMTRGroupsClusterRemoveGroupParams for MTRGroupsClusterRemoveGroupParams {}
pub trait IMTRGroupsClusterRemoveGroupParams: Sized + std::ops::Deref {
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
impl MTRGroupsClusterRemoveGroupParams_Deprecated for MTRGroupsClusterRemoveGroupParams {}
pub trait MTRGroupsClusterRemoveGroupParams_Deprecated: Sized + std::ops::Deref {
    unsafe fn groupId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupId)
    }
    unsafe fn setGroupId_(&self, groupId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupId : groupId)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupsClusterRemoveGroupResponseParams(pub id);
impl std::ops::Deref for MTRGroupsClusterRemoveGroupResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupsClusterRemoveGroupResponseParams {}
impl MTRGroupsClusterRemoveGroupResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupsClusterRemoveGroupResponseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRGroupsClusterRemoveGroupResponseParams {}
impl INSObject for MTRGroupsClusterRemoveGroupResponseParams {}
impl PNSObject for MTRGroupsClusterRemoveGroupResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRGroupsClusterRemoveGroupResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGroupsClusterRemoveGroupResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupsClusterRemoveGroupResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupsClusterRemoveGroupResponseParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRGroupsClusterRemoveGroupResponseParams")
        }
    }
}
impl IMTRGroupsClusterRemoveGroupResponseParams for MTRGroupsClusterRemoveGroupResponseParams {}
pub trait IMTRGroupsClusterRemoveGroupResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
impl MTRGroupsClusterRemoveGroupResponseParams_Deprecated
    for MTRGroupsClusterRemoveGroupResponseParams
{
}
pub trait MTRGroupsClusterRemoveGroupResponseParams_Deprecated: Sized + std::ops::Deref {
    unsafe fn groupId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupId)
    }
    unsafe fn setGroupId_(&self, groupId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupId : groupId)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupsClusterRemoveAllGroupsParams(pub id);
impl std::ops::Deref for MTRGroupsClusterRemoveAllGroupsParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupsClusterRemoveAllGroupsParams {}
impl MTRGroupsClusterRemoveAllGroupsParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupsClusterRemoveAllGroupsParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRGroupsClusterRemoveAllGroupsParams {}
impl INSObject for MTRGroupsClusterRemoveAllGroupsParams {}
impl PNSObject for MTRGroupsClusterRemoveAllGroupsParams {}
impl std::convert::TryFrom<NSObject> for MTRGroupsClusterRemoveAllGroupsParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRGroupsClusterRemoveAllGroupsParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupsClusterRemoveAllGroupsParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupsClusterRemoveAllGroupsParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRGroupsClusterRemoveAllGroupsParams")
        }
    }
}
impl IMTRGroupsClusterRemoveAllGroupsParams for MTRGroupsClusterRemoveAllGroupsParams {}
pub trait IMTRGroupsClusterRemoveAllGroupsParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupsClusterAddGroupIfIdentifyingParams(pub id);
impl std::ops::Deref for MTRGroupsClusterAddGroupIfIdentifyingParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupsClusterAddGroupIfIdentifyingParams {}
impl MTRGroupsClusterAddGroupIfIdentifyingParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupsClusterAddGroupIfIdentifyingParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRGroupsClusterAddGroupIfIdentifyingParams {}
impl INSObject for MTRGroupsClusterAddGroupIfIdentifyingParams {}
impl PNSObject for MTRGroupsClusterAddGroupIfIdentifyingParams {}
impl std::convert::TryFrom<NSObject> for MTRGroupsClusterAddGroupIfIdentifyingParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGroupsClusterAddGroupIfIdentifyingParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupsClusterAddGroupIfIdentifyingParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupsClusterAddGroupIfIdentifyingParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRGroupsClusterAddGroupIfIdentifyingParams")
        }
    }
}
impl IMTRGroupsClusterAddGroupIfIdentifyingParams for MTRGroupsClusterAddGroupIfIdentifyingParams {}
pub trait IMTRGroupsClusterAddGroupIfIdentifyingParams: Sized + std::ops::Deref {
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn groupName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupName)
    }
    unsafe fn setGroupName_(&self, groupName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupName : groupName)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
impl MTRGroupsClusterAddGroupIfIdentifyingParams_Deprecated
    for MTRGroupsClusterAddGroupIfIdentifyingParams
{
}
pub trait MTRGroupsClusterAddGroupIfIdentifyingParams_Deprecated: Sized + std::ops::Deref {
    unsafe fn groupId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupId)
    }
    unsafe fn setGroupId_(&self, groupId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupId : groupId)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROnOffClusterOffParams(pub id);
impl std::ops::Deref for MTROnOffClusterOffParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROnOffClusterOffParams {}
impl MTROnOffClusterOffParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROnOffClusterOffParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTROnOffClusterOffParams {}
impl INSObject for MTROnOffClusterOffParams {}
impl PNSObject for MTROnOffClusterOffParams {}
impl std::convert::TryFrom<NSObject> for MTROnOffClusterOffParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTROnOffClusterOffParams, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROnOffClusterOffParams").unwrap()) };
        if is_kind_of {
            Ok(MTROnOffClusterOffParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTROnOffClusterOffParams")
        }
    }
}
impl IMTROnOffClusterOffParams for MTROnOffClusterOffParams {}
pub trait IMTROnOffClusterOffParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROnOffClusterOnParams(pub id);
impl std::ops::Deref for MTROnOffClusterOnParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROnOffClusterOnParams {}
impl MTROnOffClusterOnParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROnOffClusterOnParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTROnOffClusterOnParams {}
impl INSObject for MTROnOffClusterOnParams {}
impl PNSObject for MTROnOffClusterOnParams {}
impl std::convert::TryFrom<NSObject> for MTROnOffClusterOnParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTROnOffClusterOnParams, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROnOffClusterOnParams").unwrap()) };
        if is_kind_of {
            Ok(MTROnOffClusterOnParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTROnOffClusterOnParams")
        }
    }
}
impl IMTROnOffClusterOnParams for MTROnOffClusterOnParams {}
pub trait IMTROnOffClusterOnParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROnOffClusterToggleParams(pub id);
impl std::ops::Deref for MTROnOffClusterToggleParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROnOffClusterToggleParams {}
impl MTROnOffClusterToggleParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROnOffClusterToggleParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTROnOffClusterToggleParams {}
impl INSObject for MTROnOffClusterToggleParams {}
impl PNSObject for MTROnOffClusterToggleParams {}
impl std::convert::TryFrom<NSObject> for MTROnOffClusterToggleParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTROnOffClusterToggleParams, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROnOffClusterToggleParams").unwrap()) };
        if is_kind_of {
            Ok(MTROnOffClusterToggleParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTROnOffClusterToggleParams")
        }
    }
}
impl IMTROnOffClusterToggleParams for MTROnOffClusterToggleParams {}
pub trait IMTROnOffClusterToggleParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROnOffClusterOffWithEffectParams(pub id);
impl std::ops::Deref for MTROnOffClusterOffWithEffectParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROnOffClusterOffWithEffectParams {}
impl MTROnOffClusterOffWithEffectParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROnOffClusterOffWithEffectParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTROnOffClusterOffWithEffectParams {}
impl INSObject for MTROnOffClusterOffWithEffectParams {}
impl PNSObject for MTROnOffClusterOffWithEffectParams {}
impl std::convert::TryFrom<NSObject> for MTROnOffClusterOffWithEffectParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTROnOffClusterOffWithEffectParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROnOffClusterOffWithEffectParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROnOffClusterOffWithEffectParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTROnOffClusterOffWithEffectParams")
        }
    }
}
impl IMTROnOffClusterOffWithEffectParams for MTROnOffClusterOffWithEffectParams {}
pub trait IMTROnOffClusterOffWithEffectParams: Sized + std::ops::Deref {
    unsafe fn effectIdentifier(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, effectIdentifier)
    }
    unsafe fn setEffectIdentifier_(&self, effectIdentifier: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEffectIdentifier : effectIdentifier)
    }
    unsafe fn effectVariant(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, effectVariant)
    }
    unsafe fn setEffectVariant_(&self, effectVariant: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEffectVariant : effectVariant)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
impl MTROnOffClusterOffWithEffectParams_Deprecated for MTROnOffClusterOffWithEffectParams {}
pub trait MTROnOffClusterOffWithEffectParams_Deprecated: Sized + std::ops::Deref {
    unsafe fn effectId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, effectId)
    }
    unsafe fn setEffectId_(&self, effectId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEffectId : effectId)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROnOffClusterOnWithRecallGlobalSceneParams(pub id);
impl std::ops::Deref for MTROnOffClusterOnWithRecallGlobalSceneParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROnOffClusterOnWithRecallGlobalSceneParams {}
impl MTROnOffClusterOnWithRecallGlobalSceneParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROnOffClusterOnWithRecallGlobalSceneParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTROnOffClusterOnWithRecallGlobalSceneParams {}
impl INSObject for MTROnOffClusterOnWithRecallGlobalSceneParams {}
impl PNSObject for MTROnOffClusterOnWithRecallGlobalSceneParams {}
impl std::convert::TryFrom<NSObject> for MTROnOffClusterOnWithRecallGlobalSceneParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROnOffClusterOnWithRecallGlobalSceneParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROnOffClusterOnWithRecallGlobalSceneParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROnOffClusterOnWithRecallGlobalSceneParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROnOffClusterOnWithRecallGlobalSceneParams" ,)
        }
    }
}
impl IMTROnOffClusterOnWithRecallGlobalSceneParams
    for MTROnOffClusterOnWithRecallGlobalSceneParams
{
}
pub trait IMTROnOffClusterOnWithRecallGlobalSceneParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROnOffClusterOnWithTimedOffParams(pub id);
impl std::ops::Deref for MTROnOffClusterOnWithTimedOffParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROnOffClusterOnWithTimedOffParams {}
impl MTROnOffClusterOnWithTimedOffParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROnOffClusterOnWithTimedOffParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTROnOffClusterOnWithTimedOffParams {}
impl INSObject for MTROnOffClusterOnWithTimedOffParams {}
impl PNSObject for MTROnOffClusterOnWithTimedOffParams {}
impl std::convert::TryFrom<NSObject> for MTROnOffClusterOnWithTimedOffParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTROnOffClusterOnWithTimedOffParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROnOffClusterOnWithTimedOffParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROnOffClusterOnWithTimedOffParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTROnOffClusterOnWithTimedOffParams")
        }
    }
}
impl IMTROnOffClusterOnWithTimedOffParams for MTROnOffClusterOnWithTimedOffParams {}
pub trait IMTROnOffClusterOnWithTimedOffParams: Sized + std::ops::Deref {
    unsafe fn onOffControl(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, onOffControl)
    }
    unsafe fn setOnOffControl_(&self, onOffControl: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOnOffControl : onOffControl)
    }
    unsafe fn onTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, onTime)
    }
    unsafe fn setOnTime_(&self, onTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOnTime : onTime)
    }
    unsafe fn offWaitTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, offWaitTime)
    }
    unsafe fn setOffWaitTime_(&self, offWaitTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOffWaitTime : offWaitTime)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRLevelControlClusterMoveToLevelParams(pub id);
impl std::ops::Deref for MTRLevelControlClusterMoveToLevelParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRLevelControlClusterMoveToLevelParams {}
impl MTRLevelControlClusterMoveToLevelParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRLevelControlClusterMoveToLevelParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRLevelControlClusterMoveToLevelParams {}
impl INSObject for MTRLevelControlClusterMoveToLevelParams {}
impl PNSObject for MTRLevelControlClusterMoveToLevelParams {}
impl std::convert::TryFrom<NSObject> for MTRLevelControlClusterMoveToLevelParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRLevelControlClusterMoveToLevelParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRLevelControlClusterMoveToLevelParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRLevelControlClusterMoveToLevelParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRLevelControlClusterMoveToLevelParams")
        }
    }
}
impl IMTRLevelControlClusterMoveToLevelParams for MTRLevelControlClusterMoveToLevelParams {}
pub trait IMTRLevelControlClusterMoveToLevelParams: Sized + std::ops::Deref {
    unsafe fn level(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, level)
    }
    unsafe fn setLevel_(&self, level: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLevel : level)
    }
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRLevelControlClusterMoveParams(pub id);
impl std::ops::Deref for MTRLevelControlClusterMoveParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRLevelControlClusterMoveParams {}
impl MTRLevelControlClusterMoveParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRLevelControlClusterMoveParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRLevelControlClusterMoveParams {}
impl INSObject for MTRLevelControlClusterMoveParams {}
impl PNSObject for MTRLevelControlClusterMoveParams {}
impl std::convert::TryFrom<NSObject> for MTRLevelControlClusterMoveParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRLevelControlClusterMoveParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRLevelControlClusterMoveParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRLevelControlClusterMoveParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRLevelControlClusterMoveParams")
        }
    }
}
impl IMTRLevelControlClusterMoveParams for MTRLevelControlClusterMoveParams {}
pub trait IMTRLevelControlClusterMoveParams: Sized + std::ops::Deref {
    unsafe fn moveMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, moveMode)
    }
    unsafe fn setMoveMode_(&self, moveMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMoveMode : moveMode)
    }
    unsafe fn rate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rate)
    }
    unsafe fn setRate_(&self, rate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRate : rate)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRLevelControlClusterStepParams(pub id);
impl std::ops::Deref for MTRLevelControlClusterStepParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRLevelControlClusterStepParams {}
impl MTRLevelControlClusterStepParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRLevelControlClusterStepParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRLevelControlClusterStepParams {}
impl INSObject for MTRLevelControlClusterStepParams {}
impl PNSObject for MTRLevelControlClusterStepParams {}
impl std::convert::TryFrom<NSObject> for MTRLevelControlClusterStepParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRLevelControlClusterStepParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRLevelControlClusterStepParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRLevelControlClusterStepParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRLevelControlClusterStepParams")
        }
    }
}
impl IMTRLevelControlClusterStepParams for MTRLevelControlClusterStepParams {}
pub trait IMTRLevelControlClusterStepParams: Sized + std::ops::Deref {
    unsafe fn stepMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stepMode)
    }
    unsafe fn setStepMode_(&self, stepMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStepMode : stepMode)
    }
    unsafe fn stepSize(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stepSize)
    }
    unsafe fn setStepSize_(&self, stepSize: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStepSize : stepSize)
    }
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRLevelControlClusterStopParams(pub id);
impl std::ops::Deref for MTRLevelControlClusterStopParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRLevelControlClusterStopParams {}
impl MTRLevelControlClusterStopParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRLevelControlClusterStopParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRLevelControlClusterStopParams {}
impl INSObject for MTRLevelControlClusterStopParams {}
impl PNSObject for MTRLevelControlClusterStopParams {}
impl std::convert::TryFrom<NSObject> for MTRLevelControlClusterStopParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRLevelControlClusterStopParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRLevelControlClusterStopParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRLevelControlClusterStopParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRLevelControlClusterStopParams")
        }
    }
}
impl IMTRLevelControlClusterStopParams for MTRLevelControlClusterStopParams {}
pub trait IMTRLevelControlClusterStopParams: Sized + std::ops::Deref {
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRLevelControlClusterMoveToLevelWithOnOffParams(pub id);
impl std::ops::Deref for MTRLevelControlClusterMoveToLevelWithOnOffParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRLevelControlClusterMoveToLevelWithOnOffParams {}
impl MTRLevelControlClusterMoveToLevelWithOnOffParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRLevelControlClusterMoveToLevelWithOnOffParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRLevelControlClusterMoveToLevelWithOnOffParams {}
impl INSObject for MTRLevelControlClusterMoveToLevelWithOnOffParams {}
impl PNSObject for MTRLevelControlClusterMoveToLevelWithOnOffParams {}
impl std::convert::TryFrom<NSObject> for MTRLevelControlClusterMoveToLevelWithOnOffParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRLevelControlClusterMoveToLevelWithOnOffParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRLevelControlClusterMoveToLevelWithOnOffParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRLevelControlClusterMoveToLevelWithOnOffParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRLevelControlClusterMoveToLevelWithOnOffParams" ,)
        }
    }
}
impl IMTRLevelControlClusterMoveToLevelWithOnOffParams
    for MTRLevelControlClusterMoveToLevelWithOnOffParams
{
}
pub trait IMTRLevelControlClusterMoveToLevelWithOnOffParams: Sized + std::ops::Deref {
    unsafe fn level(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, level)
    }
    unsafe fn setLevel_(&self, level: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLevel : level)
    }
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRLevelControlClusterMoveWithOnOffParams(pub id);
impl std::ops::Deref for MTRLevelControlClusterMoveWithOnOffParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRLevelControlClusterMoveWithOnOffParams {}
impl MTRLevelControlClusterMoveWithOnOffParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRLevelControlClusterMoveWithOnOffParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRLevelControlClusterMoveWithOnOffParams {}
impl INSObject for MTRLevelControlClusterMoveWithOnOffParams {}
impl PNSObject for MTRLevelControlClusterMoveWithOnOffParams {}
impl std::convert::TryFrom<NSObject> for MTRLevelControlClusterMoveWithOnOffParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRLevelControlClusterMoveWithOnOffParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRLevelControlClusterMoveWithOnOffParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRLevelControlClusterMoveWithOnOffParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRLevelControlClusterMoveWithOnOffParams")
        }
    }
}
impl IMTRLevelControlClusterMoveWithOnOffParams for MTRLevelControlClusterMoveWithOnOffParams {}
pub trait IMTRLevelControlClusterMoveWithOnOffParams: Sized + std::ops::Deref {
    unsafe fn moveMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, moveMode)
    }
    unsafe fn setMoveMode_(&self, moveMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMoveMode : moveMode)
    }
    unsafe fn rate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rate)
    }
    unsafe fn setRate_(&self, rate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRate : rate)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRLevelControlClusterStepWithOnOffParams(pub id);
impl std::ops::Deref for MTRLevelControlClusterStepWithOnOffParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRLevelControlClusterStepWithOnOffParams {}
impl MTRLevelControlClusterStepWithOnOffParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRLevelControlClusterStepWithOnOffParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRLevelControlClusterStepWithOnOffParams {}
impl INSObject for MTRLevelControlClusterStepWithOnOffParams {}
impl PNSObject for MTRLevelControlClusterStepWithOnOffParams {}
impl std::convert::TryFrom<NSObject> for MTRLevelControlClusterStepWithOnOffParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRLevelControlClusterStepWithOnOffParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRLevelControlClusterStepWithOnOffParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRLevelControlClusterStepWithOnOffParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRLevelControlClusterStepWithOnOffParams")
        }
    }
}
impl IMTRLevelControlClusterStepWithOnOffParams for MTRLevelControlClusterStepWithOnOffParams {}
pub trait IMTRLevelControlClusterStepWithOnOffParams: Sized + std::ops::Deref {
    unsafe fn stepMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stepMode)
    }
    unsafe fn setStepMode_(&self, stepMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStepMode : stepMode)
    }
    unsafe fn stepSize(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stepSize)
    }
    unsafe fn setStepSize_(&self, stepSize: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStepSize : stepSize)
    }
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRLevelControlClusterStopWithOnOffParams(pub id);
impl std::ops::Deref for MTRLevelControlClusterStopWithOnOffParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRLevelControlClusterStopWithOnOffParams {}
impl MTRLevelControlClusterStopWithOnOffParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRLevelControlClusterStopWithOnOffParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRLevelControlClusterStopWithOnOffParams {}
impl INSObject for MTRLevelControlClusterStopWithOnOffParams {}
impl PNSObject for MTRLevelControlClusterStopWithOnOffParams {}
impl std::convert::TryFrom<NSObject> for MTRLevelControlClusterStopWithOnOffParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRLevelControlClusterStopWithOnOffParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRLevelControlClusterStopWithOnOffParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRLevelControlClusterStopWithOnOffParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRLevelControlClusterStopWithOnOffParams")
        }
    }
}
impl IMTRLevelControlClusterStopWithOnOffParams for MTRLevelControlClusterStopWithOnOffParams {}
pub trait IMTRLevelControlClusterStopWithOnOffParams: Sized + std::ops::Deref {
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRLevelControlClusterMoveToClosestFrequencyParams(pub id);
impl std::ops::Deref for MTRLevelControlClusterMoveToClosestFrequencyParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRLevelControlClusterMoveToClosestFrequencyParams {}
impl MTRLevelControlClusterMoveToClosestFrequencyParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRLevelControlClusterMoveToClosestFrequencyParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRLevelControlClusterMoveToClosestFrequencyParams {}
impl INSObject for MTRLevelControlClusterMoveToClosestFrequencyParams {}
impl PNSObject for MTRLevelControlClusterMoveToClosestFrequencyParams {}
impl std::convert::TryFrom<NSObject> for MTRLevelControlClusterMoveToClosestFrequencyParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRLevelControlClusterMoveToClosestFrequencyParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRLevelControlClusterMoveToClosestFrequencyParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRLevelControlClusterMoveToClosestFrequencyParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRLevelControlClusterMoveToClosestFrequencyParams" ,)
        }
    }
}
impl IMTRLevelControlClusterMoveToClosestFrequencyParams
    for MTRLevelControlClusterMoveToClosestFrequencyParams
{
}
pub trait IMTRLevelControlClusterMoveToClosestFrequencyParams: Sized + std::ops::Deref {
    unsafe fn frequency(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, frequency)
    }
    unsafe fn setFrequency_(&self, frequency: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFrequency : frequency)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAccessControlClusterReviewFabricRestrictionsParams(pub id);
impl std::ops::Deref for MTRAccessControlClusterReviewFabricRestrictionsParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAccessControlClusterReviewFabricRestrictionsParams {}
impl MTRAccessControlClusterReviewFabricRestrictionsParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccessControlClusterReviewFabricRestrictionsParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRAccessControlClusterReviewFabricRestrictionsParams {}
impl INSObject for MTRAccessControlClusterReviewFabricRestrictionsParams {}
impl PNSObject for MTRAccessControlClusterReviewFabricRestrictionsParams {}
impl std::convert::TryFrom<NSObject> for MTRAccessControlClusterReviewFabricRestrictionsParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRAccessControlClusterReviewFabricRestrictionsParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAccessControlClusterReviewFabricRestrictionsParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRAccessControlClusterReviewFabricRestrictionsParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRAccessControlClusterReviewFabricRestrictionsParams" ,)
        }
    }
}
impl IMTRAccessControlClusterReviewFabricRestrictionsParams
    for MTRAccessControlClusterReviewFabricRestrictionsParams
{
}
pub trait IMTRAccessControlClusterReviewFabricRestrictionsParams: Sized + std::ops::Deref {
    unsafe fn arl(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arl)
    }
    unsafe fn setArl_(&self, arl: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArl : arl)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAccessControlClusterReviewFabricRestrictionsResponseParams(pub id);
impl std::ops::Deref for MTRAccessControlClusterReviewFabricRestrictionsResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAccessControlClusterReviewFabricRestrictionsResponseParams {}
impl MTRAccessControlClusterReviewFabricRestrictionsResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccessControlClusterReviewFabricRestrictionsResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRAccessControlClusterReviewFabricRestrictionsResponseParams {}
impl INSObject for MTRAccessControlClusterReviewFabricRestrictionsResponseParams {}
impl PNSObject for MTRAccessControlClusterReviewFabricRestrictionsResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRAccessControlClusterReviewFabricRestrictionsResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRAccessControlClusterReviewFabricRestrictionsResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAccessControlClusterReviewFabricRestrictionsResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRAccessControlClusterReviewFabricRestrictionsResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRAccessControlClusterReviewFabricRestrictionsResponseParams" ,)
        }
    }
}
impl IMTRAccessControlClusterReviewFabricRestrictionsResponseParams
    for MTRAccessControlClusterReviewFabricRestrictionsResponseParams
{
}
pub trait IMTRAccessControlClusterReviewFabricRestrictionsResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn token(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, token)
    }
    unsafe fn setToken_(&self, token: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setToken : token)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRActionsClusterInstantActionParams(pub id);
impl std::ops::Deref for MTRActionsClusterInstantActionParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRActionsClusterInstantActionParams {}
impl MTRActionsClusterInstantActionParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRActionsClusterInstantActionParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRActionsClusterInstantActionParams {}
impl INSObject for MTRActionsClusterInstantActionParams {}
impl PNSObject for MTRActionsClusterInstantActionParams {}
impl std::convert::TryFrom<NSObject> for MTRActionsClusterInstantActionParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRActionsClusterInstantActionParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRActionsClusterInstantActionParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRActionsClusterInstantActionParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRActionsClusterInstantActionParams")
        }
    }
}
impl IMTRActionsClusterInstantActionParams for MTRActionsClusterInstantActionParams {}
pub trait IMTRActionsClusterInstantActionParams: Sized + std::ops::Deref {
    unsafe fn actionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, actionID)
    }
    unsafe fn setActionID_(&self, actionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActionID : actionID)
    }
    unsafe fn invokeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invokeID)
    }
    unsafe fn setInvokeID_(&self, invokeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInvokeID : invokeID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRActionsClusterInstantActionWithTransitionParams(pub id);
impl std::ops::Deref for MTRActionsClusterInstantActionWithTransitionParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRActionsClusterInstantActionWithTransitionParams {}
impl MTRActionsClusterInstantActionWithTransitionParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRActionsClusterInstantActionWithTransitionParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRActionsClusterInstantActionWithTransitionParams {}
impl INSObject for MTRActionsClusterInstantActionWithTransitionParams {}
impl PNSObject for MTRActionsClusterInstantActionWithTransitionParams {}
impl std::convert::TryFrom<NSObject> for MTRActionsClusterInstantActionWithTransitionParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRActionsClusterInstantActionWithTransitionParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRActionsClusterInstantActionWithTransitionParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRActionsClusterInstantActionWithTransitionParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRActionsClusterInstantActionWithTransitionParams" ,)
        }
    }
}
impl IMTRActionsClusterInstantActionWithTransitionParams
    for MTRActionsClusterInstantActionWithTransitionParams
{
}
pub trait IMTRActionsClusterInstantActionWithTransitionParams: Sized + std::ops::Deref {
    unsafe fn actionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, actionID)
    }
    unsafe fn setActionID_(&self, actionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActionID : actionID)
    }
    unsafe fn invokeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invokeID)
    }
    unsafe fn setInvokeID_(&self, invokeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInvokeID : invokeID)
    }
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRActionsClusterStartActionParams(pub id);
impl std::ops::Deref for MTRActionsClusterStartActionParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRActionsClusterStartActionParams {}
impl MTRActionsClusterStartActionParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRActionsClusterStartActionParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRActionsClusterStartActionParams {}
impl INSObject for MTRActionsClusterStartActionParams {}
impl PNSObject for MTRActionsClusterStartActionParams {}
impl std::convert::TryFrom<NSObject> for MTRActionsClusterStartActionParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRActionsClusterStartActionParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRActionsClusterStartActionParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRActionsClusterStartActionParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRActionsClusterStartActionParams")
        }
    }
}
impl IMTRActionsClusterStartActionParams for MTRActionsClusterStartActionParams {}
pub trait IMTRActionsClusterStartActionParams: Sized + std::ops::Deref {
    unsafe fn actionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, actionID)
    }
    unsafe fn setActionID_(&self, actionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActionID : actionID)
    }
    unsafe fn invokeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invokeID)
    }
    unsafe fn setInvokeID_(&self, invokeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInvokeID : invokeID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRActionsClusterStartActionWithDurationParams(pub id);
impl std::ops::Deref for MTRActionsClusterStartActionWithDurationParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRActionsClusterStartActionWithDurationParams {}
impl MTRActionsClusterStartActionWithDurationParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRActionsClusterStartActionWithDurationParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRActionsClusterStartActionWithDurationParams {}
impl INSObject for MTRActionsClusterStartActionWithDurationParams {}
impl PNSObject for MTRActionsClusterStartActionWithDurationParams {}
impl std::convert::TryFrom<NSObject> for MTRActionsClusterStartActionWithDurationParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRActionsClusterStartActionWithDurationParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRActionsClusterStartActionWithDurationParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRActionsClusterStartActionWithDurationParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRActionsClusterStartActionWithDurationParams" ,)
        }
    }
}
impl IMTRActionsClusterStartActionWithDurationParams
    for MTRActionsClusterStartActionWithDurationParams
{
}
pub trait IMTRActionsClusterStartActionWithDurationParams: Sized + std::ops::Deref {
    unsafe fn actionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, actionID)
    }
    unsafe fn setActionID_(&self, actionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActionID : actionID)
    }
    unsafe fn invokeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invokeID)
    }
    unsafe fn setInvokeID_(&self, invokeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInvokeID : invokeID)
    }
    unsafe fn duration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, duration)
    }
    unsafe fn setDuration_(&self, duration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDuration : duration)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRActionsClusterStopActionParams(pub id);
impl std::ops::Deref for MTRActionsClusterStopActionParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRActionsClusterStopActionParams {}
impl MTRActionsClusterStopActionParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRActionsClusterStopActionParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRActionsClusterStopActionParams {}
impl INSObject for MTRActionsClusterStopActionParams {}
impl PNSObject for MTRActionsClusterStopActionParams {}
impl std::convert::TryFrom<NSObject> for MTRActionsClusterStopActionParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRActionsClusterStopActionParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRActionsClusterStopActionParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRActionsClusterStopActionParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRActionsClusterStopActionParams")
        }
    }
}
impl IMTRActionsClusterStopActionParams for MTRActionsClusterStopActionParams {}
pub trait IMTRActionsClusterStopActionParams: Sized + std::ops::Deref {
    unsafe fn actionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, actionID)
    }
    unsafe fn setActionID_(&self, actionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActionID : actionID)
    }
    unsafe fn invokeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invokeID)
    }
    unsafe fn setInvokeID_(&self, invokeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInvokeID : invokeID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRActionsClusterPauseActionParams(pub id);
impl std::ops::Deref for MTRActionsClusterPauseActionParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRActionsClusterPauseActionParams {}
impl MTRActionsClusterPauseActionParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRActionsClusterPauseActionParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRActionsClusterPauseActionParams {}
impl INSObject for MTRActionsClusterPauseActionParams {}
impl PNSObject for MTRActionsClusterPauseActionParams {}
impl std::convert::TryFrom<NSObject> for MTRActionsClusterPauseActionParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRActionsClusterPauseActionParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRActionsClusterPauseActionParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRActionsClusterPauseActionParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRActionsClusterPauseActionParams")
        }
    }
}
impl IMTRActionsClusterPauseActionParams for MTRActionsClusterPauseActionParams {}
pub trait IMTRActionsClusterPauseActionParams: Sized + std::ops::Deref {
    unsafe fn actionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, actionID)
    }
    unsafe fn setActionID_(&self, actionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActionID : actionID)
    }
    unsafe fn invokeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invokeID)
    }
    unsafe fn setInvokeID_(&self, invokeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInvokeID : invokeID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRActionsClusterPauseActionWithDurationParams(pub id);
impl std::ops::Deref for MTRActionsClusterPauseActionWithDurationParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRActionsClusterPauseActionWithDurationParams {}
impl MTRActionsClusterPauseActionWithDurationParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRActionsClusterPauseActionWithDurationParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRActionsClusterPauseActionWithDurationParams {}
impl INSObject for MTRActionsClusterPauseActionWithDurationParams {}
impl PNSObject for MTRActionsClusterPauseActionWithDurationParams {}
impl std::convert::TryFrom<NSObject> for MTRActionsClusterPauseActionWithDurationParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRActionsClusterPauseActionWithDurationParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRActionsClusterPauseActionWithDurationParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRActionsClusterPauseActionWithDurationParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRActionsClusterPauseActionWithDurationParams" ,)
        }
    }
}
impl IMTRActionsClusterPauseActionWithDurationParams
    for MTRActionsClusterPauseActionWithDurationParams
{
}
pub trait IMTRActionsClusterPauseActionWithDurationParams: Sized + std::ops::Deref {
    unsafe fn actionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, actionID)
    }
    unsafe fn setActionID_(&self, actionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActionID : actionID)
    }
    unsafe fn invokeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invokeID)
    }
    unsafe fn setInvokeID_(&self, invokeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInvokeID : invokeID)
    }
    unsafe fn duration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, duration)
    }
    unsafe fn setDuration_(&self, duration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDuration : duration)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRActionsClusterResumeActionParams(pub id);
impl std::ops::Deref for MTRActionsClusterResumeActionParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRActionsClusterResumeActionParams {}
impl MTRActionsClusterResumeActionParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRActionsClusterResumeActionParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRActionsClusterResumeActionParams {}
impl INSObject for MTRActionsClusterResumeActionParams {}
impl PNSObject for MTRActionsClusterResumeActionParams {}
impl std::convert::TryFrom<NSObject> for MTRActionsClusterResumeActionParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRActionsClusterResumeActionParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRActionsClusterResumeActionParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRActionsClusterResumeActionParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRActionsClusterResumeActionParams")
        }
    }
}
impl IMTRActionsClusterResumeActionParams for MTRActionsClusterResumeActionParams {}
pub trait IMTRActionsClusterResumeActionParams: Sized + std::ops::Deref {
    unsafe fn actionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, actionID)
    }
    unsafe fn setActionID_(&self, actionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActionID : actionID)
    }
    unsafe fn invokeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invokeID)
    }
    unsafe fn setInvokeID_(&self, invokeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInvokeID : invokeID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRActionsClusterEnableActionParams(pub id);
impl std::ops::Deref for MTRActionsClusterEnableActionParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRActionsClusterEnableActionParams {}
impl MTRActionsClusterEnableActionParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRActionsClusterEnableActionParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRActionsClusterEnableActionParams {}
impl INSObject for MTRActionsClusterEnableActionParams {}
impl PNSObject for MTRActionsClusterEnableActionParams {}
impl std::convert::TryFrom<NSObject> for MTRActionsClusterEnableActionParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRActionsClusterEnableActionParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRActionsClusterEnableActionParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRActionsClusterEnableActionParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRActionsClusterEnableActionParams")
        }
    }
}
impl IMTRActionsClusterEnableActionParams for MTRActionsClusterEnableActionParams {}
pub trait IMTRActionsClusterEnableActionParams: Sized + std::ops::Deref {
    unsafe fn actionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, actionID)
    }
    unsafe fn setActionID_(&self, actionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActionID : actionID)
    }
    unsafe fn invokeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invokeID)
    }
    unsafe fn setInvokeID_(&self, invokeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInvokeID : invokeID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRActionsClusterEnableActionWithDurationParams(pub id);
impl std::ops::Deref for MTRActionsClusterEnableActionWithDurationParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRActionsClusterEnableActionWithDurationParams {}
impl MTRActionsClusterEnableActionWithDurationParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRActionsClusterEnableActionWithDurationParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRActionsClusterEnableActionWithDurationParams {}
impl INSObject for MTRActionsClusterEnableActionWithDurationParams {}
impl PNSObject for MTRActionsClusterEnableActionWithDurationParams {}
impl std::convert::TryFrom<NSObject> for MTRActionsClusterEnableActionWithDurationParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRActionsClusterEnableActionWithDurationParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRActionsClusterEnableActionWithDurationParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRActionsClusterEnableActionWithDurationParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRActionsClusterEnableActionWithDurationParams" ,)
        }
    }
}
impl IMTRActionsClusterEnableActionWithDurationParams
    for MTRActionsClusterEnableActionWithDurationParams
{
}
pub trait IMTRActionsClusterEnableActionWithDurationParams: Sized + std::ops::Deref {
    unsafe fn actionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, actionID)
    }
    unsafe fn setActionID_(&self, actionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActionID : actionID)
    }
    unsafe fn invokeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invokeID)
    }
    unsafe fn setInvokeID_(&self, invokeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInvokeID : invokeID)
    }
    unsafe fn duration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, duration)
    }
    unsafe fn setDuration_(&self, duration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDuration : duration)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRActionsClusterDisableActionParams(pub id);
impl std::ops::Deref for MTRActionsClusterDisableActionParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRActionsClusterDisableActionParams {}
impl MTRActionsClusterDisableActionParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRActionsClusterDisableActionParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRActionsClusterDisableActionParams {}
impl INSObject for MTRActionsClusterDisableActionParams {}
impl PNSObject for MTRActionsClusterDisableActionParams {}
impl std::convert::TryFrom<NSObject> for MTRActionsClusterDisableActionParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRActionsClusterDisableActionParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRActionsClusterDisableActionParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRActionsClusterDisableActionParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRActionsClusterDisableActionParams")
        }
    }
}
impl IMTRActionsClusterDisableActionParams for MTRActionsClusterDisableActionParams {}
pub trait IMTRActionsClusterDisableActionParams: Sized + std::ops::Deref {
    unsafe fn actionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, actionID)
    }
    unsafe fn setActionID_(&self, actionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActionID : actionID)
    }
    unsafe fn invokeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invokeID)
    }
    unsafe fn setInvokeID_(&self, invokeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInvokeID : invokeID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRActionsClusterDisableActionWithDurationParams(pub id);
impl std::ops::Deref for MTRActionsClusterDisableActionWithDurationParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRActionsClusterDisableActionWithDurationParams {}
impl MTRActionsClusterDisableActionWithDurationParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRActionsClusterDisableActionWithDurationParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRActionsClusterDisableActionWithDurationParams {}
impl INSObject for MTRActionsClusterDisableActionWithDurationParams {}
impl PNSObject for MTRActionsClusterDisableActionWithDurationParams {}
impl std::convert::TryFrom<NSObject> for MTRActionsClusterDisableActionWithDurationParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRActionsClusterDisableActionWithDurationParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRActionsClusterDisableActionWithDurationParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRActionsClusterDisableActionWithDurationParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRActionsClusterDisableActionWithDurationParams" ,)
        }
    }
}
impl IMTRActionsClusterDisableActionWithDurationParams
    for MTRActionsClusterDisableActionWithDurationParams
{
}
pub trait IMTRActionsClusterDisableActionWithDurationParams: Sized + std::ops::Deref {
    unsafe fn actionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, actionID)
    }
    unsafe fn setActionID_(&self, actionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActionID : actionID)
    }
    unsafe fn invokeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invokeID)
    }
    unsafe fn setInvokeID_(&self, invokeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInvokeID : invokeID)
    }
    unsafe fn duration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, duration)
    }
    unsafe fn setDuration_(&self, duration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDuration : duration)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBasicClusterMfgSpecificPingParams(pub id);
impl std::ops::Deref for MTRBasicClusterMfgSpecificPingParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBasicClusterMfgSpecificPingParams {}
impl MTRBasicClusterMfgSpecificPingParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBasicClusterMfgSpecificPingParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRBasicClusterMfgSpecificPingParams {}
impl INSObject for MTRBasicClusterMfgSpecificPingParams {}
impl PNSObject for MTRBasicClusterMfgSpecificPingParams {}
impl std::convert::TryFrom<NSObject> for MTRBasicClusterMfgSpecificPingParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRBasicClusterMfgSpecificPingParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBasicClusterMfgSpecificPingParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRBasicClusterMfgSpecificPingParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRBasicClusterMfgSpecificPingParams")
        }
    }
}
impl IMTRBasicClusterMfgSpecificPingParams for MTRBasicClusterMfgSpecificPingParams {}
pub trait IMTRBasicClusterMfgSpecificPingParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROTASoftwareUpdateProviderClusterQueryImageParams(pub id);
impl std::ops::Deref for MTROTASoftwareUpdateProviderClusterQueryImageParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROTASoftwareUpdateProviderClusterQueryImageParams {}
impl MTROTASoftwareUpdateProviderClusterQueryImageParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROTASoftwareUpdateProviderClusterQueryImageParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROTASoftwareUpdateProviderClusterQueryImageParams {}
impl INSObject for MTROTASoftwareUpdateProviderClusterQueryImageParams {}
impl PNSObject for MTROTASoftwareUpdateProviderClusterQueryImageParams {}
impl std::convert::TryFrom<NSObject> for MTROTASoftwareUpdateProviderClusterQueryImageParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROTASoftwareUpdateProviderClusterQueryImageParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROTASoftwareUpdateProviderClusterQueryImageParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROTASoftwareUpdateProviderClusterQueryImageParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTROTASoftwareUpdateProviderClusterQueryImageParams" ,)
        }
    }
}
impl IMTROTASoftwareUpdateProviderClusterQueryImageParams
    for MTROTASoftwareUpdateProviderClusterQueryImageParams
{
}
pub trait IMTROTASoftwareUpdateProviderClusterQueryImageParams: Sized + std::ops::Deref {
    unsafe fn vendorID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vendorID)
    }
    unsafe fn setVendorID_(&self, vendorID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVendorID : vendorID)
    }
    unsafe fn productID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, productID)
    }
    unsafe fn setProductID_(&self, productID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProductID : productID)
    }
    unsafe fn softwareVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, softwareVersion)
    }
    unsafe fn setSoftwareVersion_(&self, softwareVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSoftwareVersion : softwareVersion)
    }
    unsafe fn protocolsSupported(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, protocolsSupported)
    }
    unsafe fn setProtocolsSupported_(&self, protocolsSupported: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProtocolsSupported : protocolsSupported)
    }
    unsafe fn hardwareVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hardwareVersion)
    }
    unsafe fn setHardwareVersion_(&self, hardwareVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHardwareVersion : hardwareVersion)
    }
    unsafe fn location(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, location)
    }
    unsafe fn setLocation_(&self, location: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocation : location)
    }
    unsafe fn requestorCanConsent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requestorCanConsent)
    }
    unsafe fn setRequestorCanConsent_(&self, requestorCanConsent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRequestorCanConsent : requestorCanConsent)
    }
    unsafe fn metadataForProvider(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, metadataForProvider)
    }
    unsafe fn setMetadataForProvider_(&self, metadataForProvider: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMetadataForProvider : metadataForProvider)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROtaSoftwareUpdateProviderClusterQueryImageParams(pub id);
impl std::ops::Deref for MTROtaSoftwareUpdateProviderClusterQueryImageParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROtaSoftwareUpdateProviderClusterQueryImageParams {}
impl MTROtaSoftwareUpdateProviderClusterQueryImageParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROtaSoftwareUpdateProviderClusterQueryImageParams").unwrap(), alloc)
        })
    }
}
impl IMTROTASoftwareUpdateProviderClusterQueryImageParams
    for MTROtaSoftwareUpdateProviderClusterQueryImageParams
{
}
impl PNSCopying for MTROtaSoftwareUpdateProviderClusterQueryImageParams {}
impl From<MTROtaSoftwareUpdateProviderClusterQueryImageParams>
    for MTROTASoftwareUpdateProviderClusterQueryImageParams
{
    fn from(
        child: MTROtaSoftwareUpdateProviderClusterQueryImageParams,
    ) -> MTROTASoftwareUpdateProviderClusterQueryImageParams {
        MTROTASoftwareUpdateProviderClusterQueryImageParams(child.0)
    }
}
impl std::convert::TryFrom<MTROTASoftwareUpdateProviderClusterQueryImageParams>
    for MTROtaSoftwareUpdateProviderClusterQueryImageParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTROTASoftwareUpdateProviderClusterQueryImageParams,
    ) -> Result<MTROtaSoftwareUpdateProviderClusterQueryImageParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROtaSoftwareUpdateProviderClusterQueryImageParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROtaSoftwareUpdateProviderClusterQueryImageParams(
                parent.0,
            ))
        } else {
            Err ("This MTROTASoftwareUpdateProviderClusterQueryImageParams cannot be downcasted to MTROtaSoftwareUpdateProviderClusterQueryImageParams" ,)
        }
    }
}
impl INSObject for MTROtaSoftwareUpdateProviderClusterQueryImageParams {}
impl PNSObject for MTROtaSoftwareUpdateProviderClusterQueryImageParams {}
impl IMTROtaSoftwareUpdateProviderClusterQueryImageParams
    for MTROtaSoftwareUpdateProviderClusterQueryImageParams
{
}
pub trait IMTROtaSoftwareUpdateProviderClusterQueryImageParams: Sized + std::ops::Deref {
    unsafe fn softwareVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, softwareVersion)
    }
    unsafe fn setSoftwareVersion_(&self, softwareVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSoftwareVersion : softwareVersion)
    }
    unsafe fn protocolsSupported(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, protocolsSupported)
    }
    unsafe fn setProtocolsSupported_(&self, protocolsSupported: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProtocolsSupported : protocolsSupported)
    }
    unsafe fn hardwareVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hardwareVersion)
    }
    unsafe fn setHardwareVersion_(&self, hardwareVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHardwareVersion : hardwareVersion)
    }
    unsafe fn location(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, location)
    }
    unsafe fn setLocation_(&self, location: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocation : location)
    }
    unsafe fn requestorCanConsent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requestorCanConsent)
    }
    unsafe fn setRequestorCanConsent_(&self, requestorCanConsent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRequestorCanConsent : requestorCanConsent)
    }
    unsafe fn metadataForProvider(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, metadataForProvider)
    }
    unsafe fn setMetadataForProvider_(&self, metadataForProvider: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMetadataForProvider : metadataForProvider)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
impl MTROTASoftwareUpdateProviderClusterQueryImageParams_Deprecated
    for MTROTASoftwareUpdateProviderClusterQueryImageParams
{
}
pub trait MTROTASoftwareUpdateProviderClusterQueryImageParams_Deprecated:
    Sized + std::ops::Deref
{
    unsafe fn vendorId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vendorId)
    }
    unsafe fn setVendorId_(&self, vendorId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVendorId : vendorId)
    }
    unsafe fn productId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, productId)
    }
    unsafe fn setProductId_(&self, productId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProductId : productId)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROTASoftwareUpdateProviderClusterQueryImageResponseParams(pub id);
impl std::ops::Deref for MTROTASoftwareUpdateProviderClusterQueryImageResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROTASoftwareUpdateProviderClusterQueryImageResponseParams {}
impl MTROTASoftwareUpdateProviderClusterQueryImageResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROTASoftwareUpdateProviderClusterQueryImageResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROTASoftwareUpdateProviderClusterQueryImageResponseParams {}
impl INSObject for MTROTASoftwareUpdateProviderClusterQueryImageResponseParams {}
impl PNSObject for MTROTASoftwareUpdateProviderClusterQueryImageResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTROTASoftwareUpdateProviderClusterQueryImageResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROTASoftwareUpdateProviderClusterQueryImageResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROTASoftwareUpdateProviderClusterQueryImageResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROTASoftwareUpdateProviderClusterQueryImageResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTROTASoftwareUpdateProviderClusterQueryImageResponseParams" ,)
        }
    }
}
impl IMTROTASoftwareUpdateProviderClusterQueryImageResponseParams
    for MTROTASoftwareUpdateProviderClusterQueryImageResponseParams
{
}
pub trait IMTROTASoftwareUpdateProviderClusterQueryImageResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn delayedActionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delayedActionTime)
    }
    unsafe fn setDelayedActionTime_(&self, delayedActionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelayedActionTime : delayedActionTime)
    }
    unsafe fn imageURI(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, imageURI)
    }
    unsafe fn setImageURI_(&self, imageURI: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setImageURI : imageURI)
    }
    unsafe fn softwareVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, softwareVersion)
    }
    unsafe fn setSoftwareVersion_(&self, softwareVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSoftwareVersion : softwareVersion)
    }
    unsafe fn softwareVersionString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, softwareVersionString)
    }
    unsafe fn setSoftwareVersionString_(&self, softwareVersionString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSoftwareVersionString : softwareVersionString)
    }
    unsafe fn updateToken(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, updateToken)
    }
    unsafe fn setUpdateToken_(&self, updateToken: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUpdateToken : updateToken)
    }
    unsafe fn userConsentNeeded(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userConsentNeeded)
    }
    unsafe fn setUserConsentNeeded_(&self, userConsentNeeded: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserConsentNeeded : userConsentNeeded)
    }
    unsafe fn metadataForRequestor(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, metadataForRequestor)
    }
    unsafe fn setMetadataForRequestor_(&self, metadataForRequestor: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMetadataForRequestor : metadataForRequestor)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams(pub id);
impl std::ops::Deref for MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams {}
impl MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams").unwrap(), alloc)
        })
    }
}
impl IMTROTASoftwareUpdateProviderClusterQueryImageResponseParams
    for MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams
{
}
impl PNSCopying for MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams {}
impl From<MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams>
    for MTROTASoftwareUpdateProviderClusterQueryImageResponseParams
{
    fn from(
        child: MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams,
    ) -> MTROTASoftwareUpdateProviderClusterQueryImageResponseParams {
        MTROTASoftwareUpdateProviderClusterQueryImageResponseParams(child.0)
    }
}
impl std::convert::TryFrom<MTROTASoftwareUpdateProviderClusterQueryImageResponseParams>
    for MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTROTASoftwareUpdateProviderClusterQueryImageResponseParams,
    ) -> Result<MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams(
                parent.0,
            ))
        } else {
            Err ("This MTROTASoftwareUpdateProviderClusterQueryImageResponseParams cannot be downcasted to MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams" ,)
        }
    }
}
impl INSObject for MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams {}
impl PNSObject for MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams {}
impl IMTROtaSoftwareUpdateProviderClusterQueryImageResponseParams
    for MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams
{
}
pub trait IMTROtaSoftwareUpdateProviderClusterQueryImageResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn delayedActionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delayedActionTime)
    }
    unsafe fn setDelayedActionTime_(&self, delayedActionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelayedActionTime : delayedActionTime)
    }
    unsafe fn imageURI(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, imageURI)
    }
    unsafe fn setImageURI_(&self, imageURI: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setImageURI : imageURI)
    }
    unsafe fn softwareVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, softwareVersion)
    }
    unsafe fn setSoftwareVersion_(&self, softwareVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSoftwareVersion : softwareVersion)
    }
    unsafe fn softwareVersionString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, softwareVersionString)
    }
    unsafe fn setSoftwareVersionString_(&self, softwareVersionString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSoftwareVersionString : softwareVersionString)
    }
    unsafe fn updateToken(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, updateToken)
    }
    unsafe fn setUpdateToken_(&self, updateToken: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUpdateToken : updateToken)
    }
    unsafe fn userConsentNeeded(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userConsentNeeded)
    }
    unsafe fn setUserConsentNeeded_(&self, userConsentNeeded: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserConsentNeeded : userConsentNeeded)
    }
    unsafe fn metadataForRequestor(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, metadataForRequestor)
    }
    unsafe fn setMetadataForRequestor_(&self, metadataForRequestor: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMetadataForRequestor : metadataForRequestor)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams(pub id);
impl std::ops::Deref for MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams {}
impl MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams {}
impl INSObject for MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams {}
impl PNSObject for MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams {}
impl std::convert::TryFrom<NSObject>
    for MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams" ,)
        }
    }
}
impl IMTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams
    for MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams
{
}
pub trait IMTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn updateToken(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, updateToken)
    }
    unsafe fn setUpdateToken_(&self, updateToken: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUpdateToken : updateToken)
    }
    unsafe fn getNewVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewVersion)
    }
    unsafe fn setNewVersion_(&self, newVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewVersion : newVersion)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams(pub id);
impl std::ops::Deref for MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams {}
impl MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams").unwrap(), alloc)
        })
    }
}
impl IMTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams
    for MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams
{
}
impl PNSCopying for MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams {}
impl From<MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams>
    for MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams
{
    fn from(
        child: MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams,
    ) -> MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams {
        MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams(child.0)
    }
}
impl std::convert::TryFrom<MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams>
    for MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams,
    ) -> Result<MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams(
                parent.0,
            ))
        } else {
            Err ("This MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams cannot be downcasted to MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams" ,)
        }
    }
}
impl INSObject for MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams {}
impl PNSObject for MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams {}
impl IMTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams
    for MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams
{
}
pub trait IMTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn updateToken(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, updateToken)
    }
    unsafe fn setUpdateToken_(&self, updateToken: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUpdateToken : updateToken)
    }
    unsafe fn getNewVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewVersion)
    }
    unsafe fn setNewVersion_(&self, newVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewVersion : newVersion)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams(pub id);
impl std::ops::Deref for MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams {}
impl MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams {}
impl INSObject for MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams {}
impl PNSObject for MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams" ,)
        }
    }
}
impl IMTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams
    for MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams
{
}
pub trait IMTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn action(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, action)
    }
    unsafe fn setAction_(&self, action: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAction : action)
    }
    unsafe fn delayedActionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delayedActionTime)
    }
    unsafe fn setDelayedActionTime_(&self, delayedActionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelayedActionTime : delayedActionTime)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams(pub id);
impl std::ops::Deref for MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams {}
impl MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams").unwrap(), alloc)
        })
    }
}
impl IMTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams
    for MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams
{
}
impl PNSCopying for MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams {}
impl From<MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams>
    for MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams
{
    fn from(
        child: MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams,
    ) -> MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams {
        MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams(child.0)
    }
}
impl std::convert::TryFrom<MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams>
    for MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams,
    ) -> Result<MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams(parent.0))
        } else {
            Err ("This MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams cannot be downcasted to MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams" ,)
        }
    }
}
impl INSObject for MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams {}
impl PNSObject for MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams {}
impl IMTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams
    for MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams
{
}
pub trait IMTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn action(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, action)
    }
    unsafe fn setAction_(&self, action: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAction : action)
    }
    unsafe fn delayedActionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delayedActionTime)
    }
    unsafe fn setDelayedActionTime_(&self, delayedActionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelayedActionTime : delayedActionTime)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams(pub id);
impl std::ops::Deref for MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams {}
impl MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams {}
impl INSObject for MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams {}
impl PNSObject for MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams {}
impl std::convert::TryFrom<NSObject>
    for MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams" ,)
        }
    }
}
impl IMTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams
    for MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams
{
}
pub trait IMTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams:
    Sized + std::ops::Deref
{
    unsafe fn updateToken(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, updateToken)
    }
    unsafe fn setUpdateToken_(&self, updateToken: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUpdateToken : updateToken)
    }
    unsafe fn softwareVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, softwareVersion)
    }
    unsafe fn setSoftwareVersion_(&self, softwareVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSoftwareVersion : softwareVersion)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams(pub id);
impl std::ops::Deref for MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams {}
impl MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams").unwrap(), alloc)
        })
    }
}
impl IMTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams
    for MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams
{
}
impl PNSCopying for MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams {}
impl From<MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams>
    for MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams
{
    fn from(
        child: MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams,
    ) -> MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams {
        MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams(child.0)
    }
}
impl std::convert::TryFrom<MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams>
    for MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams,
    ) -> Result<MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams(parent.0))
        } else {
            Err ("This MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams cannot be downcasted to MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams" ,)
        }
    }
}
impl INSObject for MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams {}
impl PNSObject for MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams {}
impl IMTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams
    for MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams
{
}
pub trait IMTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams:
    Sized + std::ops::Deref
{
    unsafe fn updateToken(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, updateToken)
    }
    unsafe fn setUpdateToken_(&self, updateToken: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUpdateToken : updateToken)
    }
    unsafe fn softwareVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, softwareVersion)
    }
    unsafe fn setSoftwareVersion_(&self, softwareVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSoftwareVersion : softwareVersion)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams(pub id);
impl std::ops::Deref for MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams {}
impl MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams {}
impl INSObject for MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams {}
impl PNSObject for MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams {}
impl std::convert::TryFrom<NSObject>
    for MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams" ,)
        }
    }
}
impl IMTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams
    for MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams
{
}
pub trait IMTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams:
    Sized + std::ops::Deref
{
    unsafe fn providerNodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, providerNodeID)
    }
    unsafe fn setProviderNodeID_(&self, providerNodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProviderNodeID : providerNodeID)
    }
    unsafe fn vendorID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vendorID)
    }
    unsafe fn setVendorID_(&self, vendorID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVendorID : vendorID)
    }
    unsafe fn announcementReason(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, announcementReason)
    }
    unsafe fn setAnnouncementReason_(&self, announcementReason: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAnnouncementReason : announcementReason)
    }
    unsafe fn metadataForNode(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, metadataForNode)
    }
    unsafe fn setMetadataForNode_(&self, metadataForNode: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMetadataForNode : metadataForNode)
    }
    unsafe fn endpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn setEndpoint_(&self, endpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoint : endpoint)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams(pub id);
impl std::ops::Deref for MTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams {}
impl MTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams").unwrap(), alloc)
        })
    }
}
impl IMTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams
    for MTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams
{
}
impl PNSCopying for MTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams {}
impl From<MTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams>
    for MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams
{
    fn from(
        child: MTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams,
    ) -> MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams {
        MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams(child.0)
    }
}
impl std::convert::TryFrom<MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams>
    for MTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams,
    ) -> Result<MTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams(parent.0))
        } else {
            Err ("This MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams cannot be downcasted to MTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams" ,)
        }
    }
}
impl INSObject for MTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams {}
impl PNSObject for MTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams {}
impl IMTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams
    for MTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams
{
}
pub trait IMTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams:
    Sized + std::ops::Deref
{
    unsafe fn announcementReason(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, announcementReason)
    }
    unsafe fn setAnnouncementReason_(&self, announcementReason: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAnnouncementReason : announcementReason)
    }
    unsafe fn metadataForNode(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, metadataForNode)
    }
    unsafe fn setMetadataForNode_(&self, metadataForNode: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMetadataForNode : metadataForNode)
    }
    unsafe fn endpoint(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn setEndpoint_(&self, endpoint: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoint : endpoint)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
impl MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams_Deprecated
    for MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams
{
}
pub trait MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams_Deprecated:
    Sized + std::ops::Deref
{
    unsafe fn providerNodeId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, providerNodeId)
    }
    unsafe fn setProviderNodeId_(&self, providerNodeId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProviderNodeId : providerNodeId)
    }
    unsafe fn vendorId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vendorId)
    }
    unsafe fn setVendorId_(&self, vendorId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVendorId : vendorId)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGeneralCommissioningClusterArmFailSafeParams(pub id);
impl std::ops::Deref for MTRGeneralCommissioningClusterArmFailSafeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGeneralCommissioningClusterArmFailSafeParams {}
impl MTRGeneralCommissioningClusterArmFailSafeParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGeneralCommissioningClusterArmFailSafeParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGeneralCommissioningClusterArmFailSafeParams {}
impl INSObject for MTRGeneralCommissioningClusterArmFailSafeParams {}
impl PNSObject for MTRGeneralCommissioningClusterArmFailSafeParams {}
impl std::convert::TryFrom<NSObject> for MTRGeneralCommissioningClusterArmFailSafeParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGeneralCommissioningClusterArmFailSafeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGeneralCommissioningClusterArmFailSafeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGeneralCommissioningClusterArmFailSafeParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGeneralCommissioningClusterArmFailSafeParams" ,)
        }
    }
}
impl IMTRGeneralCommissioningClusterArmFailSafeParams
    for MTRGeneralCommissioningClusterArmFailSafeParams
{
}
pub trait IMTRGeneralCommissioningClusterArmFailSafeParams: Sized + std::ops::Deref {
    unsafe fn expiryLengthSeconds(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, expiryLengthSeconds)
    }
    unsafe fn setExpiryLengthSeconds_(&self, expiryLengthSeconds: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExpiryLengthSeconds : expiryLengthSeconds)
    }
    unsafe fn breadcrumb(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, breadcrumb)
    }
    unsafe fn setBreadcrumb_(&self, breadcrumb: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBreadcrumb : breadcrumb)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGeneralCommissioningClusterArmFailSafeResponseParams(pub id);
impl std::ops::Deref for MTRGeneralCommissioningClusterArmFailSafeResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGeneralCommissioningClusterArmFailSafeResponseParams {}
impl MTRGeneralCommissioningClusterArmFailSafeResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGeneralCommissioningClusterArmFailSafeResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGeneralCommissioningClusterArmFailSafeResponseParams {}
impl INSObject for MTRGeneralCommissioningClusterArmFailSafeResponseParams {}
impl PNSObject for MTRGeneralCommissioningClusterArmFailSafeResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRGeneralCommissioningClusterArmFailSafeResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGeneralCommissioningClusterArmFailSafeResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGeneralCommissioningClusterArmFailSafeResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGeneralCommissioningClusterArmFailSafeResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGeneralCommissioningClusterArmFailSafeResponseParams" ,)
        }
    }
}
impl IMTRGeneralCommissioningClusterArmFailSafeResponseParams
    for MTRGeneralCommissioningClusterArmFailSafeResponseParams
{
}
pub trait IMTRGeneralCommissioningClusterArmFailSafeResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn errorCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, errorCode)
    }
    unsafe fn setErrorCode_(&self, errorCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setErrorCode : errorCode)
    }
    unsafe fn debugText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, debugText)
    }
    unsafe fn setDebugText_(&self, debugText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDebugText : debugText)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGeneralCommissioningClusterSetRegulatoryConfigParams(pub id);
impl std::ops::Deref for MTRGeneralCommissioningClusterSetRegulatoryConfigParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGeneralCommissioningClusterSetRegulatoryConfigParams {}
impl MTRGeneralCommissioningClusterSetRegulatoryConfigParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGeneralCommissioningClusterSetRegulatoryConfigParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGeneralCommissioningClusterSetRegulatoryConfigParams {}
impl INSObject for MTRGeneralCommissioningClusterSetRegulatoryConfigParams {}
impl PNSObject for MTRGeneralCommissioningClusterSetRegulatoryConfigParams {}
impl std::convert::TryFrom<NSObject> for MTRGeneralCommissioningClusterSetRegulatoryConfigParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGeneralCommissioningClusterSetRegulatoryConfigParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGeneralCommissioningClusterSetRegulatoryConfigParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGeneralCommissioningClusterSetRegulatoryConfigParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGeneralCommissioningClusterSetRegulatoryConfigParams" ,)
        }
    }
}
impl IMTRGeneralCommissioningClusterSetRegulatoryConfigParams
    for MTRGeneralCommissioningClusterSetRegulatoryConfigParams
{
}
pub trait IMTRGeneralCommissioningClusterSetRegulatoryConfigParams:
    Sized + std::ops::Deref
{
    unsafe fn getNewRegulatoryConfig(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewRegulatoryConfig)
    }
    unsafe fn setNewRegulatoryConfig_(&self, newRegulatoryConfig: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewRegulatoryConfig : newRegulatoryConfig)
    }
    unsafe fn countryCode(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, countryCode)
    }
    unsafe fn setCountryCode_(&self, countryCode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCountryCode : countryCode)
    }
    unsafe fn breadcrumb(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, breadcrumb)
    }
    unsafe fn setBreadcrumb_(&self, breadcrumb: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBreadcrumb : breadcrumb)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGeneralCommissioningClusterSetRegulatoryConfigResponseParams(pub id);
impl std::ops::Deref for MTRGeneralCommissioningClusterSetRegulatoryConfigResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGeneralCommissioningClusterSetRegulatoryConfigResponseParams {}
impl MTRGeneralCommissioningClusterSetRegulatoryConfigResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGeneralCommissioningClusterSetRegulatoryConfigResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGeneralCommissioningClusterSetRegulatoryConfigResponseParams {}
impl INSObject for MTRGeneralCommissioningClusterSetRegulatoryConfigResponseParams {}
impl PNSObject for MTRGeneralCommissioningClusterSetRegulatoryConfigResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRGeneralCommissioningClusterSetRegulatoryConfigResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGeneralCommissioningClusterSetRegulatoryConfigResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGeneralCommissioningClusterSetRegulatoryConfigResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGeneralCommissioningClusterSetRegulatoryConfigResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGeneralCommissioningClusterSetRegulatoryConfigResponseParams" ,)
        }
    }
}
impl IMTRGeneralCommissioningClusterSetRegulatoryConfigResponseParams
    for MTRGeneralCommissioningClusterSetRegulatoryConfigResponseParams
{
}
pub trait IMTRGeneralCommissioningClusterSetRegulatoryConfigResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn errorCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, errorCode)
    }
    unsafe fn setErrorCode_(&self, errorCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setErrorCode : errorCode)
    }
    unsafe fn debugText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, debugText)
    }
    unsafe fn setDebugText_(&self, debugText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDebugText : debugText)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGeneralCommissioningClusterCommissioningCompleteParams(pub id);
impl std::ops::Deref for MTRGeneralCommissioningClusterCommissioningCompleteParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGeneralCommissioningClusterCommissioningCompleteParams {}
impl MTRGeneralCommissioningClusterCommissioningCompleteParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGeneralCommissioningClusterCommissioningCompleteParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGeneralCommissioningClusterCommissioningCompleteParams {}
impl INSObject for MTRGeneralCommissioningClusterCommissioningCompleteParams {}
impl PNSObject for MTRGeneralCommissioningClusterCommissioningCompleteParams {}
impl std::convert::TryFrom<NSObject> for MTRGeneralCommissioningClusterCommissioningCompleteParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGeneralCommissioningClusterCommissioningCompleteParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGeneralCommissioningClusterCommissioningCompleteParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGeneralCommissioningClusterCommissioningCompleteParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGeneralCommissioningClusterCommissioningCompleteParams" ,)
        }
    }
}
impl IMTRGeneralCommissioningClusterCommissioningCompleteParams
    for MTRGeneralCommissioningClusterCommissioningCompleteParams
{
}
pub trait IMTRGeneralCommissioningClusterCommissioningCompleteParams:
    Sized + std::ops::Deref
{
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGeneralCommissioningClusterCommissioningCompleteResponseParams(pub id);
impl std::ops::Deref for MTRGeneralCommissioningClusterCommissioningCompleteResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGeneralCommissioningClusterCommissioningCompleteResponseParams {}
impl MTRGeneralCommissioningClusterCommissioningCompleteResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGeneralCommissioningClusterCommissioningCompleteResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGeneralCommissioningClusterCommissioningCompleteResponseParams {}
impl INSObject for MTRGeneralCommissioningClusterCommissioningCompleteResponseParams {}
impl PNSObject for MTRGeneralCommissioningClusterCommissioningCompleteResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRGeneralCommissioningClusterCommissioningCompleteResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGeneralCommissioningClusterCommissioningCompleteResponseParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGeneralCommissioningClusterCommissioningCompleteResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGeneralCommissioningClusterCommissioningCompleteResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGeneralCommissioningClusterCommissioningCompleteResponseParams" ,)
        }
    }
}
impl IMTRGeneralCommissioningClusterCommissioningCompleteResponseParams
    for MTRGeneralCommissioningClusterCommissioningCompleteResponseParams
{
}
pub trait IMTRGeneralCommissioningClusterCommissioningCompleteResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn errorCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, errorCode)
    }
    unsafe fn setErrorCode_(&self, errorCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setErrorCode : errorCode)
    }
    unsafe fn debugText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, debugText)
    }
    unsafe fn setDebugText_(&self, debugText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDebugText : debugText)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGeneralCommissioningClusterSetTCAcknowledgementsParams(pub id);
impl std::ops::Deref for MTRGeneralCommissioningClusterSetTCAcknowledgementsParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGeneralCommissioningClusterSetTCAcknowledgementsParams {}
impl MTRGeneralCommissioningClusterSetTCAcknowledgementsParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGeneralCommissioningClusterSetTCAcknowledgementsParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGeneralCommissioningClusterSetTCAcknowledgementsParams {}
impl INSObject for MTRGeneralCommissioningClusterSetTCAcknowledgementsParams {}
impl PNSObject for MTRGeneralCommissioningClusterSetTCAcknowledgementsParams {}
impl std::convert::TryFrom<NSObject> for MTRGeneralCommissioningClusterSetTCAcknowledgementsParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGeneralCommissioningClusterSetTCAcknowledgementsParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGeneralCommissioningClusterSetTCAcknowledgementsParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGeneralCommissioningClusterSetTCAcknowledgementsParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGeneralCommissioningClusterSetTCAcknowledgementsParams" ,)
        }
    }
}
impl IMTRGeneralCommissioningClusterSetTCAcknowledgementsParams
    for MTRGeneralCommissioningClusterSetTCAcknowledgementsParams
{
}
pub trait IMTRGeneralCommissioningClusterSetTCAcknowledgementsParams:
    Sized + std::ops::Deref
{
    unsafe fn tcVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tcVersion)
    }
    unsafe fn setTcVersion_(&self, tcVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTcVersion : tcVersion)
    }
    unsafe fn tcUserResponse(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tcUserResponse)
    }
    unsafe fn setTcUserResponse_(&self, tcUserResponse: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTcUserResponse : tcUserResponse)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGeneralCommissioningClusterSetTCAcknowledgementsResponseParams(pub id);
impl std::ops::Deref for MTRGeneralCommissioningClusterSetTCAcknowledgementsResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGeneralCommissioningClusterSetTCAcknowledgementsResponseParams {}
impl MTRGeneralCommissioningClusterSetTCAcknowledgementsResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGeneralCommissioningClusterSetTCAcknowledgementsResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGeneralCommissioningClusterSetTCAcknowledgementsResponseParams {}
impl INSObject for MTRGeneralCommissioningClusterSetTCAcknowledgementsResponseParams {}
impl PNSObject for MTRGeneralCommissioningClusterSetTCAcknowledgementsResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRGeneralCommissioningClusterSetTCAcknowledgementsResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGeneralCommissioningClusterSetTCAcknowledgementsResponseParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGeneralCommissioningClusterSetTCAcknowledgementsResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGeneralCommissioningClusterSetTCAcknowledgementsResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGeneralCommissioningClusterSetTCAcknowledgementsResponseParams" ,)
        }
    }
}
impl IMTRGeneralCommissioningClusterSetTCAcknowledgementsResponseParams
    for MTRGeneralCommissioningClusterSetTCAcknowledgementsResponseParams
{
}
pub trait IMTRGeneralCommissioningClusterSetTCAcknowledgementsResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn errorCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, errorCode)
    }
    unsafe fn setErrorCode_(&self, errorCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setErrorCode : errorCode)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRNetworkCommissioningClusterScanNetworksParams(pub id);
impl std::ops::Deref for MTRNetworkCommissioningClusterScanNetworksParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRNetworkCommissioningClusterScanNetworksParams {}
impl MTRNetworkCommissioningClusterScanNetworksParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterScanNetworksParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRNetworkCommissioningClusterScanNetworksParams {}
impl INSObject for MTRNetworkCommissioningClusterScanNetworksParams {}
impl PNSObject for MTRNetworkCommissioningClusterScanNetworksParams {}
impl std::convert::TryFrom<NSObject> for MTRNetworkCommissioningClusterScanNetworksParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRNetworkCommissioningClusterScanNetworksParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterScanNetworksParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRNetworkCommissioningClusterScanNetworksParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRNetworkCommissioningClusterScanNetworksParams" ,)
        }
    }
}
impl IMTRNetworkCommissioningClusterScanNetworksParams
    for MTRNetworkCommissioningClusterScanNetworksParams
{
}
pub trait IMTRNetworkCommissioningClusterScanNetworksParams: Sized + std::ops::Deref {
    unsafe fn ssid(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ssid)
    }
    unsafe fn setSsid_(&self, ssid: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSsid : ssid)
    }
    unsafe fn breadcrumb(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, breadcrumb)
    }
    unsafe fn setBreadcrumb_(&self, breadcrumb: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBreadcrumb : breadcrumb)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRNetworkCommissioningClusterScanNetworksResponseParams(pub id);
impl std::ops::Deref for MTRNetworkCommissioningClusterScanNetworksResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRNetworkCommissioningClusterScanNetworksResponseParams {}
impl MTRNetworkCommissioningClusterScanNetworksResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterScanNetworksResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRNetworkCommissioningClusterScanNetworksResponseParams {}
impl INSObject for MTRNetworkCommissioningClusterScanNetworksResponseParams {}
impl PNSObject for MTRNetworkCommissioningClusterScanNetworksResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRNetworkCommissioningClusterScanNetworksResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRNetworkCommissioningClusterScanNetworksResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterScanNetworksResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRNetworkCommissioningClusterScanNetworksResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRNetworkCommissioningClusterScanNetworksResponseParams" ,)
        }
    }
}
impl IMTRNetworkCommissioningClusterScanNetworksResponseParams
    for MTRNetworkCommissioningClusterScanNetworksResponseParams
{
}
pub trait IMTRNetworkCommissioningClusterScanNetworksResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn networkingStatus(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkingStatus)
    }
    unsafe fn setNetworkingStatus_(&self, networkingStatus: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNetworkingStatus : networkingStatus)
    }
    unsafe fn debugText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, debugText)
    }
    unsafe fn setDebugText_(&self, debugText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDebugText : debugText)
    }
    unsafe fn wiFiScanResults(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, wiFiScanResults)
    }
    unsafe fn setWiFiScanResults_(&self, wiFiScanResults: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWiFiScanResults : wiFiScanResults)
    }
    unsafe fn threadScanResults(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, threadScanResults)
    }
    unsafe fn setThreadScanResults_(&self, threadScanResults: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setThreadScanResults : threadScanResults)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams(pub id);
impl std::ops::Deref for MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams {}
impl MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams {}
impl INSObject for MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams {}
impl PNSObject for MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams {}
impl std::convert::TryFrom<NSObject>
    for MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams" ,)
        }
    }
}
impl IMTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams
    for MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams
{
}
pub trait IMTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams:
    Sized + std::ops::Deref
{
    unsafe fn ssid(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ssid)
    }
    unsafe fn setSsid_(&self, ssid: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSsid : ssid)
    }
    unsafe fn credentials(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credentials)
    }
    unsafe fn setCredentials_(&self, credentials: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentials : credentials)
    }
    unsafe fn breadcrumb(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, breadcrumb)
    }
    unsafe fn setBreadcrumb_(&self, breadcrumb: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBreadcrumb : breadcrumb)
    }
    unsafe fn networkIdentity(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkIdentity)
    }
    unsafe fn setNetworkIdentity_(&self, networkIdentity: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNetworkIdentity : networkIdentity)
    }
    unsafe fn clientIdentifier(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, clientIdentifier)
    }
    unsafe fn setClientIdentifier_(&self, clientIdentifier: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setClientIdentifier : clientIdentifier)
    }
    unsafe fn possessionNonce(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, possessionNonce)
    }
    unsafe fn setPossessionNonce_(&self, possessionNonce: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPossessionNonce : possessionNonce)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams(pub id);
impl std::ops::Deref for MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams {}
impl MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams {}
impl INSObject for MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams {}
impl PNSObject for MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams {}
impl std::convert::TryFrom<NSObject>
    for MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams" ,)
        }
    }
}
impl IMTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams
    for MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams
{
}
pub trait IMTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams:
    Sized + std::ops::Deref
{
    unsafe fn operationalDataset(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationalDataset)
    }
    unsafe fn setOperationalDataset_(&self, operationalDataset: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationalDataset : operationalDataset)
    }
    unsafe fn breadcrumb(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, breadcrumb)
    }
    unsafe fn setBreadcrumb_(&self, breadcrumb: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBreadcrumb : breadcrumb)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRNetworkCommissioningClusterRemoveNetworkParams(pub id);
impl std::ops::Deref for MTRNetworkCommissioningClusterRemoveNetworkParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRNetworkCommissioningClusterRemoveNetworkParams {}
impl MTRNetworkCommissioningClusterRemoveNetworkParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterRemoveNetworkParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRNetworkCommissioningClusterRemoveNetworkParams {}
impl INSObject for MTRNetworkCommissioningClusterRemoveNetworkParams {}
impl PNSObject for MTRNetworkCommissioningClusterRemoveNetworkParams {}
impl std::convert::TryFrom<NSObject> for MTRNetworkCommissioningClusterRemoveNetworkParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRNetworkCommissioningClusterRemoveNetworkParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterRemoveNetworkParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRNetworkCommissioningClusterRemoveNetworkParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRNetworkCommissioningClusterRemoveNetworkParams" ,)
        }
    }
}
impl IMTRNetworkCommissioningClusterRemoveNetworkParams
    for MTRNetworkCommissioningClusterRemoveNetworkParams
{
}
pub trait IMTRNetworkCommissioningClusterRemoveNetworkParams: Sized + std::ops::Deref {
    unsafe fn networkID(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkID)
    }
    unsafe fn setNetworkID_(&self, networkID: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNetworkID : networkID)
    }
    unsafe fn breadcrumb(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, breadcrumb)
    }
    unsafe fn setBreadcrumb_(&self, breadcrumb: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBreadcrumb : breadcrumb)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRNetworkCommissioningClusterNetworkConfigResponseParams(pub id);
impl std::ops::Deref for MTRNetworkCommissioningClusterNetworkConfigResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRNetworkCommissioningClusterNetworkConfigResponseParams {}
impl MTRNetworkCommissioningClusterNetworkConfigResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterNetworkConfigResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRNetworkCommissioningClusterNetworkConfigResponseParams {}
impl INSObject for MTRNetworkCommissioningClusterNetworkConfigResponseParams {}
impl PNSObject for MTRNetworkCommissioningClusterNetworkConfigResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRNetworkCommissioningClusterNetworkConfigResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRNetworkCommissioningClusterNetworkConfigResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterNetworkConfigResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRNetworkCommissioningClusterNetworkConfigResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRNetworkCommissioningClusterNetworkConfigResponseParams" ,)
        }
    }
}
impl IMTRNetworkCommissioningClusterNetworkConfigResponseParams
    for MTRNetworkCommissioningClusterNetworkConfigResponseParams
{
}
pub trait IMTRNetworkCommissioningClusterNetworkConfigResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn networkingStatus(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkingStatus)
    }
    unsafe fn setNetworkingStatus_(&self, networkingStatus: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNetworkingStatus : networkingStatus)
    }
    unsafe fn debugText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, debugText)
    }
    unsafe fn setDebugText_(&self, debugText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDebugText : debugText)
    }
    unsafe fn networkIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkIndex)
    }
    unsafe fn setNetworkIndex_(&self, networkIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNetworkIndex : networkIndex)
    }
    unsafe fn clientIdentity(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, clientIdentity)
    }
    unsafe fn setClientIdentity_(&self, clientIdentity: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setClientIdentity : clientIdentity)
    }
    unsafe fn possessionSignature(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, possessionSignature)
    }
    unsafe fn setPossessionSignature_(&self, possessionSignature: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPossessionSignature : possessionSignature)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRNetworkCommissioningClusterConnectNetworkParams(pub id);
impl std::ops::Deref for MTRNetworkCommissioningClusterConnectNetworkParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRNetworkCommissioningClusterConnectNetworkParams {}
impl MTRNetworkCommissioningClusterConnectNetworkParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterConnectNetworkParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRNetworkCommissioningClusterConnectNetworkParams {}
impl INSObject for MTRNetworkCommissioningClusterConnectNetworkParams {}
impl PNSObject for MTRNetworkCommissioningClusterConnectNetworkParams {}
impl std::convert::TryFrom<NSObject> for MTRNetworkCommissioningClusterConnectNetworkParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRNetworkCommissioningClusterConnectNetworkParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterConnectNetworkParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRNetworkCommissioningClusterConnectNetworkParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRNetworkCommissioningClusterConnectNetworkParams" ,)
        }
    }
}
impl IMTRNetworkCommissioningClusterConnectNetworkParams
    for MTRNetworkCommissioningClusterConnectNetworkParams
{
}
pub trait IMTRNetworkCommissioningClusterConnectNetworkParams: Sized + std::ops::Deref {
    unsafe fn networkID(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkID)
    }
    unsafe fn setNetworkID_(&self, networkID: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNetworkID : networkID)
    }
    unsafe fn breadcrumb(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, breadcrumb)
    }
    unsafe fn setBreadcrumb_(&self, breadcrumb: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBreadcrumb : breadcrumb)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRNetworkCommissioningClusterConnectNetworkResponseParams(pub id);
impl std::ops::Deref for MTRNetworkCommissioningClusterConnectNetworkResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRNetworkCommissioningClusterConnectNetworkResponseParams {}
impl MTRNetworkCommissioningClusterConnectNetworkResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterConnectNetworkResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRNetworkCommissioningClusterConnectNetworkResponseParams {}
impl INSObject for MTRNetworkCommissioningClusterConnectNetworkResponseParams {}
impl PNSObject for MTRNetworkCommissioningClusterConnectNetworkResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRNetworkCommissioningClusterConnectNetworkResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRNetworkCommissioningClusterConnectNetworkResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterConnectNetworkResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRNetworkCommissioningClusterConnectNetworkResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRNetworkCommissioningClusterConnectNetworkResponseParams" ,)
        }
    }
}
impl IMTRNetworkCommissioningClusterConnectNetworkResponseParams
    for MTRNetworkCommissioningClusterConnectNetworkResponseParams
{
}
pub trait IMTRNetworkCommissioningClusterConnectNetworkResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn networkingStatus(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkingStatus)
    }
    unsafe fn setNetworkingStatus_(&self, networkingStatus: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNetworkingStatus : networkingStatus)
    }
    unsafe fn debugText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, debugText)
    }
    unsafe fn setDebugText_(&self, debugText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDebugText : debugText)
    }
    unsafe fn errorValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, errorValue)
    }
    unsafe fn setErrorValue_(&self, errorValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setErrorValue : errorValue)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRNetworkCommissioningClusterReorderNetworkParams(pub id);
impl std::ops::Deref for MTRNetworkCommissioningClusterReorderNetworkParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRNetworkCommissioningClusterReorderNetworkParams {}
impl MTRNetworkCommissioningClusterReorderNetworkParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterReorderNetworkParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRNetworkCommissioningClusterReorderNetworkParams {}
impl INSObject for MTRNetworkCommissioningClusterReorderNetworkParams {}
impl PNSObject for MTRNetworkCommissioningClusterReorderNetworkParams {}
impl std::convert::TryFrom<NSObject> for MTRNetworkCommissioningClusterReorderNetworkParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRNetworkCommissioningClusterReorderNetworkParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterReorderNetworkParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRNetworkCommissioningClusterReorderNetworkParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRNetworkCommissioningClusterReorderNetworkParams" ,)
        }
    }
}
impl IMTRNetworkCommissioningClusterReorderNetworkParams
    for MTRNetworkCommissioningClusterReorderNetworkParams
{
}
pub trait IMTRNetworkCommissioningClusterReorderNetworkParams: Sized + std::ops::Deref {
    unsafe fn networkID(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkID)
    }
    unsafe fn setNetworkID_(&self, networkID: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNetworkID : networkID)
    }
    unsafe fn networkIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkIndex)
    }
    unsafe fn setNetworkIndex_(&self, networkIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNetworkIndex : networkIndex)
    }
    unsafe fn breadcrumb(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, breadcrumb)
    }
    unsafe fn setBreadcrumb_(&self, breadcrumb: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBreadcrumb : breadcrumb)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRNetworkCommissioningClusterQueryIdentityParams(pub id);
impl std::ops::Deref for MTRNetworkCommissioningClusterQueryIdentityParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRNetworkCommissioningClusterQueryIdentityParams {}
impl MTRNetworkCommissioningClusterQueryIdentityParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterQueryIdentityParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRNetworkCommissioningClusterQueryIdentityParams {}
impl INSObject for MTRNetworkCommissioningClusterQueryIdentityParams {}
impl PNSObject for MTRNetworkCommissioningClusterQueryIdentityParams {}
impl std::convert::TryFrom<NSObject> for MTRNetworkCommissioningClusterQueryIdentityParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRNetworkCommissioningClusterQueryIdentityParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterQueryIdentityParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRNetworkCommissioningClusterQueryIdentityParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRNetworkCommissioningClusterQueryIdentityParams" ,)
        }
    }
}
impl IMTRNetworkCommissioningClusterQueryIdentityParams
    for MTRNetworkCommissioningClusterQueryIdentityParams
{
}
pub trait IMTRNetworkCommissioningClusterQueryIdentityParams: Sized + std::ops::Deref {
    unsafe fn keyIdentifier(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, keyIdentifier)
    }
    unsafe fn setKeyIdentifier_(&self, keyIdentifier: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setKeyIdentifier : keyIdentifier)
    }
    unsafe fn possessionNonce(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, possessionNonce)
    }
    unsafe fn setPossessionNonce_(&self, possessionNonce: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPossessionNonce : possessionNonce)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRNetworkCommissioningClusterQueryIdentityResponseParams(pub id);
impl std::ops::Deref for MTRNetworkCommissioningClusterQueryIdentityResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRNetworkCommissioningClusterQueryIdentityResponseParams {}
impl MTRNetworkCommissioningClusterQueryIdentityResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterQueryIdentityResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRNetworkCommissioningClusterQueryIdentityResponseParams {}
impl INSObject for MTRNetworkCommissioningClusterQueryIdentityResponseParams {}
impl PNSObject for MTRNetworkCommissioningClusterQueryIdentityResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRNetworkCommissioningClusterQueryIdentityResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRNetworkCommissioningClusterQueryIdentityResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRNetworkCommissioningClusterQueryIdentityResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRNetworkCommissioningClusterQueryIdentityResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRNetworkCommissioningClusterQueryIdentityResponseParams" ,)
        }
    }
}
impl IMTRNetworkCommissioningClusterQueryIdentityResponseParams
    for MTRNetworkCommissioningClusterQueryIdentityResponseParams
{
}
pub trait IMTRNetworkCommissioningClusterQueryIdentityResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn identity(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, identity)
    }
    unsafe fn setIdentity_(&self, identity: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIdentity : identity)
    }
    unsafe fn possessionSignature(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, possessionSignature)
    }
    unsafe fn setPossessionSignature_(&self, possessionSignature: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPossessionSignature : possessionSignature)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDiagnosticLogsClusterRetrieveLogsRequestParams(pub id);
impl std::ops::Deref for MTRDiagnosticLogsClusterRetrieveLogsRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDiagnosticLogsClusterRetrieveLogsRequestParams {}
impl MTRDiagnosticLogsClusterRetrieveLogsRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDiagnosticLogsClusterRetrieveLogsRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDiagnosticLogsClusterRetrieveLogsRequestParams {}
impl INSObject for MTRDiagnosticLogsClusterRetrieveLogsRequestParams {}
impl PNSObject for MTRDiagnosticLogsClusterRetrieveLogsRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRDiagnosticLogsClusterRetrieveLogsRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDiagnosticLogsClusterRetrieveLogsRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDiagnosticLogsClusterRetrieveLogsRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDiagnosticLogsClusterRetrieveLogsRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDiagnosticLogsClusterRetrieveLogsRequestParams" ,)
        }
    }
}
impl IMTRDiagnosticLogsClusterRetrieveLogsRequestParams
    for MTRDiagnosticLogsClusterRetrieveLogsRequestParams
{
}
pub trait IMTRDiagnosticLogsClusterRetrieveLogsRequestParams: Sized + std::ops::Deref {
    unsafe fn intent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, intent)
    }
    unsafe fn setIntent_(&self, intent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIntent : intent)
    }
    unsafe fn requestedProtocol(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requestedProtocol)
    }
    unsafe fn setRequestedProtocol_(&self, requestedProtocol: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRequestedProtocol : requestedProtocol)
    }
    unsafe fn transferFileDesignator(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transferFileDesignator)
    }
    unsafe fn setTransferFileDesignator_(&self, transferFileDesignator: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransferFileDesignator : transferFileDesignator)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDiagnosticLogsClusterRetrieveLogsResponseParams(pub id);
impl std::ops::Deref for MTRDiagnosticLogsClusterRetrieveLogsResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDiagnosticLogsClusterRetrieveLogsResponseParams {}
impl MTRDiagnosticLogsClusterRetrieveLogsResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDiagnosticLogsClusterRetrieveLogsResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDiagnosticLogsClusterRetrieveLogsResponseParams {}
impl INSObject for MTRDiagnosticLogsClusterRetrieveLogsResponseParams {}
impl PNSObject for MTRDiagnosticLogsClusterRetrieveLogsResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRDiagnosticLogsClusterRetrieveLogsResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDiagnosticLogsClusterRetrieveLogsResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDiagnosticLogsClusterRetrieveLogsResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDiagnosticLogsClusterRetrieveLogsResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDiagnosticLogsClusterRetrieveLogsResponseParams" ,)
        }
    }
}
impl IMTRDiagnosticLogsClusterRetrieveLogsResponseParams
    for MTRDiagnosticLogsClusterRetrieveLogsResponseParams
{
}
pub trait IMTRDiagnosticLogsClusterRetrieveLogsResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn logContent(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, logContent)
    }
    unsafe fn setLogContent_(&self, logContent: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLogContent : logContent)
    }
    unsafe fn utcTimeStamp(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, utcTimeStamp)
    }
    unsafe fn setUtcTimeStamp_(&self, utcTimeStamp: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUtcTimeStamp : utcTimeStamp)
    }
    unsafe fn timeSinceBoot(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeSinceBoot)
    }
    unsafe fn setTimeSinceBoot_(&self, timeSinceBoot: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeSinceBoot : timeSinceBoot)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
impl MTRDiagnosticLogsClusterRetrieveLogsResponseParams_Deprecated
    for MTRDiagnosticLogsClusterRetrieveLogsResponseParams
{
}
pub trait MTRDiagnosticLogsClusterRetrieveLogsResponseParams_Deprecated:
    Sized + std::ops::Deref
{
    unsafe fn content(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, content)
    }
    unsafe fn setContent_(&self, content: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setContent : content)
    }
    unsafe fn timeStamp(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeStamp)
    }
    unsafe fn setTimeStamp_(&self, timeStamp: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeStamp : timeStamp)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGeneralDiagnosticsClusterTestEventTriggerParams(pub id);
impl std::ops::Deref for MTRGeneralDiagnosticsClusterTestEventTriggerParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGeneralDiagnosticsClusterTestEventTriggerParams {}
impl MTRGeneralDiagnosticsClusterTestEventTriggerParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterTestEventTriggerParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGeneralDiagnosticsClusterTestEventTriggerParams {}
impl INSObject for MTRGeneralDiagnosticsClusterTestEventTriggerParams {}
impl PNSObject for MTRGeneralDiagnosticsClusterTestEventTriggerParams {}
impl std::convert::TryFrom<NSObject> for MTRGeneralDiagnosticsClusterTestEventTriggerParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGeneralDiagnosticsClusterTestEventTriggerParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterTestEventTriggerParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGeneralDiagnosticsClusterTestEventTriggerParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGeneralDiagnosticsClusterTestEventTriggerParams" ,)
        }
    }
}
impl IMTRGeneralDiagnosticsClusterTestEventTriggerParams
    for MTRGeneralDiagnosticsClusterTestEventTriggerParams
{
}
pub trait IMTRGeneralDiagnosticsClusterTestEventTriggerParams: Sized + std::ops::Deref {
    unsafe fn enableKey(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, enableKey)
    }
    unsafe fn setEnableKey_(&self, enableKey: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEnableKey : enableKey)
    }
    unsafe fn eventTrigger(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, eventTrigger)
    }
    unsafe fn setEventTrigger_(&self, eventTrigger: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEventTrigger : eventTrigger)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGeneralDiagnosticsClusterTimeSnapshotParams(pub id);
impl std::ops::Deref for MTRGeneralDiagnosticsClusterTimeSnapshotParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGeneralDiagnosticsClusterTimeSnapshotParams {}
impl MTRGeneralDiagnosticsClusterTimeSnapshotParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterTimeSnapshotParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGeneralDiagnosticsClusterTimeSnapshotParams {}
impl INSObject for MTRGeneralDiagnosticsClusterTimeSnapshotParams {}
impl PNSObject for MTRGeneralDiagnosticsClusterTimeSnapshotParams {}
impl std::convert::TryFrom<NSObject> for MTRGeneralDiagnosticsClusterTimeSnapshotParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGeneralDiagnosticsClusterTimeSnapshotParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterTimeSnapshotParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGeneralDiagnosticsClusterTimeSnapshotParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGeneralDiagnosticsClusterTimeSnapshotParams" ,)
        }
    }
}
impl IMTRGeneralDiagnosticsClusterTimeSnapshotParams
    for MTRGeneralDiagnosticsClusterTimeSnapshotParams
{
}
pub trait IMTRGeneralDiagnosticsClusterTimeSnapshotParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGeneralDiagnosticsClusterTimeSnapshotResponseParams(pub id);
impl std::ops::Deref for MTRGeneralDiagnosticsClusterTimeSnapshotResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGeneralDiagnosticsClusterTimeSnapshotResponseParams {}
impl MTRGeneralDiagnosticsClusterTimeSnapshotResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterTimeSnapshotResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGeneralDiagnosticsClusterTimeSnapshotResponseParams {}
impl INSObject for MTRGeneralDiagnosticsClusterTimeSnapshotResponseParams {}
impl PNSObject for MTRGeneralDiagnosticsClusterTimeSnapshotResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRGeneralDiagnosticsClusterTimeSnapshotResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGeneralDiagnosticsClusterTimeSnapshotResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterTimeSnapshotResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGeneralDiagnosticsClusterTimeSnapshotResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGeneralDiagnosticsClusterTimeSnapshotResponseParams" ,)
        }
    }
}
impl IMTRGeneralDiagnosticsClusterTimeSnapshotResponseParams
    for MTRGeneralDiagnosticsClusterTimeSnapshotResponseParams
{
}
pub trait IMTRGeneralDiagnosticsClusterTimeSnapshotResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn systemTimeMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, systemTimeMs)
    }
    unsafe fn setSystemTimeMs_(&self, systemTimeMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSystemTimeMs : systemTimeMs)
    }
    unsafe fn posixTimeMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, posixTimeMs)
    }
    unsafe fn setPosixTimeMs_(&self, posixTimeMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPosixTimeMs : posixTimeMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGeneralDiagnosticsClusterPayloadTestRequestParams(pub id);
impl std::ops::Deref for MTRGeneralDiagnosticsClusterPayloadTestRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGeneralDiagnosticsClusterPayloadTestRequestParams {}
impl MTRGeneralDiagnosticsClusterPayloadTestRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterPayloadTestRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGeneralDiagnosticsClusterPayloadTestRequestParams {}
impl INSObject for MTRGeneralDiagnosticsClusterPayloadTestRequestParams {}
impl PNSObject for MTRGeneralDiagnosticsClusterPayloadTestRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRGeneralDiagnosticsClusterPayloadTestRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGeneralDiagnosticsClusterPayloadTestRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterPayloadTestRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGeneralDiagnosticsClusterPayloadTestRequestParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGeneralDiagnosticsClusterPayloadTestRequestParams" ,)
        }
    }
}
impl IMTRGeneralDiagnosticsClusterPayloadTestRequestParams
    for MTRGeneralDiagnosticsClusterPayloadTestRequestParams
{
}
pub trait IMTRGeneralDiagnosticsClusterPayloadTestRequestParams: Sized + std::ops::Deref {
    unsafe fn enableKey(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, enableKey)
    }
    unsafe fn setEnableKey_(&self, enableKey: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEnableKey : enableKey)
    }
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
    unsafe fn getCount(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getCount)
    }
    unsafe fn setCount_(&self, count: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCount : count)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGeneralDiagnosticsClusterPayloadTestResponseParams(pub id);
impl std::ops::Deref for MTRGeneralDiagnosticsClusterPayloadTestResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGeneralDiagnosticsClusterPayloadTestResponseParams {}
impl MTRGeneralDiagnosticsClusterPayloadTestResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterPayloadTestResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGeneralDiagnosticsClusterPayloadTestResponseParams {}
impl INSObject for MTRGeneralDiagnosticsClusterPayloadTestResponseParams {}
impl PNSObject for MTRGeneralDiagnosticsClusterPayloadTestResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRGeneralDiagnosticsClusterPayloadTestResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGeneralDiagnosticsClusterPayloadTestResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGeneralDiagnosticsClusterPayloadTestResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGeneralDiagnosticsClusterPayloadTestResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGeneralDiagnosticsClusterPayloadTestResponseParams" ,)
        }
    }
}
impl IMTRGeneralDiagnosticsClusterPayloadTestResponseParams
    for MTRGeneralDiagnosticsClusterPayloadTestResponseParams
{
}
pub trait IMTRGeneralDiagnosticsClusterPayloadTestResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn payload(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, payload)
    }
    unsafe fn setPayload_(&self, payload: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPayload : payload)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSoftwareDiagnosticsClusterResetWatermarksParams(pub id);
impl std::ops::Deref for MTRSoftwareDiagnosticsClusterResetWatermarksParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSoftwareDiagnosticsClusterResetWatermarksParams {}
impl MTRSoftwareDiagnosticsClusterResetWatermarksParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSoftwareDiagnosticsClusterResetWatermarksParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRSoftwareDiagnosticsClusterResetWatermarksParams {}
impl INSObject for MTRSoftwareDiagnosticsClusterResetWatermarksParams {}
impl PNSObject for MTRSoftwareDiagnosticsClusterResetWatermarksParams {}
impl std::convert::TryFrom<NSObject> for MTRSoftwareDiagnosticsClusterResetWatermarksParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRSoftwareDiagnosticsClusterResetWatermarksParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSoftwareDiagnosticsClusterResetWatermarksParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRSoftwareDiagnosticsClusterResetWatermarksParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRSoftwareDiagnosticsClusterResetWatermarksParams" ,)
        }
    }
}
impl IMTRSoftwareDiagnosticsClusterResetWatermarksParams
    for MTRSoftwareDiagnosticsClusterResetWatermarksParams
{
}
pub trait IMTRSoftwareDiagnosticsClusterResetWatermarksParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThreadNetworkDiagnosticsClusterResetCountsParams(pub id);
impl std::ops::Deref for MTRThreadNetworkDiagnosticsClusterResetCountsParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThreadNetworkDiagnosticsClusterResetCountsParams {}
impl MTRThreadNetworkDiagnosticsClusterResetCountsParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThreadNetworkDiagnosticsClusterResetCountsParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThreadNetworkDiagnosticsClusterResetCountsParams {}
impl INSObject for MTRThreadNetworkDiagnosticsClusterResetCountsParams {}
impl PNSObject for MTRThreadNetworkDiagnosticsClusterResetCountsParams {}
impl std::convert::TryFrom<NSObject> for MTRThreadNetworkDiagnosticsClusterResetCountsParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThreadNetworkDiagnosticsClusterResetCountsParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThreadNetworkDiagnosticsClusterResetCountsParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThreadNetworkDiagnosticsClusterResetCountsParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThreadNetworkDiagnosticsClusterResetCountsParams" ,)
        }
    }
}
impl IMTRThreadNetworkDiagnosticsClusterResetCountsParams
    for MTRThreadNetworkDiagnosticsClusterResetCountsParams
{
}
pub trait IMTRThreadNetworkDiagnosticsClusterResetCountsParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWiFiNetworkDiagnosticsClusterResetCountsParams(pub id);
impl std::ops::Deref for MTRWiFiNetworkDiagnosticsClusterResetCountsParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWiFiNetworkDiagnosticsClusterResetCountsParams {}
impl MTRWiFiNetworkDiagnosticsClusterResetCountsParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWiFiNetworkDiagnosticsClusterResetCountsParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWiFiNetworkDiagnosticsClusterResetCountsParams {}
impl INSObject for MTRWiFiNetworkDiagnosticsClusterResetCountsParams {}
impl PNSObject for MTRWiFiNetworkDiagnosticsClusterResetCountsParams {}
impl std::convert::TryFrom<NSObject> for MTRWiFiNetworkDiagnosticsClusterResetCountsParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWiFiNetworkDiagnosticsClusterResetCountsParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWiFiNetworkDiagnosticsClusterResetCountsParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWiFiNetworkDiagnosticsClusterResetCountsParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWiFiNetworkDiagnosticsClusterResetCountsParams" ,)
        }
    }
}
impl IMTRWiFiNetworkDiagnosticsClusterResetCountsParams
    for MTRWiFiNetworkDiagnosticsClusterResetCountsParams
{
}
pub trait IMTRWiFiNetworkDiagnosticsClusterResetCountsParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREthernetNetworkDiagnosticsClusterResetCountsParams(pub id);
impl std::ops::Deref for MTREthernetNetworkDiagnosticsClusterResetCountsParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREthernetNetworkDiagnosticsClusterResetCountsParams {}
impl MTREthernetNetworkDiagnosticsClusterResetCountsParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTREthernetNetworkDiagnosticsClusterResetCountsParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTREthernetNetworkDiagnosticsClusterResetCountsParams {}
impl INSObject for MTREthernetNetworkDiagnosticsClusterResetCountsParams {}
impl PNSObject for MTREthernetNetworkDiagnosticsClusterResetCountsParams {}
impl std::convert::TryFrom<NSObject> for MTREthernetNetworkDiagnosticsClusterResetCountsParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTREthernetNetworkDiagnosticsClusterResetCountsParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREthernetNetworkDiagnosticsClusterResetCountsParams").unwrap())
        };
        if is_kind_of {
            Ok(MTREthernetNetworkDiagnosticsClusterResetCountsParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTREthernetNetworkDiagnosticsClusterResetCountsParams" ,)
        }
    }
}
impl IMTREthernetNetworkDiagnosticsClusterResetCountsParams
    for MTREthernetNetworkDiagnosticsClusterResetCountsParams
{
}
pub trait IMTREthernetNetworkDiagnosticsClusterResetCountsParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimeSynchronizationClusterSetUTCTimeParams(pub id);
impl std::ops::Deref for MTRTimeSynchronizationClusterSetUTCTimeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimeSynchronizationClusterSetUTCTimeParams {}
impl MTRTimeSynchronizationClusterSetUTCTimeParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterSetUTCTimeParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRTimeSynchronizationClusterSetUTCTimeParams {}
impl INSObject for MTRTimeSynchronizationClusterSetUTCTimeParams {}
impl PNSObject for MTRTimeSynchronizationClusterSetUTCTimeParams {}
impl std::convert::TryFrom<NSObject> for MTRTimeSynchronizationClusterSetUTCTimeParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTimeSynchronizationClusterSetUTCTimeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterSetUTCTimeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTimeSynchronizationClusterSetUTCTimeParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTimeSynchronizationClusterSetUTCTimeParams" ,)
        }
    }
}
impl IMTRTimeSynchronizationClusterSetUTCTimeParams
    for MTRTimeSynchronizationClusterSetUTCTimeParams
{
}
pub trait IMTRTimeSynchronizationClusterSetUTCTimeParams: Sized + std::ops::Deref {
    unsafe fn utcTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, utcTime)
    }
    unsafe fn setUtcTime_(&self, utcTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUtcTime : utcTime)
    }
    unsafe fn granularity(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, granularity)
    }
    unsafe fn setGranularity_(&self, granularity: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGranularity : granularity)
    }
    unsafe fn timeSource(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeSource)
    }
    unsafe fn setTimeSource_(&self, timeSource: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeSource : timeSource)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimeSynchronizationClusterSetUtcTimeParams(pub id);
impl std::ops::Deref for MTRTimeSynchronizationClusterSetUtcTimeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimeSynchronizationClusterSetUtcTimeParams {}
impl MTRTimeSynchronizationClusterSetUtcTimeParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterSetUtcTimeParams").unwrap(), alloc) })
    }
}
impl IMTRTimeSynchronizationClusterSetUTCTimeParams
    for MTRTimeSynchronizationClusterSetUtcTimeParams
{
}
impl PNSCopying for MTRTimeSynchronizationClusterSetUtcTimeParams {}
impl From<MTRTimeSynchronizationClusterSetUtcTimeParams>
    for MTRTimeSynchronizationClusterSetUTCTimeParams
{
    fn from(
        child: MTRTimeSynchronizationClusterSetUtcTimeParams,
    ) -> MTRTimeSynchronizationClusterSetUTCTimeParams {
        MTRTimeSynchronizationClusterSetUTCTimeParams(child.0)
    }
}
impl std::convert::TryFrom<MTRTimeSynchronizationClusterSetUTCTimeParams>
    for MTRTimeSynchronizationClusterSetUtcTimeParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRTimeSynchronizationClusterSetUTCTimeParams,
    ) -> Result<MTRTimeSynchronizationClusterSetUtcTimeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterSetUtcTimeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTimeSynchronizationClusterSetUtcTimeParams(parent.0))
        } else {
            Err ("This MTRTimeSynchronizationClusterSetUTCTimeParams cannot be downcasted to MTRTimeSynchronizationClusterSetUtcTimeParams" ,)
        }
    }
}
impl INSObject for MTRTimeSynchronizationClusterSetUtcTimeParams {}
impl PNSObject for MTRTimeSynchronizationClusterSetUtcTimeParams {}
impl IMTRTimeSynchronizationClusterSetUtcTimeParams
    for MTRTimeSynchronizationClusterSetUtcTimeParams
{
}
pub trait IMTRTimeSynchronizationClusterSetUtcTimeParams: Sized + std::ops::Deref {
    unsafe fn utcTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, utcTime)
    }
    unsafe fn setUtcTime_(&self, utcTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUtcTime : utcTime)
    }
    unsafe fn granularity(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, granularity)
    }
    unsafe fn setGranularity_(&self, granularity: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGranularity : granularity)
    }
    unsafe fn timeSource(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeSource)
    }
    unsafe fn setTimeSource_(&self, timeSource: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeSource : timeSource)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimeSynchronizationClusterSetTrustedTimeSourceParams(pub id);
impl std::ops::Deref for MTRTimeSynchronizationClusterSetTrustedTimeSourceParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimeSynchronizationClusterSetTrustedTimeSourceParams {}
impl MTRTimeSynchronizationClusterSetTrustedTimeSourceParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterSetTrustedTimeSourceParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTimeSynchronizationClusterSetTrustedTimeSourceParams {}
impl INSObject for MTRTimeSynchronizationClusterSetTrustedTimeSourceParams {}
impl PNSObject for MTRTimeSynchronizationClusterSetTrustedTimeSourceParams {}
impl std::convert::TryFrom<NSObject> for MTRTimeSynchronizationClusterSetTrustedTimeSourceParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTimeSynchronizationClusterSetTrustedTimeSourceParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterSetTrustedTimeSourceParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTimeSynchronizationClusterSetTrustedTimeSourceParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTimeSynchronizationClusterSetTrustedTimeSourceParams" ,)
        }
    }
}
impl IMTRTimeSynchronizationClusterSetTrustedTimeSourceParams
    for MTRTimeSynchronizationClusterSetTrustedTimeSourceParams
{
}
pub trait IMTRTimeSynchronizationClusterSetTrustedTimeSourceParams:
    Sized + std::ops::Deref
{
    unsafe fn trustedTimeSource(
        &self,
    ) -> MTRTimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, trustedTimeSource)
    }
    unsafe fn setTrustedTimeSource_(
        &self,
        trustedTimeSource: MTRTimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTrustedTimeSource : trustedTimeSource)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimeSynchronizationClusterSetTimeZoneParams(pub id);
impl std::ops::Deref for MTRTimeSynchronizationClusterSetTimeZoneParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimeSynchronizationClusterSetTimeZoneParams {}
impl MTRTimeSynchronizationClusterSetTimeZoneParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterSetTimeZoneParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTimeSynchronizationClusterSetTimeZoneParams {}
impl INSObject for MTRTimeSynchronizationClusterSetTimeZoneParams {}
impl PNSObject for MTRTimeSynchronizationClusterSetTimeZoneParams {}
impl std::convert::TryFrom<NSObject> for MTRTimeSynchronizationClusterSetTimeZoneParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTimeSynchronizationClusterSetTimeZoneParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterSetTimeZoneParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTimeSynchronizationClusterSetTimeZoneParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTimeSynchronizationClusterSetTimeZoneParams" ,)
        }
    }
}
impl IMTRTimeSynchronizationClusterSetTimeZoneParams
    for MTRTimeSynchronizationClusterSetTimeZoneParams
{
}
pub trait IMTRTimeSynchronizationClusterSetTimeZoneParams: Sized + std::ops::Deref {
    unsafe fn timeZone(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeZone)
    }
    unsafe fn setTimeZone_(&self, timeZone: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeZone : timeZone)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimeSynchronizationClusterSetTimeZoneResponseParams(pub id);
impl std::ops::Deref for MTRTimeSynchronizationClusterSetTimeZoneResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimeSynchronizationClusterSetTimeZoneResponseParams {}
impl MTRTimeSynchronizationClusterSetTimeZoneResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterSetTimeZoneResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTimeSynchronizationClusterSetTimeZoneResponseParams {}
impl INSObject for MTRTimeSynchronizationClusterSetTimeZoneResponseParams {}
impl PNSObject for MTRTimeSynchronizationClusterSetTimeZoneResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRTimeSynchronizationClusterSetTimeZoneResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTimeSynchronizationClusterSetTimeZoneResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterSetTimeZoneResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTimeSynchronizationClusterSetTimeZoneResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTimeSynchronizationClusterSetTimeZoneResponseParams" ,)
        }
    }
}
impl IMTRTimeSynchronizationClusterSetTimeZoneResponseParams
    for MTRTimeSynchronizationClusterSetTimeZoneResponseParams
{
}
pub trait IMTRTimeSynchronizationClusterSetTimeZoneResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn dstOffsetRequired(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dstOffsetRequired)
    }
    unsafe fn setDstOffsetRequired_(&self, dstOffsetRequired: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDstOffsetRequired : dstOffsetRequired)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimeSynchronizationClusterSetDSTOffsetParams(pub id);
impl std::ops::Deref for MTRTimeSynchronizationClusterSetDSTOffsetParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimeSynchronizationClusterSetDSTOffsetParams {}
impl MTRTimeSynchronizationClusterSetDSTOffsetParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterSetDSTOffsetParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTimeSynchronizationClusterSetDSTOffsetParams {}
impl INSObject for MTRTimeSynchronizationClusterSetDSTOffsetParams {}
impl PNSObject for MTRTimeSynchronizationClusterSetDSTOffsetParams {}
impl std::convert::TryFrom<NSObject> for MTRTimeSynchronizationClusterSetDSTOffsetParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTimeSynchronizationClusterSetDSTOffsetParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterSetDSTOffsetParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTimeSynchronizationClusterSetDSTOffsetParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTimeSynchronizationClusterSetDSTOffsetParams" ,)
        }
    }
}
impl IMTRTimeSynchronizationClusterSetDSTOffsetParams
    for MTRTimeSynchronizationClusterSetDSTOffsetParams
{
}
pub trait IMTRTimeSynchronizationClusterSetDSTOffsetParams: Sized + std::ops::Deref {
    unsafe fn dstOffset(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dstOffset)
    }
    unsafe fn setDstOffset_(&self, dstOffset: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDstOffset : dstOffset)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimeSynchronizationClusterSetDefaultNTPParams(pub id);
impl std::ops::Deref for MTRTimeSynchronizationClusterSetDefaultNTPParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimeSynchronizationClusterSetDefaultNTPParams {}
impl MTRTimeSynchronizationClusterSetDefaultNTPParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterSetDefaultNTPParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTimeSynchronizationClusterSetDefaultNTPParams {}
impl INSObject for MTRTimeSynchronizationClusterSetDefaultNTPParams {}
impl PNSObject for MTRTimeSynchronizationClusterSetDefaultNTPParams {}
impl std::convert::TryFrom<NSObject> for MTRTimeSynchronizationClusterSetDefaultNTPParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTimeSynchronizationClusterSetDefaultNTPParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimeSynchronizationClusterSetDefaultNTPParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTimeSynchronizationClusterSetDefaultNTPParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTimeSynchronizationClusterSetDefaultNTPParams" ,)
        }
    }
}
impl IMTRTimeSynchronizationClusterSetDefaultNTPParams
    for MTRTimeSynchronizationClusterSetDefaultNTPParams
{
}
pub trait IMTRTimeSynchronizationClusterSetDefaultNTPParams: Sized + std::ops::Deref {
    unsafe fn defaultNTP(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, defaultNTP)
    }
    unsafe fn setDefaultNTP_(&self, defaultNTP: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDefaultNTP : defaultNTP)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBridgedDeviceBasicInformationClusterKeepActiveParams(pub id);
impl std::ops::Deref for MTRBridgedDeviceBasicInformationClusterKeepActiveParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBridgedDeviceBasicInformationClusterKeepActiveParams {}
impl MTRBridgedDeviceBasicInformationClusterKeepActiveParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicInformationClusterKeepActiveParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRBridgedDeviceBasicInformationClusterKeepActiveParams {}
impl INSObject for MTRBridgedDeviceBasicInformationClusterKeepActiveParams {}
impl PNSObject for MTRBridgedDeviceBasicInformationClusterKeepActiveParams {}
impl std::convert::TryFrom<NSObject> for MTRBridgedDeviceBasicInformationClusterKeepActiveParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRBridgedDeviceBasicInformationClusterKeepActiveParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBridgedDeviceBasicInformationClusterKeepActiveParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRBridgedDeviceBasicInformationClusterKeepActiveParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRBridgedDeviceBasicInformationClusterKeepActiveParams" ,)
        }
    }
}
impl IMTRBridgedDeviceBasicInformationClusterKeepActiveParams
    for MTRBridgedDeviceBasicInformationClusterKeepActiveParams
{
}
pub trait IMTRBridgedDeviceBasicInformationClusterKeepActiveParams:
    Sized + std::ops::Deref
{
    unsafe fn stayActiveDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stayActiveDuration)
    }
    unsafe fn setStayActiveDuration_(&self, stayActiveDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStayActiveDuration : stayActiveDuration)
    }
    unsafe fn timeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeoutMs)
    }
    unsafe fn setTimeoutMs_(&self, timeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeoutMs : timeoutMs)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAdministratorCommissioningClusterOpenCommissioningWindowParams(pub id);
impl std::ops::Deref for MTRAdministratorCommissioningClusterOpenCommissioningWindowParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAdministratorCommissioningClusterOpenCommissioningWindowParams {}
impl MTRAdministratorCommissioningClusterOpenCommissioningWindowParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAdministratorCommissioningClusterOpenCommissioningWindowParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRAdministratorCommissioningClusterOpenCommissioningWindowParams {}
impl INSObject for MTRAdministratorCommissioningClusterOpenCommissioningWindowParams {}
impl PNSObject for MTRAdministratorCommissioningClusterOpenCommissioningWindowParams {}
impl std::convert::TryFrom<NSObject>
    for MTRAdministratorCommissioningClusterOpenCommissioningWindowParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRAdministratorCommissioningClusterOpenCommissioningWindowParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAdministratorCommissioningClusterOpenCommissioningWindowParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRAdministratorCommissioningClusterOpenCommissioningWindowParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRAdministratorCommissioningClusterOpenCommissioningWindowParams" ,)
        }
    }
}
impl IMTRAdministratorCommissioningClusterOpenCommissioningWindowParams
    for MTRAdministratorCommissioningClusterOpenCommissioningWindowParams
{
}
pub trait IMTRAdministratorCommissioningClusterOpenCommissioningWindowParams:
    Sized + std::ops::Deref
{
    unsafe fn commissioningTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, commissioningTimeout)
    }
    unsafe fn setCommissioningTimeout_(&self, commissioningTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCommissioningTimeout : commissioningTimeout)
    }
    unsafe fn pakePasscodeVerifier(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pakePasscodeVerifier)
    }
    unsafe fn setPakePasscodeVerifier_(&self, pakePasscodeVerifier: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPakePasscodeVerifier : pakePasscodeVerifier)
    }
    unsafe fn discriminator(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, discriminator)
    }
    unsafe fn setDiscriminator_(&self, discriminator: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDiscriminator : discriminator)
    }
    unsafe fn iterations(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, iterations)
    }
    unsafe fn setIterations_(&self, iterations: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIterations : iterations)
    }
    unsafe fn salt(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, salt)
    }
    unsafe fn setSalt_(&self, salt: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSalt : salt)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
impl MTRAdministratorCommissioningClusterOpenCommissioningWindowParams_Deprecated
    for MTRAdministratorCommissioningClusterOpenCommissioningWindowParams
{
}
pub trait MTRAdministratorCommissioningClusterOpenCommissioningWindowParams_Deprecated:
    Sized + std::ops::Deref
{
    unsafe fn pakeVerifier(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pakeVerifier)
    }
    unsafe fn setPakeVerifier_(&self, pakeVerifier: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPakeVerifier : pakeVerifier)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams(pub id);
impl std::ops::Deref for MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message
    for MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams
{
}
impl MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams {}
impl INSObject for MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams {}
impl PNSObject for MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams {}
impl std::convert::TryFrom<NSObject>
    for MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams" ,)
        }
    }
}
impl IMTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams
    for MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams
{
}
pub trait IMTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams:
    Sized + std::ops::Deref
{
    unsafe fn commissioningTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, commissioningTimeout)
    }
    unsafe fn setCommissioningTimeout_(&self, commissioningTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCommissioningTimeout : commissioningTimeout)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAdministratorCommissioningClusterRevokeCommissioningParams(pub id);
impl std::ops::Deref for MTRAdministratorCommissioningClusterRevokeCommissioningParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAdministratorCommissioningClusterRevokeCommissioningParams {}
impl MTRAdministratorCommissioningClusterRevokeCommissioningParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAdministratorCommissioningClusterRevokeCommissioningParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRAdministratorCommissioningClusterRevokeCommissioningParams {}
impl INSObject for MTRAdministratorCommissioningClusterRevokeCommissioningParams {}
impl PNSObject for MTRAdministratorCommissioningClusterRevokeCommissioningParams {}
impl std::convert::TryFrom<NSObject>
    for MTRAdministratorCommissioningClusterRevokeCommissioningParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRAdministratorCommissioningClusterRevokeCommissioningParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAdministratorCommissioningClusterRevokeCommissioningParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRAdministratorCommissioningClusterRevokeCommissioningParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRAdministratorCommissioningClusterRevokeCommissioningParams" ,)
        }
    }
}
impl IMTRAdministratorCommissioningClusterRevokeCommissioningParams
    for MTRAdministratorCommissioningClusterRevokeCommissioningParams
{
}
pub trait IMTRAdministratorCommissioningClusterRevokeCommissioningParams:
    Sized + std::ops::Deref
{
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalCredentialsClusterAttestationRequestParams(pub id);
impl std::ops::Deref for MTROperationalCredentialsClusterAttestationRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalCredentialsClusterAttestationRequestParams {}
impl MTROperationalCredentialsClusterAttestationRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterAttestationRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROperationalCredentialsClusterAttestationRequestParams {}
impl INSObject for MTROperationalCredentialsClusterAttestationRequestParams {}
impl PNSObject for MTROperationalCredentialsClusterAttestationRequestParams {}
impl std::convert::TryFrom<NSObject> for MTROperationalCredentialsClusterAttestationRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalCredentialsClusterAttestationRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterAttestationRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalCredentialsClusterAttestationRequestParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTROperationalCredentialsClusterAttestationRequestParams" ,)
        }
    }
}
impl IMTROperationalCredentialsClusterAttestationRequestParams
    for MTROperationalCredentialsClusterAttestationRequestParams
{
}
pub trait IMTROperationalCredentialsClusterAttestationRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn attestationNonce(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attestationNonce)
    }
    unsafe fn setAttestationNonce_(&self, attestationNonce: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttestationNonce : attestationNonce)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalCredentialsClusterAttestationResponseParams(pub id);
impl std::ops::Deref for MTROperationalCredentialsClusterAttestationResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalCredentialsClusterAttestationResponseParams {}
impl MTROperationalCredentialsClusterAttestationResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterAttestationResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROperationalCredentialsClusterAttestationResponseParams {}
impl INSObject for MTROperationalCredentialsClusterAttestationResponseParams {}
impl PNSObject for MTROperationalCredentialsClusterAttestationResponseParams {}
impl std::convert::TryFrom<NSObject> for MTROperationalCredentialsClusterAttestationResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalCredentialsClusterAttestationResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterAttestationResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalCredentialsClusterAttestationResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTROperationalCredentialsClusterAttestationResponseParams" ,)
        }
    }
}
impl IMTROperationalCredentialsClusterAttestationResponseParams
    for MTROperationalCredentialsClusterAttestationResponseParams
{
}
pub trait IMTROperationalCredentialsClusterAttestationResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn attestationElements(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attestationElements)
    }
    unsafe fn setAttestationElements_(&self, attestationElements: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttestationElements : attestationElements)
    }
    unsafe fn attestationSignature(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attestationSignature)
    }
    unsafe fn setAttestationSignature_(&self, attestationSignature: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttestationSignature : attestationSignature)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
impl MTROperationalCredentialsClusterAttestationResponseParams_Deprecated
    for MTROperationalCredentialsClusterAttestationResponseParams
{
}
pub trait MTROperationalCredentialsClusterAttestationResponseParams_Deprecated:
    Sized + std::ops::Deref
{
    unsafe fn signature(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, signature)
    }
    unsafe fn setSignature_(&self, signature: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSignature : signature)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalCredentialsClusterCertificateChainRequestParams(pub id);
impl std::ops::Deref for MTROperationalCredentialsClusterCertificateChainRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalCredentialsClusterCertificateChainRequestParams {}
impl MTROperationalCredentialsClusterCertificateChainRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterCertificateChainRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROperationalCredentialsClusterCertificateChainRequestParams {}
impl INSObject for MTROperationalCredentialsClusterCertificateChainRequestParams {}
impl PNSObject for MTROperationalCredentialsClusterCertificateChainRequestParams {}
impl std::convert::TryFrom<NSObject>
    for MTROperationalCredentialsClusterCertificateChainRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalCredentialsClusterCertificateChainRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterCertificateChainRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalCredentialsClusterCertificateChainRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROperationalCredentialsClusterCertificateChainRequestParams" ,)
        }
    }
}
impl IMTROperationalCredentialsClusterCertificateChainRequestParams
    for MTROperationalCredentialsClusterCertificateChainRequestParams
{
}
pub trait IMTROperationalCredentialsClusterCertificateChainRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn certificateType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, certificateType)
    }
    unsafe fn setCertificateType_(&self, certificateType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCertificateType : certificateType)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalCredentialsClusterCertificateChainResponseParams(pub id);
impl std::ops::Deref for MTROperationalCredentialsClusterCertificateChainResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalCredentialsClusterCertificateChainResponseParams {}
impl MTROperationalCredentialsClusterCertificateChainResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterCertificateChainResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROperationalCredentialsClusterCertificateChainResponseParams {}
impl INSObject for MTROperationalCredentialsClusterCertificateChainResponseParams {}
impl PNSObject for MTROperationalCredentialsClusterCertificateChainResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTROperationalCredentialsClusterCertificateChainResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalCredentialsClusterCertificateChainResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterCertificateChainResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalCredentialsClusterCertificateChainResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROperationalCredentialsClusterCertificateChainResponseParams" ,)
        }
    }
}
impl IMTROperationalCredentialsClusterCertificateChainResponseParams
    for MTROperationalCredentialsClusterCertificateChainResponseParams
{
}
pub trait IMTROperationalCredentialsClusterCertificateChainResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn certificate(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, certificate)
    }
    unsafe fn setCertificate_(&self, certificate: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCertificate : certificate)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalCredentialsClusterCSRRequestParams(pub id);
impl std::ops::Deref for MTROperationalCredentialsClusterCSRRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalCredentialsClusterCSRRequestParams {}
impl MTROperationalCredentialsClusterCSRRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterCSRRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROperationalCredentialsClusterCSRRequestParams {}
impl INSObject for MTROperationalCredentialsClusterCSRRequestParams {}
impl PNSObject for MTROperationalCredentialsClusterCSRRequestParams {}
impl std::convert::TryFrom<NSObject> for MTROperationalCredentialsClusterCSRRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalCredentialsClusterCSRRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterCSRRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalCredentialsClusterCSRRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROperationalCredentialsClusterCSRRequestParams" ,)
        }
    }
}
impl IMTROperationalCredentialsClusterCSRRequestParams
    for MTROperationalCredentialsClusterCSRRequestParams
{
}
pub trait IMTROperationalCredentialsClusterCSRRequestParams: Sized + std::ops::Deref {
    unsafe fn csrNonce(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, csrNonce)
    }
    unsafe fn setCsrNonce_(&self, csrNonce: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCsrNonce : csrNonce)
    }
    unsafe fn isForUpdateNOC(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isForUpdateNOC)
    }
    unsafe fn setIsForUpdateNOC_(&self, isForUpdateNOC: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIsForUpdateNOC : isForUpdateNOC)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalCredentialsClusterCSRResponseParams(pub id);
impl std::ops::Deref for MTROperationalCredentialsClusterCSRResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalCredentialsClusterCSRResponseParams {}
impl MTROperationalCredentialsClusterCSRResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterCSRResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROperationalCredentialsClusterCSRResponseParams {}
impl INSObject for MTROperationalCredentialsClusterCSRResponseParams {}
impl PNSObject for MTROperationalCredentialsClusterCSRResponseParams {}
impl std::convert::TryFrom<NSObject> for MTROperationalCredentialsClusterCSRResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalCredentialsClusterCSRResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterCSRResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalCredentialsClusterCSRResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROperationalCredentialsClusterCSRResponseParams" ,)
        }
    }
}
impl IMTROperationalCredentialsClusterCSRResponseParams
    for MTROperationalCredentialsClusterCSRResponseParams
{
}
pub trait IMTROperationalCredentialsClusterCSRResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn nocsrElements(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nocsrElements)
    }
    unsafe fn setNocsrElements_(&self, nocsrElements: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNocsrElements : nocsrElements)
    }
    unsafe fn attestationSignature(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attestationSignature)
    }
    unsafe fn setAttestationSignature_(&self, attestationSignature: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttestationSignature : attestationSignature)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalCredentialsClusterAddNOCParams(pub id);
impl std::ops::Deref for MTROperationalCredentialsClusterAddNOCParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalCredentialsClusterAddNOCParams {}
impl MTROperationalCredentialsClusterAddNOCParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterAddNOCParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTROperationalCredentialsClusterAddNOCParams {}
impl INSObject for MTROperationalCredentialsClusterAddNOCParams {}
impl PNSObject for MTROperationalCredentialsClusterAddNOCParams {}
impl std::convert::TryFrom<NSObject> for MTROperationalCredentialsClusterAddNOCParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalCredentialsClusterAddNOCParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterAddNOCParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalCredentialsClusterAddNOCParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROperationalCredentialsClusterAddNOCParams" ,)
        }
    }
}
impl IMTROperationalCredentialsClusterAddNOCParams
    for MTROperationalCredentialsClusterAddNOCParams
{
}
pub trait IMTROperationalCredentialsClusterAddNOCParams: Sized + std::ops::Deref {
    unsafe fn nocValue(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nocValue)
    }
    unsafe fn setNocValue_(&self, nocValue: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNocValue : nocValue)
    }
    unsafe fn icacValue(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, icacValue)
    }
    unsafe fn setIcacValue_(&self, icacValue: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIcacValue : icacValue)
    }
    unsafe fn ipkValue(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ipkValue)
    }
    unsafe fn setIpkValue_(&self, ipkValue: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIpkValue : ipkValue)
    }
    unsafe fn caseAdminSubject(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, caseAdminSubject)
    }
    unsafe fn setCaseAdminSubject_(&self, caseAdminSubject: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCaseAdminSubject : caseAdminSubject)
    }
    unsafe fn adminVendorId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, adminVendorId)
    }
    unsafe fn setAdminVendorId_(&self, adminVendorId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAdminVendorId : adminVendorId)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalCredentialsClusterUpdateNOCParams(pub id);
impl std::ops::Deref for MTROperationalCredentialsClusterUpdateNOCParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalCredentialsClusterUpdateNOCParams {}
impl MTROperationalCredentialsClusterUpdateNOCParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterUpdateNOCParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROperationalCredentialsClusterUpdateNOCParams {}
impl INSObject for MTROperationalCredentialsClusterUpdateNOCParams {}
impl PNSObject for MTROperationalCredentialsClusterUpdateNOCParams {}
impl std::convert::TryFrom<NSObject> for MTROperationalCredentialsClusterUpdateNOCParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalCredentialsClusterUpdateNOCParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterUpdateNOCParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalCredentialsClusterUpdateNOCParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROperationalCredentialsClusterUpdateNOCParams" ,)
        }
    }
}
impl IMTROperationalCredentialsClusterUpdateNOCParams
    for MTROperationalCredentialsClusterUpdateNOCParams
{
}
pub trait IMTROperationalCredentialsClusterUpdateNOCParams: Sized + std::ops::Deref {
    unsafe fn nocValue(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nocValue)
    }
    unsafe fn setNocValue_(&self, nocValue: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNocValue : nocValue)
    }
    unsafe fn icacValue(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, icacValue)
    }
    unsafe fn setIcacValue_(&self, icacValue: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIcacValue : icacValue)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalCredentialsClusterNOCResponseParams(pub id);
impl std::ops::Deref for MTROperationalCredentialsClusterNOCResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalCredentialsClusterNOCResponseParams {}
impl MTROperationalCredentialsClusterNOCResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterNOCResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROperationalCredentialsClusterNOCResponseParams {}
impl INSObject for MTROperationalCredentialsClusterNOCResponseParams {}
impl PNSObject for MTROperationalCredentialsClusterNOCResponseParams {}
impl std::convert::TryFrom<NSObject> for MTROperationalCredentialsClusterNOCResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalCredentialsClusterNOCResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterNOCResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalCredentialsClusterNOCResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROperationalCredentialsClusterNOCResponseParams" ,)
        }
    }
}
impl IMTROperationalCredentialsClusterNOCResponseParams
    for MTROperationalCredentialsClusterNOCResponseParams
{
}
pub trait IMTROperationalCredentialsClusterNOCResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn statusCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusCode)
    }
    unsafe fn setStatusCode_(&self, statusCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusCode : statusCode)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
    unsafe fn debugText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, debugText)
    }
    unsafe fn setDebugText_(&self, debugText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDebugText : debugText)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalCredentialsClusterUpdateFabricLabelParams(pub id);
impl std::ops::Deref for MTROperationalCredentialsClusterUpdateFabricLabelParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalCredentialsClusterUpdateFabricLabelParams {}
impl MTROperationalCredentialsClusterUpdateFabricLabelParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterUpdateFabricLabelParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROperationalCredentialsClusterUpdateFabricLabelParams {}
impl INSObject for MTROperationalCredentialsClusterUpdateFabricLabelParams {}
impl PNSObject for MTROperationalCredentialsClusterUpdateFabricLabelParams {}
impl std::convert::TryFrom<NSObject> for MTROperationalCredentialsClusterUpdateFabricLabelParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalCredentialsClusterUpdateFabricLabelParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterUpdateFabricLabelParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalCredentialsClusterUpdateFabricLabelParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTROperationalCredentialsClusterUpdateFabricLabelParams" ,)
        }
    }
}
impl IMTROperationalCredentialsClusterUpdateFabricLabelParams
    for MTROperationalCredentialsClusterUpdateFabricLabelParams
{
}
pub trait IMTROperationalCredentialsClusterUpdateFabricLabelParams:
    Sized + std::ops::Deref
{
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalCredentialsClusterRemoveFabricParams(pub id);
impl std::ops::Deref for MTROperationalCredentialsClusterRemoveFabricParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalCredentialsClusterRemoveFabricParams {}
impl MTROperationalCredentialsClusterRemoveFabricParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterRemoveFabricParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROperationalCredentialsClusterRemoveFabricParams {}
impl INSObject for MTROperationalCredentialsClusterRemoveFabricParams {}
impl PNSObject for MTROperationalCredentialsClusterRemoveFabricParams {}
impl std::convert::TryFrom<NSObject> for MTROperationalCredentialsClusterRemoveFabricParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalCredentialsClusterRemoveFabricParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterRemoveFabricParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalCredentialsClusterRemoveFabricParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROperationalCredentialsClusterRemoveFabricParams" ,)
        }
    }
}
impl IMTROperationalCredentialsClusterRemoveFabricParams
    for MTROperationalCredentialsClusterRemoveFabricParams
{
}
pub trait IMTROperationalCredentialsClusterRemoveFabricParams: Sized + std::ops::Deref {
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalCredentialsClusterAddTrustedRootCertificateParams(pub id);
impl std::ops::Deref for MTROperationalCredentialsClusterAddTrustedRootCertificateParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalCredentialsClusterAddTrustedRootCertificateParams {}
impl MTROperationalCredentialsClusterAddTrustedRootCertificateParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterAddTrustedRootCertificateParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROperationalCredentialsClusterAddTrustedRootCertificateParams {}
impl INSObject for MTROperationalCredentialsClusterAddTrustedRootCertificateParams {}
impl PNSObject for MTROperationalCredentialsClusterAddTrustedRootCertificateParams {}
impl std::convert::TryFrom<NSObject>
    for MTROperationalCredentialsClusterAddTrustedRootCertificateParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalCredentialsClusterAddTrustedRootCertificateParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterAddTrustedRootCertificateParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalCredentialsClusterAddTrustedRootCertificateParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROperationalCredentialsClusterAddTrustedRootCertificateParams" ,)
        }
    }
}
impl IMTROperationalCredentialsClusterAddTrustedRootCertificateParams
    for MTROperationalCredentialsClusterAddTrustedRootCertificateParams
{
}
pub trait IMTROperationalCredentialsClusterAddTrustedRootCertificateParams:
    Sized + std::ops::Deref
{
    unsafe fn rootCACertificate(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rootCACertificate)
    }
    unsafe fn setRootCACertificate_(&self, rootCACertificate: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRootCACertificate : rootCACertificate)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
impl MTROperationalCredentialsClusterAddTrustedRootCertificateParams_Deprecated
    for MTROperationalCredentialsClusterAddTrustedRootCertificateParams
{
}
pub trait MTROperationalCredentialsClusterAddTrustedRootCertificateParams_Deprecated:
    Sized + std::ops::Deref
{
    unsafe fn rootCertificate(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rootCertificate)
    }
    unsafe fn setRootCertificate_(&self, rootCertificate: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRootCertificate : rootCertificate)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalCredentialsClusterSetVIDVerificationStatementParams(pub id);
impl std::ops::Deref for MTROperationalCredentialsClusterSetVIDVerificationStatementParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalCredentialsClusterSetVIDVerificationStatementParams {}
impl MTROperationalCredentialsClusterSetVIDVerificationStatementParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterSetVIDVerificationStatementParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROperationalCredentialsClusterSetVIDVerificationStatementParams {}
impl INSObject for MTROperationalCredentialsClusterSetVIDVerificationStatementParams {}
impl PNSObject for MTROperationalCredentialsClusterSetVIDVerificationStatementParams {}
impl std::convert::TryFrom<NSObject>
    for MTROperationalCredentialsClusterSetVIDVerificationStatementParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalCredentialsClusterSetVIDVerificationStatementParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterSetVIDVerificationStatementParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalCredentialsClusterSetVIDVerificationStatementParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROperationalCredentialsClusterSetVIDVerificationStatementParams" ,)
        }
    }
}
impl IMTROperationalCredentialsClusterSetVIDVerificationStatementParams
    for MTROperationalCredentialsClusterSetVIDVerificationStatementParams
{
}
pub trait IMTROperationalCredentialsClusterSetVIDVerificationStatementParams:
    Sized + std::ops::Deref
{
    unsafe fn vendorID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vendorID)
    }
    unsafe fn setVendorID_(&self, vendorID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVendorID : vendorID)
    }
    unsafe fn vidVerificationStatement(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vidVerificationStatement)
    }
    unsafe fn setVidVerificationStatement_(&self, vidVerificationStatement: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVidVerificationStatement : vidVerificationStatement)
    }
    unsafe fn vvsc(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vvsc)
    }
    unsafe fn setVvsc_(&self, vvsc: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVvsc : vvsc)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalCredentialsClusterSignVIDVerificationRequestParams(pub id);
impl std::ops::Deref for MTROperationalCredentialsClusterSignVIDVerificationRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalCredentialsClusterSignVIDVerificationRequestParams {}
impl MTROperationalCredentialsClusterSignVIDVerificationRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterSignVIDVerificationRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROperationalCredentialsClusterSignVIDVerificationRequestParams {}
impl INSObject for MTROperationalCredentialsClusterSignVIDVerificationRequestParams {}
impl PNSObject for MTROperationalCredentialsClusterSignVIDVerificationRequestParams {}
impl std::convert::TryFrom<NSObject>
    for MTROperationalCredentialsClusterSignVIDVerificationRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalCredentialsClusterSignVIDVerificationRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterSignVIDVerificationRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalCredentialsClusterSignVIDVerificationRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROperationalCredentialsClusterSignVIDVerificationRequestParams" ,)
        }
    }
}
impl IMTROperationalCredentialsClusterSignVIDVerificationRequestParams
    for MTROperationalCredentialsClusterSignVIDVerificationRequestParams
{
}
pub trait IMTROperationalCredentialsClusterSignVIDVerificationRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
    unsafe fn clientChallenge(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, clientChallenge)
    }
    unsafe fn setClientChallenge_(&self, clientChallenge: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setClientChallenge : clientChallenge)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalCredentialsClusterSignVIDVerificationResponseParams(pub id);
impl std::ops::Deref for MTROperationalCredentialsClusterSignVIDVerificationResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalCredentialsClusterSignVIDVerificationResponseParams {}
impl MTROperationalCredentialsClusterSignVIDVerificationResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterSignVIDVerificationResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROperationalCredentialsClusterSignVIDVerificationResponseParams {}
impl INSObject for MTROperationalCredentialsClusterSignVIDVerificationResponseParams {}
impl PNSObject for MTROperationalCredentialsClusterSignVIDVerificationResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTROperationalCredentialsClusterSignVIDVerificationResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalCredentialsClusterSignVIDVerificationResponseParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalCredentialsClusterSignVIDVerificationResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalCredentialsClusterSignVIDVerificationResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROperationalCredentialsClusterSignVIDVerificationResponseParams" ,)
        }
    }
}
impl IMTROperationalCredentialsClusterSignVIDVerificationResponseParams
    for MTROperationalCredentialsClusterSignVIDVerificationResponseParams
{
}
pub trait IMTROperationalCredentialsClusterSignVIDVerificationResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn setFabricIndex_(&self, fabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricIndex : fabricIndex)
    }
    unsafe fn fabricBindingVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricBindingVersion)
    }
    unsafe fn setFabricBindingVersion_(&self, fabricBindingVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFabricBindingVersion : fabricBindingVersion)
    }
    unsafe fn signature(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, signature)
    }
    unsafe fn setSignature_(&self, signature: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSignature : signature)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupKeyManagementClusterKeySetWriteParams(pub id);
impl std::ops::Deref for MTRGroupKeyManagementClusterKeySetWriteParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupKeyManagementClusterKeySetWriteParams {}
impl MTRGroupKeyManagementClusterKeySetWriteParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupKeyManagementClusterKeySetWriteParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRGroupKeyManagementClusterKeySetWriteParams {}
impl INSObject for MTRGroupKeyManagementClusterKeySetWriteParams {}
impl PNSObject for MTRGroupKeyManagementClusterKeySetWriteParams {}
impl std::convert::TryFrom<NSObject> for MTRGroupKeyManagementClusterKeySetWriteParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGroupKeyManagementClusterKeySetWriteParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupKeyManagementClusterKeySetWriteParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupKeyManagementClusterKeySetWriteParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGroupKeyManagementClusterKeySetWriteParams" ,)
        }
    }
}
impl IMTRGroupKeyManagementClusterKeySetWriteParams
    for MTRGroupKeyManagementClusterKeySetWriteParams
{
}
pub trait IMTRGroupKeyManagementClusterKeySetWriteParams: Sized + std::ops::Deref {
    unsafe fn groupKeySet(&self) -> MTRGroupKeyManagementClusterGroupKeySetStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupKeySet)
    }
    unsafe fn setGroupKeySet_(&self, groupKeySet: MTRGroupKeyManagementClusterGroupKeySetStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupKeySet : groupKeySet)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupKeyManagementClusterKeySetReadParams(pub id);
impl std::ops::Deref for MTRGroupKeyManagementClusterKeySetReadParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupKeyManagementClusterKeySetReadParams {}
impl MTRGroupKeyManagementClusterKeySetReadParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupKeyManagementClusterKeySetReadParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRGroupKeyManagementClusterKeySetReadParams {}
impl INSObject for MTRGroupKeyManagementClusterKeySetReadParams {}
impl PNSObject for MTRGroupKeyManagementClusterKeySetReadParams {}
impl std::convert::TryFrom<NSObject> for MTRGroupKeyManagementClusterKeySetReadParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGroupKeyManagementClusterKeySetReadParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupKeyManagementClusterKeySetReadParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupKeyManagementClusterKeySetReadParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGroupKeyManagementClusterKeySetReadParams" ,)
        }
    }
}
impl IMTRGroupKeyManagementClusterKeySetReadParams
    for MTRGroupKeyManagementClusterKeySetReadParams
{
}
pub trait IMTRGroupKeyManagementClusterKeySetReadParams: Sized + std::ops::Deref {
    unsafe fn groupKeySetID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupKeySetID)
    }
    unsafe fn setGroupKeySetID_(&self, groupKeySetID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupKeySetID : groupKeySetID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupKeyManagementClusterKeySetReadResponseParams(pub id);
impl std::ops::Deref for MTRGroupKeyManagementClusterKeySetReadResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupKeyManagementClusterKeySetReadResponseParams {}
impl MTRGroupKeyManagementClusterKeySetReadResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupKeyManagementClusterKeySetReadResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGroupKeyManagementClusterKeySetReadResponseParams {}
impl INSObject for MTRGroupKeyManagementClusterKeySetReadResponseParams {}
impl PNSObject for MTRGroupKeyManagementClusterKeySetReadResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRGroupKeyManagementClusterKeySetReadResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGroupKeyManagementClusterKeySetReadResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupKeyManagementClusterKeySetReadResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupKeyManagementClusterKeySetReadResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGroupKeyManagementClusterKeySetReadResponseParams" ,)
        }
    }
}
impl IMTRGroupKeyManagementClusterKeySetReadResponseParams
    for MTRGroupKeyManagementClusterKeySetReadResponseParams
{
}
pub trait IMTRGroupKeyManagementClusterKeySetReadResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn groupKeySet(&self) -> MTRGroupKeyManagementClusterGroupKeySetStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupKeySet)
    }
    unsafe fn setGroupKeySet_(&self, groupKeySet: MTRGroupKeyManagementClusterGroupKeySetStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupKeySet : groupKeySet)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupKeyManagementClusterKeySetRemoveParams(pub id);
impl std::ops::Deref for MTRGroupKeyManagementClusterKeySetRemoveParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupKeyManagementClusterKeySetRemoveParams {}
impl MTRGroupKeyManagementClusterKeySetRemoveParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupKeyManagementClusterKeySetRemoveParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGroupKeyManagementClusterKeySetRemoveParams {}
impl INSObject for MTRGroupKeyManagementClusterKeySetRemoveParams {}
impl PNSObject for MTRGroupKeyManagementClusterKeySetRemoveParams {}
impl std::convert::TryFrom<NSObject> for MTRGroupKeyManagementClusterKeySetRemoveParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGroupKeyManagementClusterKeySetRemoveParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupKeyManagementClusterKeySetRemoveParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupKeyManagementClusterKeySetRemoveParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGroupKeyManagementClusterKeySetRemoveParams" ,)
        }
    }
}
impl IMTRGroupKeyManagementClusterKeySetRemoveParams
    for MTRGroupKeyManagementClusterKeySetRemoveParams
{
}
pub trait IMTRGroupKeyManagementClusterKeySetRemoveParams: Sized + std::ops::Deref {
    unsafe fn groupKeySetID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupKeySetID)
    }
    unsafe fn setGroupKeySetID_(&self, groupKeySetID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupKeySetID : groupKeySetID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupKeyManagementClusterKeySetReadAllIndicesParams(pub id);
impl std::ops::Deref for MTRGroupKeyManagementClusterKeySetReadAllIndicesParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupKeyManagementClusterKeySetReadAllIndicesParams {}
impl MTRGroupKeyManagementClusterKeySetReadAllIndicesParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupKeyManagementClusterKeySetReadAllIndicesParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGroupKeyManagementClusterKeySetReadAllIndicesParams {}
impl INSObject for MTRGroupKeyManagementClusterKeySetReadAllIndicesParams {}
impl PNSObject for MTRGroupKeyManagementClusterKeySetReadAllIndicesParams {}
impl std::convert::TryFrom<NSObject> for MTRGroupKeyManagementClusterKeySetReadAllIndicesParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGroupKeyManagementClusterKeySetReadAllIndicesParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupKeyManagementClusterKeySetReadAllIndicesParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupKeyManagementClusterKeySetReadAllIndicesParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGroupKeyManagementClusterKeySetReadAllIndicesParams" ,)
        }
    }
}
impl IMTRGroupKeyManagementClusterKeySetReadAllIndicesParams
    for MTRGroupKeyManagementClusterKeySetReadAllIndicesParams
{
}
pub trait IMTRGroupKeyManagementClusterKeySetReadAllIndicesParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseParams(pub id);
impl std::ops::Deref for MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseParams {}
impl MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseParams {}
impl INSObject for MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseParams {}
impl PNSObject for MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseParams" ,)
        }
    }
}
impl IMTRGroupKeyManagementClusterKeySetReadAllIndicesResponseParams
    for MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseParams
{
}
pub trait IMTRGroupKeyManagementClusterKeySetReadAllIndicesResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn groupKeySetIDs(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupKeySetIDs)
    }
    unsafe fn setGroupKeySetIDs_(&self, groupKeySetIDs: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupKeySetIDs : groupKeySetIDs)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRICDManagementClusterRegisterClientParams(pub id);
impl std::ops::Deref for MTRICDManagementClusterRegisterClientParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRICDManagementClusterRegisterClientParams {}
impl MTRICDManagementClusterRegisterClientParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRICDManagementClusterRegisterClientParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRICDManagementClusterRegisterClientParams {}
impl INSObject for MTRICDManagementClusterRegisterClientParams {}
impl PNSObject for MTRICDManagementClusterRegisterClientParams {}
impl std::convert::TryFrom<NSObject> for MTRICDManagementClusterRegisterClientParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRICDManagementClusterRegisterClientParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRICDManagementClusterRegisterClientParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRICDManagementClusterRegisterClientParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRICDManagementClusterRegisterClientParams")
        }
    }
}
impl IMTRICDManagementClusterRegisterClientParams for MTRICDManagementClusterRegisterClientParams {}
pub trait IMTRICDManagementClusterRegisterClientParams: Sized + std::ops::Deref {
    unsafe fn checkInNodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, checkInNodeID)
    }
    unsafe fn setCheckInNodeID_(&self, checkInNodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCheckInNodeID : checkInNodeID)
    }
    unsafe fn monitoredSubject(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, monitoredSubject)
    }
    unsafe fn setMonitoredSubject_(&self, monitoredSubject: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMonitoredSubject : monitoredSubject)
    }
    unsafe fn key(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, key)
    }
    unsafe fn setKey_(&self, key: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setKey : key)
    }
    unsafe fn verificationKey(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, verificationKey)
    }
    unsafe fn setVerificationKey_(&self, verificationKey: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVerificationKey : verificationKey)
    }
    unsafe fn clientType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, clientType)
    }
    unsafe fn setClientType_(&self, clientType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setClientType : clientType)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRICDManagementClusterRegisterClientResponseParams(pub id);
impl std::ops::Deref for MTRICDManagementClusterRegisterClientResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRICDManagementClusterRegisterClientResponseParams {}
impl MTRICDManagementClusterRegisterClientResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRICDManagementClusterRegisterClientResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRICDManagementClusterRegisterClientResponseParams {}
impl INSObject for MTRICDManagementClusterRegisterClientResponseParams {}
impl PNSObject for MTRICDManagementClusterRegisterClientResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRICDManagementClusterRegisterClientResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRICDManagementClusterRegisterClientResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRICDManagementClusterRegisterClientResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRICDManagementClusterRegisterClientResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRICDManagementClusterRegisterClientResponseParams" ,)
        }
    }
}
impl IMTRICDManagementClusterRegisterClientResponseParams
    for MTRICDManagementClusterRegisterClientResponseParams
{
}
pub trait IMTRICDManagementClusterRegisterClientResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn icdCounter(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, icdCounter)
    }
    unsafe fn setIcdCounter_(&self, icdCounter: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIcdCounter : icdCounter)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRICDManagementClusterUnregisterClientParams(pub id);
impl std::ops::Deref for MTRICDManagementClusterUnregisterClientParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRICDManagementClusterUnregisterClientParams {}
impl MTRICDManagementClusterUnregisterClientParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRICDManagementClusterUnregisterClientParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRICDManagementClusterUnregisterClientParams {}
impl INSObject for MTRICDManagementClusterUnregisterClientParams {}
impl PNSObject for MTRICDManagementClusterUnregisterClientParams {}
impl std::convert::TryFrom<NSObject> for MTRICDManagementClusterUnregisterClientParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRICDManagementClusterUnregisterClientParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRICDManagementClusterUnregisterClientParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRICDManagementClusterUnregisterClientParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRICDManagementClusterUnregisterClientParams" ,)
        }
    }
}
impl IMTRICDManagementClusterUnregisterClientParams
    for MTRICDManagementClusterUnregisterClientParams
{
}
pub trait IMTRICDManagementClusterUnregisterClientParams: Sized + std::ops::Deref {
    unsafe fn checkInNodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, checkInNodeID)
    }
    unsafe fn setCheckInNodeID_(&self, checkInNodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCheckInNodeID : checkInNodeID)
    }
    unsafe fn verificationKey(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, verificationKey)
    }
    unsafe fn setVerificationKey_(&self, verificationKey: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVerificationKey : verificationKey)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRICDManagementClusterStayActiveRequestParams(pub id);
impl std::ops::Deref for MTRICDManagementClusterStayActiveRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRICDManagementClusterStayActiveRequestParams {}
impl MTRICDManagementClusterStayActiveRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRICDManagementClusterStayActiveRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRICDManagementClusterStayActiveRequestParams {}
impl INSObject for MTRICDManagementClusterStayActiveRequestParams {}
impl PNSObject for MTRICDManagementClusterStayActiveRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRICDManagementClusterStayActiveRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRICDManagementClusterStayActiveRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRICDManagementClusterStayActiveRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRICDManagementClusterStayActiveRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRICDManagementClusterStayActiveRequestParams" ,)
        }
    }
}
impl IMTRICDManagementClusterStayActiveRequestParams
    for MTRICDManagementClusterStayActiveRequestParams
{
}
pub trait IMTRICDManagementClusterStayActiveRequestParams: Sized + std::ops::Deref {
    unsafe fn stayActiveDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stayActiveDuration)
    }
    unsafe fn setStayActiveDuration_(&self, stayActiveDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStayActiveDuration : stayActiveDuration)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRICDManagementClusterStayActiveResponseParams(pub id);
impl std::ops::Deref for MTRICDManagementClusterStayActiveResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRICDManagementClusterStayActiveResponseParams {}
impl MTRICDManagementClusterStayActiveResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRICDManagementClusterStayActiveResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRICDManagementClusterStayActiveResponseParams {}
impl INSObject for MTRICDManagementClusterStayActiveResponseParams {}
impl PNSObject for MTRICDManagementClusterStayActiveResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRICDManagementClusterStayActiveResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRICDManagementClusterStayActiveResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRICDManagementClusterStayActiveResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRICDManagementClusterStayActiveResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRICDManagementClusterStayActiveResponseParams" ,)
        }
    }
}
impl IMTRICDManagementClusterStayActiveResponseParams
    for MTRICDManagementClusterStayActiveResponseParams
{
}
pub trait IMTRICDManagementClusterStayActiveResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn promisedActiveDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, promisedActiveDuration)
    }
    unsafe fn setPromisedActiveDuration_(&self, promisedActiveDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPromisedActiveDuration : promisedActiveDuration)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimerClusterSetTimerParams(pub id);
impl std::ops::Deref for MTRTimerClusterSetTimerParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimerClusterSetTimerParams {}
impl MTRTimerClusterSetTimerParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimerClusterSetTimerParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRTimerClusterSetTimerParams {}
impl INSObject for MTRTimerClusterSetTimerParams {}
impl PNSObject for MTRTimerClusterSetTimerParams {}
impl std::convert::TryFrom<NSObject> for MTRTimerClusterSetTimerParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRTimerClusterSetTimerParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimerClusterSetTimerParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTimerClusterSetTimerParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRTimerClusterSetTimerParams")
        }
    }
}
impl IMTRTimerClusterSetTimerParams for MTRTimerClusterSetTimerParams {}
pub trait IMTRTimerClusterSetTimerParams: Sized + std::ops::Deref {
    unsafe fn getNewTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewTime)
    }
    unsafe fn setNewTime_(&self, newTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewTime : newTime)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimerClusterResetTimerParams(pub id);
impl std::ops::Deref for MTRTimerClusterResetTimerParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimerClusterResetTimerParams {}
impl MTRTimerClusterResetTimerParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimerClusterResetTimerParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRTimerClusterResetTimerParams {}
impl INSObject for MTRTimerClusterResetTimerParams {}
impl PNSObject for MTRTimerClusterResetTimerParams {}
impl std::convert::TryFrom<NSObject> for MTRTimerClusterResetTimerParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRTimerClusterResetTimerParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimerClusterResetTimerParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTimerClusterResetTimerParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRTimerClusterResetTimerParams")
        }
    }
}
impl IMTRTimerClusterResetTimerParams for MTRTimerClusterResetTimerParams {}
pub trait IMTRTimerClusterResetTimerParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimerClusterAddTimeParams(pub id);
impl std::ops::Deref for MTRTimerClusterAddTimeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimerClusterAddTimeParams {}
impl MTRTimerClusterAddTimeParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimerClusterAddTimeParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRTimerClusterAddTimeParams {}
impl INSObject for MTRTimerClusterAddTimeParams {}
impl PNSObject for MTRTimerClusterAddTimeParams {}
impl std::convert::TryFrom<NSObject> for MTRTimerClusterAddTimeParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRTimerClusterAddTimeParams, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimerClusterAddTimeParams").unwrap()) };
        if is_kind_of {
            Ok(MTRTimerClusterAddTimeParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRTimerClusterAddTimeParams")
        }
    }
}
impl IMTRTimerClusterAddTimeParams for MTRTimerClusterAddTimeParams {}
pub trait IMTRTimerClusterAddTimeParams: Sized + std::ops::Deref {
    unsafe fn additionalTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, additionalTime)
    }
    unsafe fn setAdditionalTime_(&self, additionalTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAdditionalTime : additionalTime)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTimerClusterReduceTimeParams(pub id);
impl std::ops::Deref for MTRTimerClusterReduceTimeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTimerClusterReduceTimeParams {}
impl MTRTimerClusterReduceTimeParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTimerClusterReduceTimeParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRTimerClusterReduceTimeParams {}
impl INSObject for MTRTimerClusterReduceTimeParams {}
impl PNSObject for MTRTimerClusterReduceTimeParams {}
impl std::convert::TryFrom<NSObject> for MTRTimerClusterReduceTimeParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRTimerClusterReduceTimeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTimerClusterReduceTimeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTimerClusterReduceTimeParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRTimerClusterReduceTimeParams")
        }
    }
}
impl IMTRTimerClusterReduceTimeParams for MTRTimerClusterReduceTimeParams {}
pub trait IMTRTimerClusterReduceTimeParams: Sized + std::ops::Deref {
    unsafe fn timeReduction(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeReduction)
    }
    unsafe fn setTimeReduction_(&self, timeReduction: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeReduction : timeReduction)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROvenCavityOperationalStateClusterStopParams(pub id);
impl std::ops::Deref for MTROvenCavityOperationalStateClusterStopParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROvenCavityOperationalStateClusterStopParams {}
impl MTROvenCavityOperationalStateClusterStopParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROvenCavityOperationalStateClusterStopParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROvenCavityOperationalStateClusterStopParams {}
impl INSObject for MTROvenCavityOperationalStateClusterStopParams {}
impl PNSObject for MTROvenCavityOperationalStateClusterStopParams {}
impl std::convert::TryFrom<NSObject> for MTROvenCavityOperationalStateClusterStopParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROvenCavityOperationalStateClusterStopParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROvenCavityOperationalStateClusterStopParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROvenCavityOperationalStateClusterStopParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROvenCavityOperationalStateClusterStopParams" ,)
        }
    }
}
impl IMTROvenCavityOperationalStateClusterStopParams
    for MTROvenCavityOperationalStateClusterStopParams
{
}
pub trait IMTROvenCavityOperationalStateClusterStopParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROvenCavityOperationalStateClusterStartParams(pub id);
impl std::ops::Deref for MTROvenCavityOperationalStateClusterStartParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROvenCavityOperationalStateClusterStartParams {}
impl MTROvenCavityOperationalStateClusterStartParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROvenCavityOperationalStateClusterStartParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROvenCavityOperationalStateClusterStartParams {}
impl INSObject for MTROvenCavityOperationalStateClusterStartParams {}
impl PNSObject for MTROvenCavityOperationalStateClusterStartParams {}
impl std::convert::TryFrom<NSObject> for MTROvenCavityOperationalStateClusterStartParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROvenCavityOperationalStateClusterStartParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROvenCavityOperationalStateClusterStartParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROvenCavityOperationalStateClusterStartParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROvenCavityOperationalStateClusterStartParams" ,)
        }
    }
}
impl IMTROvenCavityOperationalStateClusterStartParams
    for MTROvenCavityOperationalStateClusterStartParams
{
}
pub trait IMTROvenCavityOperationalStateClusterStartParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROvenCavityOperationalStateClusterOperationalCommandResponseParams(pub id);
impl std::ops::Deref for MTROvenCavityOperationalStateClusterOperationalCommandResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROvenCavityOperationalStateClusterOperationalCommandResponseParams {}
impl MTROvenCavityOperationalStateClusterOperationalCommandResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROvenCavityOperationalStateClusterOperationalCommandResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROvenCavityOperationalStateClusterOperationalCommandResponseParams {}
impl INSObject for MTROvenCavityOperationalStateClusterOperationalCommandResponseParams {}
impl PNSObject for MTROvenCavityOperationalStateClusterOperationalCommandResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTROvenCavityOperationalStateClusterOperationalCommandResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROvenCavityOperationalStateClusterOperationalCommandResponseParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROvenCavityOperationalStateClusterOperationalCommandResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROvenCavityOperationalStateClusterOperationalCommandResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROvenCavityOperationalStateClusterOperationalCommandResponseParams" ,)
        }
    }
}
impl IMTROvenCavityOperationalStateClusterOperationalCommandResponseParams
    for MTROvenCavityOperationalStateClusterOperationalCommandResponseParams
{
}
pub trait IMTROvenCavityOperationalStateClusterOperationalCommandResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn commandResponseState(&self) -> MTROvenCavityOperationalStateClusterErrorStateStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, commandResponseState)
    }
    unsafe fn setCommandResponseState_(
        &self,
        commandResponseState: MTROvenCavityOperationalStateClusterErrorStateStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCommandResponseState : commandResponseState)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROvenModeClusterChangeToModeParams(pub id);
impl std::ops::Deref for MTROvenModeClusterChangeToModeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROvenModeClusterChangeToModeParams {}
impl MTROvenModeClusterChangeToModeParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROvenModeClusterChangeToModeParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTROvenModeClusterChangeToModeParams {}
impl INSObject for MTROvenModeClusterChangeToModeParams {}
impl PNSObject for MTROvenModeClusterChangeToModeParams {}
impl std::convert::TryFrom<NSObject> for MTROvenModeClusterChangeToModeParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTROvenModeClusterChangeToModeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROvenModeClusterChangeToModeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROvenModeClusterChangeToModeParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTROvenModeClusterChangeToModeParams")
        }
    }
}
impl IMTROvenModeClusterChangeToModeParams for MTROvenModeClusterChangeToModeParams {}
pub trait IMTROvenModeClusterChangeToModeParams: Sized + std::ops::Deref {
    unsafe fn getNewMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewMode)
    }
    unsafe fn setNewMode_(&self, newMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewMode : newMode)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROvenModeClusterChangeToModeResponseParams(pub id);
impl std::ops::Deref for MTROvenModeClusterChangeToModeResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROvenModeClusterChangeToModeResponseParams {}
impl MTROvenModeClusterChangeToModeResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROvenModeClusterChangeToModeResponseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTROvenModeClusterChangeToModeResponseParams {}
impl INSObject for MTROvenModeClusterChangeToModeResponseParams {}
impl PNSObject for MTROvenModeClusterChangeToModeResponseParams {}
impl std::convert::TryFrom<NSObject> for MTROvenModeClusterChangeToModeResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROvenModeClusterChangeToModeResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROvenModeClusterChangeToModeResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROvenModeClusterChangeToModeResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTROvenModeClusterChangeToModeResponseParams" ,)
        }
    }
}
impl IMTROvenModeClusterChangeToModeResponseParams
    for MTROvenModeClusterChangeToModeResponseParams
{
}
pub trait IMTROvenModeClusterChangeToModeResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn statusText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusText)
    }
    unsafe fn setStatusText_(&self, statusText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusText : statusText)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRModeSelectClusterChangeToModeParams(pub id);
impl std::ops::Deref for MTRModeSelectClusterChangeToModeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRModeSelectClusterChangeToModeParams {}
impl MTRModeSelectClusterChangeToModeParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRModeSelectClusterChangeToModeParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRModeSelectClusterChangeToModeParams {}
impl INSObject for MTRModeSelectClusterChangeToModeParams {}
impl PNSObject for MTRModeSelectClusterChangeToModeParams {}
impl std::convert::TryFrom<NSObject> for MTRModeSelectClusterChangeToModeParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRModeSelectClusterChangeToModeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRModeSelectClusterChangeToModeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRModeSelectClusterChangeToModeParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRModeSelectClusterChangeToModeParams")
        }
    }
}
impl IMTRModeSelectClusterChangeToModeParams for MTRModeSelectClusterChangeToModeParams {}
pub trait IMTRModeSelectClusterChangeToModeParams: Sized + std::ops::Deref {
    unsafe fn getNewMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewMode)
    }
    unsafe fn setNewMode_(&self, newMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewMode : newMode)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRLaundryWasherModeClusterChangeToModeParams(pub id);
impl std::ops::Deref for MTRLaundryWasherModeClusterChangeToModeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRLaundryWasherModeClusterChangeToModeParams {}
impl MTRLaundryWasherModeClusterChangeToModeParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRLaundryWasherModeClusterChangeToModeParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRLaundryWasherModeClusterChangeToModeParams {}
impl INSObject for MTRLaundryWasherModeClusterChangeToModeParams {}
impl PNSObject for MTRLaundryWasherModeClusterChangeToModeParams {}
impl std::convert::TryFrom<NSObject> for MTRLaundryWasherModeClusterChangeToModeParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRLaundryWasherModeClusterChangeToModeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRLaundryWasherModeClusterChangeToModeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRLaundryWasherModeClusterChangeToModeParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRLaundryWasherModeClusterChangeToModeParams" ,)
        }
    }
}
impl IMTRLaundryWasherModeClusterChangeToModeParams
    for MTRLaundryWasherModeClusterChangeToModeParams
{
}
pub trait IMTRLaundryWasherModeClusterChangeToModeParams: Sized + std::ops::Deref {
    unsafe fn getNewMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewMode)
    }
    unsafe fn setNewMode_(&self, newMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewMode : newMode)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRLaundryWasherModeClusterChangeToModeResponseParams(pub id);
impl std::ops::Deref for MTRLaundryWasherModeClusterChangeToModeResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRLaundryWasherModeClusterChangeToModeResponseParams {}
impl MTRLaundryWasherModeClusterChangeToModeResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRLaundryWasherModeClusterChangeToModeResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRLaundryWasherModeClusterChangeToModeResponseParams {}
impl INSObject for MTRLaundryWasherModeClusterChangeToModeResponseParams {}
impl PNSObject for MTRLaundryWasherModeClusterChangeToModeResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRLaundryWasherModeClusterChangeToModeResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRLaundryWasherModeClusterChangeToModeResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRLaundryWasherModeClusterChangeToModeResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRLaundryWasherModeClusterChangeToModeResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRLaundryWasherModeClusterChangeToModeResponseParams" ,)
        }
    }
}
impl IMTRLaundryWasherModeClusterChangeToModeResponseParams
    for MTRLaundryWasherModeClusterChangeToModeResponseParams
{
}
pub trait IMTRLaundryWasherModeClusterChangeToModeResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn statusText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusText)
    }
    unsafe fn setStatusText_(&self, statusText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusText : statusText)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeParams(pub id);
impl std::ops::Deref
    for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeParams
{
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message
    for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeParams
{
}
impl MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeParams {}
impl INSObject for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeParams {}
impl PNSObject for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeParams {}
impl std::convert::TryFrom<NSObject>
    for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<
        MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeParams,
        Self::Error,
    > {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeParams").unwrap())
        };
        if is_kind_of {
            Ok(
                MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeParams(
                    parent.0,
                ),
            )
        } else {
            Err ("This NSObject cannot be downcasted to MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeParams" ,)
        }
    }
}
impl IMTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeParams
    for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeParams
{
}
pub trait IMTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeParams:
    Sized + std::ops::Deref
{
    unsafe fn getNewMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewMode)
    }
    unsafe fn setNewMode_(&self, newMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewMode : newMode)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeResponseParams(
    pub id,
);
impl std::ops::Deref
    for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeResponseParams
{
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message
    for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeResponseParams
{
}
impl MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying
    for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeResponseParams
{
}
impl INSObject
    for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeResponseParams
{
}
impl PNSObject
    for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeResponseParams
{
}
impl std::convert::TryFrom<NSObject>
    for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<
        MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeResponseParams,
        Self::Error,
    > {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(
                MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeResponseParams(
                    parent.0,
                ),
            )
        } else {
            Err ("This NSObject cannot be downcasted to MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeResponseParams" ,)
        }
    }
}
impl IMTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeResponseParams
    for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeResponseParams
{
}
pub trait IMTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn statusText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusText)
    }
    unsafe fn setStatusText_(&self, statusText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusText : statusText)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRRVCRunModeClusterChangeToModeParams(pub id);
impl std::ops::Deref for MTRRVCRunModeClusterChangeToModeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRRVCRunModeClusterChangeToModeParams {}
impl MTRRVCRunModeClusterChangeToModeParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRRVCRunModeClusterChangeToModeParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRRVCRunModeClusterChangeToModeParams {}
impl INSObject for MTRRVCRunModeClusterChangeToModeParams {}
impl PNSObject for MTRRVCRunModeClusterChangeToModeParams {}
impl std::convert::TryFrom<NSObject> for MTRRVCRunModeClusterChangeToModeParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRRVCRunModeClusterChangeToModeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRRVCRunModeClusterChangeToModeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRRVCRunModeClusterChangeToModeParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRRVCRunModeClusterChangeToModeParams")
        }
    }
}
impl IMTRRVCRunModeClusterChangeToModeParams for MTRRVCRunModeClusterChangeToModeParams {}
pub trait IMTRRVCRunModeClusterChangeToModeParams: Sized + std::ops::Deref {
    unsafe fn getNewMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewMode)
    }
    unsafe fn setNewMode_(&self, newMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewMode : newMode)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRRVCRunModeClusterChangeToModeResponseParams(pub id);
impl std::ops::Deref for MTRRVCRunModeClusterChangeToModeResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRRVCRunModeClusterChangeToModeResponseParams {}
impl MTRRVCRunModeClusterChangeToModeResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRRVCRunModeClusterChangeToModeResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRRVCRunModeClusterChangeToModeResponseParams {}
impl INSObject for MTRRVCRunModeClusterChangeToModeResponseParams {}
impl PNSObject for MTRRVCRunModeClusterChangeToModeResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRRVCRunModeClusterChangeToModeResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRRVCRunModeClusterChangeToModeResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRRVCRunModeClusterChangeToModeResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRRVCRunModeClusterChangeToModeResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRRVCRunModeClusterChangeToModeResponseParams" ,)
        }
    }
}
impl IMTRRVCRunModeClusterChangeToModeResponseParams
    for MTRRVCRunModeClusterChangeToModeResponseParams
{
}
pub trait IMTRRVCRunModeClusterChangeToModeResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn statusText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusText)
    }
    unsafe fn setStatusText_(&self, statusText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusText : statusText)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRRVCCleanModeClusterChangeToModeParams(pub id);
impl std::ops::Deref for MTRRVCCleanModeClusterChangeToModeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRRVCCleanModeClusterChangeToModeParams {}
impl MTRRVCCleanModeClusterChangeToModeParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRRVCCleanModeClusterChangeToModeParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRRVCCleanModeClusterChangeToModeParams {}
impl INSObject for MTRRVCCleanModeClusterChangeToModeParams {}
impl PNSObject for MTRRVCCleanModeClusterChangeToModeParams {}
impl std::convert::TryFrom<NSObject> for MTRRVCCleanModeClusterChangeToModeParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRRVCCleanModeClusterChangeToModeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRRVCCleanModeClusterChangeToModeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRRVCCleanModeClusterChangeToModeParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRRVCCleanModeClusterChangeToModeParams")
        }
    }
}
impl IMTRRVCCleanModeClusterChangeToModeParams for MTRRVCCleanModeClusterChangeToModeParams {}
pub trait IMTRRVCCleanModeClusterChangeToModeParams: Sized + std::ops::Deref {
    unsafe fn getNewMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewMode)
    }
    unsafe fn setNewMode_(&self, newMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewMode : newMode)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRRVCCleanModeClusterChangeToModeResponseParams(pub id);
impl std::ops::Deref for MTRRVCCleanModeClusterChangeToModeResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRRVCCleanModeClusterChangeToModeResponseParams {}
impl MTRRVCCleanModeClusterChangeToModeResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRRVCCleanModeClusterChangeToModeResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRRVCCleanModeClusterChangeToModeResponseParams {}
impl INSObject for MTRRVCCleanModeClusterChangeToModeResponseParams {}
impl PNSObject for MTRRVCCleanModeClusterChangeToModeResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRRVCCleanModeClusterChangeToModeResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRRVCCleanModeClusterChangeToModeResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRRVCCleanModeClusterChangeToModeResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRRVCCleanModeClusterChangeToModeResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRRVCCleanModeClusterChangeToModeResponseParams" ,)
        }
    }
}
impl IMTRRVCCleanModeClusterChangeToModeResponseParams
    for MTRRVCCleanModeClusterChangeToModeResponseParams
{
}
pub trait IMTRRVCCleanModeClusterChangeToModeResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn statusText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusText)
    }
    unsafe fn setStatusText_(&self, statusText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusText : statusText)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTemperatureControlClusterSetTemperatureParams(pub id);
impl std::ops::Deref for MTRTemperatureControlClusterSetTemperatureParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTemperatureControlClusterSetTemperatureParams {}
impl MTRTemperatureControlClusterSetTemperatureParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTemperatureControlClusterSetTemperatureParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTemperatureControlClusterSetTemperatureParams {}
impl INSObject for MTRTemperatureControlClusterSetTemperatureParams {}
impl PNSObject for MTRTemperatureControlClusterSetTemperatureParams {}
impl std::convert::TryFrom<NSObject> for MTRTemperatureControlClusterSetTemperatureParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTemperatureControlClusterSetTemperatureParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTemperatureControlClusterSetTemperatureParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTemperatureControlClusterSetTemperatureParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTemperatureControlClusterSetTemperatureParams" ,)
        }
    }
}
impl IMTRTemperatureControlClusterSetTemperatureParams
    for MTRTemperatureControlClusterSetTemperatureParams
{
}
pub trait IMTRTemperatureControlClusterSetTemperatureParams: Sized + std::ops::Deref {
    unsafe fn targetTemperature(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, targetTemperature)
    }
    unsafe fn setTargetTemperature_(&self, targetTemperature: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTargetTemperature : targetTemperature)
    }
    unsafe fn targetTemperatureLevel(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, targetTemperatureLevel)
    }
    unsafe fn setTargetTemperatureLevel_(&self, targetTemperatureLevel: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTargetTemperatureLevel : targetTemperatureLevel)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDishwasherModeClusterChangeToModeParams(pub id);
impl std::ops::Deref for MTRDishwasherModeClusterChangeToModeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDishwasherModeClusterChangeToModeParams {}
impl MTRDishwasherModeClusterChangeToModeParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDishwasherModeClusterChangeToModeParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDishwasherModeClusterChangeToModeParams {}
impl INSObject for MTRDishwasherModeClusterChangeToModeParams {}
impl PNSObject for MTRDishwasherModeClusterChangeToModeParams {}
impl std::convert::TryFrom<NSObject> for MTRDishwasherModeClusterChangeToModeParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDishwasherModeClusterChangeToModeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDishwasherModeClusterChangeToModeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDishwasherModeClusterChangeToModeParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDishwasherModeClusterChangeToModeParams")
        }
    }
}
impl IMTRDishwasherModeClusterChangeToModeParams for MTRDishwasherModeClusterChangeToModeParams {}
pub trait IMTRDishwasherModeClusterChangeToModeParams: Sized + std::ops::Deref {
    unsafe fn getNewMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewMode)
    }
    unsafe fn setNewMode_(&self, newMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewMode : newMode)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDishwasherModeClusterChangeToModeResponseParams(pub id);
impl std::ops::Deref for MTRDishwasherModeClusterChangeToModeResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDishwasherModeClusterChangeToModeResponseParams {}
impl MTRDishwasherModeClusterChangeToModeResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDishwasherModeClusterChangeToModeResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDishwasherModeClusterChangeToModeResponseParams {}
impl INSObject for MTRDishwasherModeClusterChangeToModeResponseParams {}
impl PNSObject for MTRDishwasherModeClusterChangeToModeResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRDishwasherModeClusterChangeToModeResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDishwasherModeClusterChangeToModeResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDishwasherModeClusterChangeToModeResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDishwasherModeClusterChangeToModeResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDishwasherModeClusterChangeToModeResponseParams" ,)
        }
    }
}
impl IMTRDishwasherModeClusterChangeToModeResponseParams
    for MTRDishwasherModeClusterChangeToModeResponseParams
{
}
pub trait IMTRDishwasherModeClusterChangeToModeResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn statusText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusText)
    }
    unsafe fn setStatusText_(&self, statusText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusText : statusText)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSmokeCOAlarmClusterSelfTestRequestParams(pub id);
impl std::ops::Deref for MTRSmokeCOAlarmClusterSelfTestRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSmokeCOAlarmClusterSelfTestRequestParams {}
impl MTRSmokeCOAlarmClusterSelfTestRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterSelfTestRequestParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSmokeCOAlarmClusterSelfTestRequestParams {}
impl INSObject for MTRSmokeCOAlarmClusterSelfTestRequestParams {}
impl PNSObject for MTRSmokeCOAlarmClusterSelfTestRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRSmokeCOAlarmClusterSelfTestRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRSmokeCOAlarmClusterSelfTestRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSmokeCOAlarmClusterSelfTestRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRSmokeCOAlarmClusterSelfTestRequestParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRSmokeCOAlarmClusterSelfTestRequestParams")
        }
    }
}
impl IMTRSmokeCOAlarmClusterSelfTestRequestParams for MTRSmokeCOAlarmClusterSelfTestRequestParams {}
pub trait IMTRSmokeCOAlarmClusterSelfTestRequestParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDishwasherAlarmClusterResetParams(pub id);
impl std::ops::Deref for MTRDishwasherAlarmClusterResetParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDishwasherAlarmClusterResetParams {}
impl MTRDishwasherAlarmClusterResetParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDishwasherAlarmClusterResetParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDishwasherAlarmClusterResetParams {}
impl INSObject for MTRDishwasherAlarmClusterResetParams {}
impl PNSObject for MTRDishwasherAlarmClusterResetParams {}
impl std::convert::TryFrom<NSObject> for MTRDishwasherAlarmClusterResetParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDishwasherAlarmClusterResetParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDishwasherAlarmClusterResetParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDishwasherAlarmClusterResetParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDishwasherAlarmClusterResetParams")
        }
    }
}
impl IMTRDishwasherAlarmClusterResetParams for MTRDishwasherAlarmClusterResetParams {}
pub trait IMTRDishwasherAlarmClusterResetParams: Sized + std::ops::Deref {
    unsafe fn alarms(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, alarms)
    }
    unsafe fn setAlarms_(&self, alarms: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAlarms : alarms)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDishwasherAlarmClusterModifyEnabledAlarmsParams(pub id);
impl std::ops::Deref for MTRDishwasherAlarmClusterModifyEnabledAlarmsParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDishwasherAlarmClusterModifyEnabledAlarmsParams {}
impl MTRDishwasherAlarmClusterModifyEnabledAlarmsParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDishwasherAlarmClusterModifyEnabledAlarmsParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDishwasherAlarmClusterModifyEnabledAlarmsParams {}
impl INSObject for MTRDishwasherAlarmClusterModifyEnabledAlarmsParams {}
impl PNSObject for MTRDishwasherAlarmClusterModifyEnabledAlarmsParams {}
impl std::convert::TryFrom<NSObject> for MTRDishwasherAlarmClusterModifyEnabledAlarmsParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDishwasherAlarmClusterModifyEnabledAlarmsParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDishwasherAlarmClusterModifyEnabledAlarmsParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDishwasherAlarmClusterModifyEnabledAlarmsParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDishwasherAlarmClusterModifyEnabledAlarmsParams" ,)
        }
    }
}
impl IMTRDishwasherAlarmClusterModifyEnabledAlarmsParams
    for MTRDishwasherAlarmClusterModifyEnabledAlarmsParams
{
}
pub trait IMTRDishwasherAlarmClusterModifyEnabledAlarmsParams: Sized + std::ops::Deref {
    unsafe fn mask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mask)
    }
    unsafe fn setMask_(&self, mask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMask : mask)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMicrowaveOvenControlClusterSetCookingParametersParams(pub id);
impl std::ops::Deref for MTRMicrowaveOvenControlClusterSetCookingParametersParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMicrowaveOvenControlClusterSetCookingParametersParams {}
impl MTRMicrowaveOvenControlClusterSetCookingParametersParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMicrowaveOvenControlClusterSetCookingParametersParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRMicrowaveOvenControlClusterSetCookingParametersParams {}
impl INSObject for MTRMicrowaveOvenControlClusterSetCookingParametersParams {}
impl PNSObject for MTRMicrowaveOvenControlClusterSetCookingParametersParams {}
impl std::convert::TryFrom<NSObject> for MTRMicrowaveOvenControlClusterSetCookingParametersParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRMicrowaveOvenControlClusterSetCookingParametersParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMicrowaveOvenControlClusterSetCookingParametersParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMicrowaveOvenControlClusterSetCookingParametersParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRMicrowaveOvenControlClusterSetCookingParametersParams" ,)
        }
    }
}
impl IMTRMicrowaveOvenControlClusterSetCookingParametersParams
    for MTRMicrowaveOvenControlClusterSetCookingParametersParams
{
}
pub trait IMTRMicrowaveOvenControlClusterSetCookingParametersParams:
    Sized + std::ops::Deref
{
    unsafe fn cookMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cookMode)
    }
    unsafe fn setCookMode_(&self, cookMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCookMode : cookMode)
    }
    unsafe fn cookTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cookTime)
    }
    unsafe fn setCookTime_(&self, cookTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCookTime : cookTime)
    }
    unsafe fn powerSetting(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, powerSetting)
    }
    unsafe fn setPowerSetting_(&self, powerSetting: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPowerSetting : powerSetting)
    }
    unsafe fn wattSettingIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, wattSettingIndex)
    }
    unsafe fn setWattSettingIndex_(&self, wattSettingIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWattSettingIndex : wattSettingIndex)
    }
    unsafe fn startAfterSetting(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startAfterSetting)
    }
    unsafe fn setStartAfterSetting_(&self, startAfterSetting: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartAfterSetting : startAfterSetting)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMicrowaveOvenControlClusterAddMoreTimeParams(pub id);
impl std::ops::Deref for MTRMicrowaveOvenControlClusterAddMoreTimeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMicrowaveOvenControlClusterAddMoreTimeParams {}
impl MTRMicrowaveOvenControlClusterAddMoreTimeParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMicrowaveOvenControlClusterAddMoreTimeParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRMicrowaveOvenControlClusterAddMoreTimeParams {}
impl INSObject for MTRMicrowaveOvenControlClusterAddMoreTimeParams {}
impl PNSObject for MTRMicrowaveOvenControlClusterAddMoreTimeParams {}
impl std::convert::TryFrom<NSObject> for MTRMicrowaveOvenControlClusterAddMoreTimeParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRMicrowaveOvenControlClusterAddMoreTimeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMicrowaveOvenControlClusterAddMoreTimeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMicrowaveOvenControlClusterAddMoreTimeParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRMicrowaveOvenControlClusterAddMoreTimeParams" ,)
        }
    }
}
impl IMTRMicrowaveOvenControlClusterAddMoreTimeParams
    for MTRMicrowaveOvenControlClusterAddMoreTimeParams
{
}
pub trait IMTRMicrowaveOvenControlClusterAddMoreTimeParams: Sized + std::ops::Deref {
    unsafe fn timeToAdd(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeToAdd)
    }
    unsafe fn setTimeToAdd_(&self, timeToAdd: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeToAdd : timeToAdd)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalStateClusterPauseParams(pub id);
impl std::ops::Deref for MTROperationalStateClusterPauseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalStateClusterPauseParams {}
impl MTROperationalStateClusterPauseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalStateClusterPauseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTROperationalStateClusterPauseParams {}
impl INSObject for MTROperationalStateClusterPauseParams {}
impl PNSObject for MTROperationalStateClusterPauseParams {}
impl std::convert::TryFrom<NSObject> for MTROperationalStateClusterPauseParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTROperationalStateClusterPauseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalStateClusterPauseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalStateClusterPauseParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTROperationalStateClusterPauseParams")
        }
    }
}
impl IMTROperationalStateClusterPauseParams for MTROperationalStateClusterPauseParams {}
pub trait IMTROperationalStateClusterPauseParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalStateClusterStopParams(pub id);
impl std::ops::Deref for MTROperationalStateClusterStopParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalStateClusterStopParams {}
impl MTROperationalStateClusterStopParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalStateClusterStopParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTROperationalStateClusterStopParams {}
impl INSObject for MTROperationalStateClusterStopParams {}
impl PNSObject for MTROperationalStateClusterStopParams {}
impl std::convert::TryFrom<NSObject> for MTROperationalStateClusterStopParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTROperationalStateClusterStopParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalStateClusterStopParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalStateClusterStopParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTROperationalStateClusterStopParams")
        }
    }
}
impl IMTROperationalStateClusterStopParams for MTROperationalStateClusterStopParams {}
pub trait IMTROperationalStateClusterStopParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalStateClusterStartParams(pub id);
impl std::ops::Deref for MTROperationalStateClusterStartParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalStateClusterStartParams {}
impl MTROperationalStateClusterStartParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalStateClusterStartParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTROperationalStateClusterStartParams {}
impl INSObject for MTROperationalStateClusterStartParams {}
impl PNSObject for MTROperationalStateClusterStartParams {}
impl std::convert::TryFrom<NSObject> for MTROperationalStateClusterStartParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTROperationalStateClusterStartParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalStateClusterStartParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalStateClusterStartParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTROperationalStateClusterStartParams")
        }
    }
}
impl IMTROperationalStateClusterStartParams for MTROperationalStateClusterStartParams {}
pub trait IMTROperationalStateClusterStartParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalStateClusterResumeParams(pub id);
impl std::ops::Deref for MTROperationalStateClusterResumeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalStateClusterResumeParams {}
impl MTROperationalStateClusterResumeParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalStateClusterResumeParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTROperationalStateClusterResumeParams {}
impl INSObject for MTROperationalStateClusterResumeParams {}
impl PNSObject for MTROperationalStateClusterResumeParams {}
impl std::convert::TryFrom<NSObject> for MTROperationalStateClusterResumeParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTROperationalStateClusterResumeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalStateClusterResumeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalStateClusterResumeParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTROperationalStateClusterResumeParams")
        }
    }
}
impl IMTROperationalStateClusterResumeParams for MTROperationalStateClusterResumeParams {}
pub trait IMTROperationalStateClusterResumeParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalStateClusterOperationalCommandResponseParams(pub id);
impl std::ops::Deref for MTROperationalStateClusterOperationalCommandResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalStateClusterOperationalCommandResponseParams {}
impl MTROperationalStateClusterOperationalCommandResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalStateClusterOperationalCommandResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTROperationalStateClusterOperationalCommandResponseParams {}
impl INSObject for MTROperationalStateClusterOperationalCommandResponseParams {}
impl PNSObject for MTROperationalStateClusterOperationalCommandResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTROperationalStateClusterOperationalCommandResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTROperationalStateClusterOperationalCommandResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalStateClusterOperationalCommandResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalStateClusterOperationalCommandResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTROperationalStateClusterOperationalCommandResponseParams" ,)
        }
    }
}
impl IMTROperationalStateClusterOperationalCommandResponseParams
    for MTROperationalStateClusterOperationalCommandResponseParams
{
}
pub trait IMTROperationalStateClusterOperationalCommandResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn commandResponseState(&self) -> MTROperationalStateClusterErrorStateStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, commandResponseState)
    }
    unsafe fn setCommandResponseState_(
        &self,
        commandResponseState: MTROperationalStateClusterErrorStateStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCommandResponseState : commandResponseState)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRRVCOperationalStateClusterPauseParams(pub id);
impl std::ops::Deref for MTRRVCOperationalStateClusterPauseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRRVCOperationalStateClusterPauseParams {}
impl MTRRVCOperationalStateClusterPauseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRRVCOperationalStateClusterPauseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRRVCOperationalStateClusterPauseParams {}
impl INSObject for MTRRVCOperationalStateClusterPauseParams {}
impl PNSObject for MTRRVCOperationalStateClusterPauseParams {}
impl std::convert::TryFrom<NSObject> for MTRRVCOperationalStateClusterPauseParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRRVCOperationalStateClusterPauseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRRVCOperationalStateClusterPauseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRRVCOperationalStateClusterPauseParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRRVCOperationalStateClusterPauseParams")
        }
    }
}
impl IMTRRVCOperationalStateClusterPauseParams for MTRRVCOperationalStateClusterPauseParams {}
pub trait IMTRRVCOperationalStateClusterPauseParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRRVCOperationalStateClusterResumeParams(pub id);
impl std::ops::Deref for MTRRVCOperationalStateClusterResumeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRRVCOperationalStateClusterResumeParams {}
impl MTRRVCOperationalStateClusterResumeParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRRVCOperationalStateClusterResumeParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRRVCOperationalStateClusterResumeParams {}
impl INSObject for MTRRVCOperationalStateClusterResumeParams {}
impl PNSObject for MTRRVCOperationalStateClusterResumeParams {}
impl std::convert::TryFrom<NSObject> for MTRRVCOperationalStateClusterResumeParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRRVCOperationalStateClusterResumeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRRVCOperationalStateClusterResumeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRRVCOperationalStateClusterResumeParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRRVCOperationalStateClusterResumeParams")
        }
    }
}
impl IMTRRVCOperationalStateClusterResumeParams for MTRRVCOperationalStateClusterResumeParams {}
pub trait IMTRRVCOperationalStateClusterResumeParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRRVCOperationalStateClusterOperationalCommandResponseParams(pub id);
impl std::ops::Deref for MTRRVCOperationalStateClusterOperationalCommandResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRRVCOperationalStateClusterOperationalCommandResponseParams {}
impl MTRRVCOperationalStateClusterOperationalCommandResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRRVCOperationalStateClusterOperationalCommandResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRRVCOperationalStateClusterOperationalCommandResponseParams {}
impl INSObject for MTRRVCOperationalStateClusterOperationalCommandResponseParams {}
impl PNSObject for MTRRVCOperationalStateClusterOperationalCommandResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRRVCOperationalStateClusterOperationalCommandResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRRVCOperationalStateClusterOperationalCommandResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRRVCOperationalStateClusterOperationalCommandResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRRVCOperationalStateClusterOperationalCommandResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRRVCOperationalStateClusterOperationalCommandResponseParams" ,)
        }
    }
}
impl IMTRRVCOperationalStateClusterOperationalCommandResponseParams
    for MTRRVCOperationalStateClusterOperationalCommandResponseParams
{
}
pub trait IMTRRVCOperationalStateClusterOperationalCommandResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn commandResponseState(&self) -> MTRRVCOperationalStateClusterErrorStateStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, commandResponseState)
    }
    unsafe fn setCommandResponseState_(
        &self,
        commandResponseState: MTRRVCOperationalStateClusterErrorStateStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCommandResponseState : commandResponseState)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRRVCOperationalStateClusterGoHomeParams(pub id);
impl std::ops::Deref for MTRRVCOperationalStateClusterGoHomeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRRVCOperationalStateClusterGoHomeParams {}
impl MTRRVCOperationalStateClusterGoHomeParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRRVCOperationalStateClusterGoHomeParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRRVCOperationalStateClusterGoHomeParams {}
impl INSObject for MTRRVCOperationalStateClusterGoHomeParams {}
impl PNSObject for MTRRVCOperationalStateClusterGoHomeParams {}
impl std::convert::TryFrom<NSObject> for MTRRVCOperationalStateClusterGoHomeParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRRVCOperationalStateClusterGoHomeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRRVCOperationalStateClusterGoHomeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRRVCOperationalStateClusterGoHomeParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRRVCOperationalStateClusterGoHomeParams")
        }
    }
}
impl IMTRRVCOperationalStateClusterGoHomeParams for MTRRVCOperationalStateClusterGoHomeParams {}
pub trait IMTRRVCOperationalStateClusterGoHomeParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRScenesManagementClusterAddSceneParams(pub id);
impl std::ops::Deref for MTRScenesManagementClusterAddSceneParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRScenesManagementClusterAddSceneParams {}
impl MTRScenesManagementClusterAddSceneParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterAddSceneParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRScenesManagementClusterAddSceneParams {}
impl INSObject for MTRScenesManagementClusterAddSceneParams {}
impl PNSObject for MTRScenesManagementClusterAddSceneParams {}
impl std::convert::TryFrom<NSObject> for MTRScenesManagementClusterAddSceneParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRScenesManagementClusterAddSceneParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterAddSceneParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRScenesManagementClusterAddSceneParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRScenesManagementClusterAddSceneParams")
        }
    }
}
impl IMTRScenesManagementClusterAddSceneParams for MTRScenesManagementClusterAddSceneParams {}
pub trait IMTRScenesManagementClusterAddSceneParams: Sized + std::ops::Deref {
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn sceneID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sceneID)
    }
    unsafe fn setSceneID_(&self, sceneID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSceneID : sceneID)
    }
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn sceneName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sceneName)
    }
    unsafe fn setSceneName_(&self, sceneName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSceneName : sceneName)
    }
    unsafe fn extensionFieldSetStructs(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, extensionFieldSetStructs)
    }
    unsafe fn setExtensionFieldSetStructs_(&self, extensionFieldSetStructs: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExtensionFieldSetStructs : extensionFieldSetStructs)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRScenesManagementClusterAddSceneResponseParams(pub id);
impl std::ops::Deref for MTRScenesManagementClusterAddSceneResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRScenesManagementClusterAddSceneResponseParams {}
impl MTRScenesManagementClusterAddSceneResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterAddSceneResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRScenesManagementClusterAddSceneResponseParams {}
impl INSObject for MTRScenesManagementClusterAddSceneResponseParams {}
impl PNSObject for MTRScenesManagementClusterAddSceneResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRScenesManagementClusterAddSceneResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRScenesManagementClusterAddSceneResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterAddSceneResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRScenesManagementClusterAddSceneResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRScenesManagementClusterAddSceneResponseParams" ,)
        }
    }
}
impl IMTRScenesManagementClusterAddSceneResponseParams
    for MTRScenesManagementClusterAddSceneResponseParams
{
}
pub trait IMTRScenesManagementClusterAddSceneResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn sceneID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sceneID)
    }
    unsafe fn setSceneID_(&self, sceneID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSceneID : sceneID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRScenesManagementClusterViewSceneParams(pub id);
impl std::ops::Deref for MTRScenesManagementClusterViewSceneParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRScenesManagementClusterViewSceneParams {}
impl MTRScenesManagementClusterViewSceneParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterViewSceneParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRScenesManagementClusterViewSceneParams {}
impl INSObject for MTRScenesManagementClusterViewSceneParams {}
impl PNSObject for MTRScenesManagementClusterViewSceneParams {}
impl std::convert::TryFrom<NSObject> for MTRScenesManagementClusterViewSceneParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRScenesManagementClusterViewSceneParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterViewSceneParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRScenesManagementClusterViewSceneParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRScenesManagementClusterViewSceneParams")
        }
    }
}
impl IMTRScenesManagementClusterViewSceneParams for MTRScenesManagementClusterViewSceneParams {}
pub trait IMTRScenesManagementClusterViewSceneParams: Sized + std::ops::Deref {
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn sceneID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sceneID)
    }
    unsafe fn setSceneID_(&self, sceneID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSceneID : sceneID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRScenesManagementClusterViewSceneResponseParams(pub id);
impl std::ops::Deref for MTRScenesManagementClusterViewSceneResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRScenesManagementClusterViewSceneResponseParams {}
impl MTRScenesManagementClusterViewSceneResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterViewSceneResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRScenesManagementClusterViewSceneResponseParams {}
impl INSObject for MTRScenesManagementClusterViewSceneResponseParams {}
impl PNSObject for MTRScenesManagementClusterViewSceneResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRScenesManagementClusterViewSceneResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRScenesManagementClusterViewSceneResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterViewSceneResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRScenesManagementClusterViewSceneResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRScenesManagementClusterViewSceneResponseParams" ,)
        }
    }
}
impl IMTRScenesManagementClusterViewSceneResponseParams
    for MTRScenesManagementClusterViewSceneResponseParams
{
}
pub trait IMTRScenesManagementClusterViewSceneResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn sceneID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sceneID)
    }
    unsafe fn setSceneID_(&self, sceneID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSceneID : sceneID)
    }
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn sceneName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sceneName)
    }
    unsafe fn setSceneName_(&self, sceneName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSceneName : sceneName)
    }
    unsafe fn extensionFieldSetStructs(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, extensionFieldSetStructs)
    }
    unsafe fn setExtensionFieldSetStructs_(&self, extensionFieldSetStructs: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExtensionFieldSetStructs : extensionFieldSetStructs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRScenesManagementClusterRemoveSceneParams(pub id);
impl std::ops::Deref for MTRScenesManagementClusterRemoveSceneParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRScenesManagementClusterRemoveSceneParams {}
impl MTRScenesManagementClusterRemoveSceneParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterRemoveSceneParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRScenesManagementClusterRemoveSceneParams {}
impl INSObject for MTRScenesManagementClusterRemoveSceneParams {}
impl PNSObject for MTRScenesManagementClusterRemoveSceneParams {}
impl std::convert::TryFrom<NSObject> for MTRScenesManagementClusterRemoveSceneParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRScenesManagementClusterRemoveSceneParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterRemoveSceneParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRScenesManagementClusterRemoveSceneParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRScenesManagementClusterRemoveSceneParams")
        }
    }
}
impl IMTRScenesManagementClusterRemoveSceneParams for MTRScenesManagementClusterRemoveSceneParams {}
pub trait IMTRScenesManagementClusterRemoveSceneParams: Sized + std::ops::Deref {
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn sceneID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sceneID)
    }
    unsafe fn setSceneID_(&self, sceneID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSceneID : sceneID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRScenesManagementClusterRemoveSceneResponseParams(pub id);
impl std::ops::Deref for MTRScenesManagementClusterRemoveSceneResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRScenesManagementClusterRemoveSceneResponseParams {}
impl MTRScenesManagementClusterRemoveSceneResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterRemoveSceneResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRScenesManagementClusterRemoveSceneResponseParams {}
impl INSObject for MTRScenesManagementClusterRemoveSceneResponseParams {}
impl PNSObject for MTRScenesManagementClusterRemoveSceneResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRScenesManagementClusterRemoveSceneResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRScenesManagementClusterRemoveSceneResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterRemoveSceneResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRScenesManagementClusterRemoveSceneResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRScenesManagementClusterRemoveSceneResponseParams" ,)
        }
    }
}
impl IMTRScenesManagementClusterRemoveSceneResponseParams
    for MTRScenesManagementClusterRemoveSceneResponseParams
{
}
pub trait IMTRScenesManagementClusterRemoveSceneResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn sceneID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sceneID)
    }
    unsafe fn setSceneID_(&self, sceneID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSceneID : sceneID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRScenesManagementClusterRemoveAllScenesParams(pub id);
impl std::ops::Deref for MTRScenesManagementClusterRemoveAllScenesParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRScenesManagementClusterRemoveAllScenesParams {}
impl MTRScenesManagementClusterRemoveAllScenesParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterRemoveAllScenesParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRScenesManagementClusterRemoveAllScenesParams {}
impl INSObject for MTRScenesManagementClusterRemoveAllScenesParams {}
impl PNSObject for MTRScenesManagementClusterRemoveAllScenesParams {}
impl std::convert::TryFrom<NSObject> for MTRScenesManagementClusterRemoveAllScenesParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRScenesManagementClusterRemoveAllScenesParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterRemoveAllScenesParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRScenesManagementClusterRemoveAllScenesParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRScenesManagementClusterRemoveAllScenesParams" ,)
        }
    }
}
impl IMTRScenesManagementClusterRemoveAllScenesParams
    for MTRScenesManagementClusterRemoveAllScenesParams
{
}
pub trait IMTRScenesManagementClusterRemoveAllScenesParams: Sized + std::ops::Deref {
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRScenesManagementClusterRemoveAllScenesResponseParams(pub id);
impl std::ops::Deref for MTRScenesManagementClusterRemoveAllScenesResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRScenesManagementClusterRemoveAllScenesResponseParams {}
impl MTRScenesManagementClusterRemoveAllScenesResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterRemoveAllScenesResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRScenesManagementClusterRemoveAllScenesResponseParams {}
impl INSObject for MTRScenesManagementClusterRemoveAllScenesResponseParams {}
impl PNSObject for MTRScenesManagementClusterRemoveAllScenesResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRScenesManagementClusterRemoveAllScenesResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRScenesManagementClusterRemoveAllScenesResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterRemoveAllScenesResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRScenesManagementClusterRemoveAllScenesResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRScenesManagementClusterRemoveAllScenesResponseParams" ,)
        }
    }
}
impl IMTRScenesManagementClusterRemoveAllScenesResponseParams
    for MTRScenesManagementClusterRemoveAllScenesResponseParams
{
}
pub trait IMTRScenesManagementClusterRemoveAllScenesResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRScenesManagementClusterStoreSceneParams(pub id);
impl std::ops::Deref for MTRScenesManagementClusterStoreSceneParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRScenesManagementClusterStoreSceneParams {}
impl MTRScenesManagementClusterStoreSceneParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterStoreSceneParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRScenesManagementClusterStoreSceneParams {}
impl INSObject for MTRScenesManagementClusterStoreSceneParams {}
impl PNSObject for MTRScenesManagementClusterStoreSceneParams {}
impl std::convert::TryFrom<NSObject> for MTRScenesManagementClusterStoreSceneParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRScenesManagementClusterStoreSceneParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterStoreSceneParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRScenesManagementClusterStoreSceneParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRScenesManagementClusterStoreSceneParams")
        }
    }
}
impl IMTRScenesManagementClusterStoreSceneParams for MTRScenesManagementClusterStoreSceneParams {}
pub trait IMTRScenesManagementClusterStoreSceneParams: Sized + std::ops::Deref {
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn sceneID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sceneID)
    }
    unsafe fn setSceneID_(&self, sceneID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSceneID : sceneID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRScenesManagementClusterStoreSceneResponseParams(pub id);
impl std::ops::Deref for MTRScenesManagementClusterStoreSceneResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRScenesManagementClusterStoreSceneResponseParams {}
impl MTRScenesManagementClusterStoreSceneResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterStoreSceneResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRScenesManagementClusterStoreSceneResponseParams {}
impl INSObject for MTRScenesManagementClusterStoreSceneResponseParams {}
impl PNSObject for MTRScenesManagementClusterStoreSceneResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRScenesManagementClusterStoreSceneResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRScenesManagementClusterStoreSceneResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterStoreSceneResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRScenesManagementClusterStoreSceneResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRScenesManagementClusterStoreSceneResponseParams" ,)
        }
    }
}
impl IMTRScenesManagementClusterStoreSceneResponseParams
    for MTRScenesManagementClusterStoreSceneResponseParams
{
}
pub trait IMTRScenesManagementClusterStoreSceneResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn sceneID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sceneID)
    }
    unsafe fn setSceneID_(&self, sceneID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSceneID : sceneID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRScenesManagementClusterRecallSceneParams(pub id);
impl std::ops::Deref for MTRScenesManagementClusterRecallSceneParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRScenesManagementClusterRecallSceneParams {}
impl MTRScenesManagementClusterRecallSceneParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterRecallSceneParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRScenesManagementClusterRecallSceneParams {}
impl INSObject for MTRScenesManagementClusterRecallSceneParams {}
impl PNSObject for MTRScenesManagementClusterRecallSceneParams {}
impl std::convert::TryFrom<NSObject> for MTRScenesManagementClusterRecallSceneParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRScenesManagementClusterRecallSceneParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterRecallSceneParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRScenesManagementClusterRecallSceneParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRScenesManagementClusterRecallSceneParams")
        }
    }
}
impl IMTRScenesManagementClusterRecallSceneParams for MTRScenesManagementClusterRecallSceneParams {}
pub trait IMTRScenesManagementClusterRecallSceneParams: Sized + std::ops::Deref {
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn sceneID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sceneID)
    }
    unsafe fn setSceneID_(&self, sceneID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSceneID : sceneID)
    }
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRScenesManagementClusterGetSceneMembershipParams(pub id);
impl std::ops::Deref for MTRScenesManagementClusterGetSceneMembershipParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRScenesManagementClusterGetSceneMembershipParams {}
impl MTRScenesManagementClusterGetSceneMembershipParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterGetSceneMembershipParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRScenesManagementClusterGetSceneMembershipParams {}
impl INSObject for MTRScenesManagementClusterGetSceneMembershipParams {}
impl PNSObject for MTRScenesManagementClusterGetSceneMembershipParams {}
impl std::convert::TryFrom<NSObject> for MTRScenesManagementClusterGetSceneMembershipParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRScenesManagementClusterGetSceneMembershipParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterGetSceneMembershipParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRScenesManagementClusterGetSceneMembershipParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRScenesManagementClusterGetSceneMembershipParams" ,)
        }
    }
}
impl IMTRScenesManagementClusterGetSceneMembershipParams
    for MTRScenesManagementClusterGetSceneMembershipParams
{
}
pub trait IMTRScenesManagementClusterGetSceneMembershipParams: Sized + std::ops::Deref {
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRScenesManagementClusterGetSceneMembershipResponseParams(pub id);
impl std::ops::Deref for MTRScenesManagementClusterGetSceneMembershipResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRScenesManagementClusterGetSceneMembershipResponseParams {}
impl MTRScenesManagementClusterGetSceneMembershipResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterGetSceneMembershipResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRScenesManagementClusterGetSceneMembershipResponseParams {}
impl INSObject for MTRScenesManagementClusterGetSceneMembershipResponseParams {}
impl PNSObject for MTRScenesManagementClusterGetSceneMembershipResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRScenesManagementClusterGetSceneMembershipResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRScenesManagementClusterGetSceneMembershipResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterGetSceneMembershipResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRScenesManagementClusterGetSceneMembershipResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRScenesManagementClusterGetSceneMembershipResponseParams" ,)
        }
    }
}
impl IMTRScenesManagementClusterGetSceneMembershipResponseParams
    for MTRScenesManagementClusterGetSceneMembershipResponseParams
{
}
pub trait IMTRScenesManagementClusterGetSceneMembershipResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn capacity(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, capacity)
    }
    unsafe fn setCapacity_(&self, capacity: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCapacity : capacity)
    }
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn sceneList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sceneList)
    }
    unsafe fn setSceneList_(&self, sceneList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSceneList : sceneList)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRScenesManagementClusterCopySceneParams(pub id);
impl std::ops::Deref for MTRScenesManagementClusterCopySceneParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRScenesManagementClusterCopySceneParams {}
impl MTRScenesManagementClusterCopySceneParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterCopySceneParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRScenesManagementClusterCopySceneParams {}
impl INSObject for MTRScenesManagementClusterCopySceneParams {}
impl PNSObject for MTRScenesManagementClusterCopySceneParams {}
impl std::convert::TryFrom<NSObject> for MTRScenesManagementClusterCopySceneParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRScenesManagementClusterCopySceneParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterCopySceneParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRScenesManagementClusterCopySceneParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRScenesManagementClusterCopySceneParams")
        }
    }
}
impl IMTRScenesManagementClusterCopySceneParams for MTRScenesManagementClusterCopySceneParams {}
pub trait IMTRScenesManagementClusterCopySceneParams: Sized + std::ops::Deref {
    unsafe fn mode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mode)
    }
    unsafe fn setMode_(&self, mode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMode : mode)
    }
    unsafe fn groupIdentifierFrom(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupIdentifierFrom)
    }
    unsafe fn setGroupIdentifierFrom_(&self, groupIdentifierFrom: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupIdentifierFrom : groupIdentifierFrom)
    }
    unsafe fn sceneIdentifierFrom(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sceneIdentifierFrom)
    }
    unsafe fn setSceneIdentifierFrom_(&self, sceneIdentifierFrom: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSceneIdentifierFrom : sceneIdentifierFrom)
    }
    unsafe fn groupIdentifierTo(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupIdentifierTo)
    }
    unsafe fn setGroupIdentifierTo_(&self, groupIdentifierTo: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupIdentifierTo : groupIdentifierTo)
    }
    unsafe fn sceneIdentifierTo(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sceneIdentifierTo)
    }
    unsafe fn setSceneIdentifierTo_(&self, sceneIdentifierTo: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSceneIdentifierTo : sceneIdentifierTo)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRScenesManagementClusterCopySceneResponseParams(pub id);
impl std::ops::Deref for MTRScenesManagementClusterCopySceneResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRScenesManagementClusterCopySceneResponseParams {}
impl MTRScenesManagementClusterCopySceneResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterCopySceneResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRScenesManagementClusterCopySceneResponseParams {}
impl INSObject for MTRScenesManagementClusterCopySceneResponseParams {}
impl PNSObject for MTRScenesManagementClusterCopySceneResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRScenesManagementClusterCopySceneResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRScenesManagementClusterCopySceneResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRScenesManagementClusterCopySceneResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRScenesManagementClusterCopySceneResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRScenesManagementClusterCopySceneResponseParams" ,)
        }
    }
}
impl IMTRScenesManagementClusterCopySceneResponseParams
    for MTRScenesManagementClusterCopySceneResponseParams
{
}
pub trait IMTRScenesManagementClusterCopySceneResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn groupIdentifierFrom(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupIdentifierFrom)
    }
    unsafe fn setGroupIdentifierFrom_(&self, groupIdentifierFrom: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupIdentifierFrom : groupIdentifierFrom)
    }
    unsafe fn sceneIdentifierFrom(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sceneIdentifierFrom)
    }
    unsafe fn setSceneIdentifierFrom_(&self, sceneIdentifierFrom: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSceneIdentifierFrom : sceneIdentifierFrom)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupcastClusterJoinGroupParams(pub id);
impl std::ops::Deref for MTRGroupcastClusterJoinGroupParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupcastClusterJoinGroupParams {}
impl MTRGroupcastClusterJoinGroupParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupcastClusterJoinGroupParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRGroupcastClusterJoinGroupParams {}
impl INSObject for MTRGroupcastClusterJoinGroupParams {}
impl PNSObject for MTRGroupcastClusterJoinGroupParams {}
impl std::convert::TryFrom<NSObject> for MTRGroupcastClusterJoinGroupParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRGroupcastClusterJoinGroupParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupcastClusterJoinGroupParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupcastClusterJoinGroupParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRGroupcastClusterJoinGroupParams")
        }
    }
}
impl IMTRGroupcastClusterJoinGroupParams for MTRGroupcastClusterJoinGroupParams {}
pub trait IMTRGroupcastClusterJoinGroupParams: Sized + std::ops::Deref {
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn endpoints(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoints)
    }
    unsafe fn setEndpoints_(&self, endpoints: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoints : endpoints)
    }
    unsafe fn keyID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, keyID)
    }
    unsafe fn setKeyID_(&self, keyID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setKeyID : keyID)
    }
    unsafe fn key(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, key)
    }
    unsafe fn setKey_(&self, key: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setKey : key)
    }
    unsafe fn gracePeriod(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, gracePeriod)
    }
    unsafe fn setGracePeriod_(&self, gracePeriod: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGracePeriod : gracePeriod)
    }
    unsafe fn useAuxiliaryACL(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, useAuxiliaryACL)
    }
    unsafe fn setUseAuxiliaryACL_(&self, useAuxiliaryACL: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUseAuxiliaryACL : useAuxiliaryACL)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupcastClusterLeaveGroupParams(pub id);
impl std::ops::Deref for MTRGroupcastClusterLeaveGroupParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupcastClusterLeaveGroupParams {}
impl MTRGroupcastClusterLeaveGroupParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupcastClusterLeaveGroupParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRGroupcastClusterLeaveGroupParams {}
impl INSObject for MTRGroupcastClusterLeaveGroupParams {}
impl PNSObject for MTRGroupcastClusterLeaveGroupParams {}
impl std::convert::TryFrom<NSObject> for MTRGroupcastClusterLeaveGroupParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRGroupcastClusterLeaveGroupParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupcastClusterLeaveGroupParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupcastClusterLeaveGroupParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRGroupcastClusterLeaveGroupParams")
        }
    }
}
impl IMTRGroupcastClusterLeaveGroupParams for MTRGroupcastClusterLeaveGroupParams {}
pub trait IMTRGroupcastClusterLeaveGroupParams: Sized + std::ops::Deref {
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn endpoints(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoints)
    }
    unsafe fn setEndpoints_(&self, endpoints: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoints : endpoints)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupcastClusterLeaveGroupResponseParams(pub id);
impl std::ops::Deref for MTRGroupcastClusterLeaveGroupResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupcastClusterLeaveGroupResponseParams {}
impl MTRGroupcastClusterLeaveGroupResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupcastClusterLeaveGroupResponseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRGroupcastClusterLeaveGroupResponseParams {}
impl INSObject for MTRGroupcastClusterLeaveGroupResponseParams {}
impl PNSObject for MTRGroupcastClusterLeaveGroupResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRGroupcastClusterLeaveGroupResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGroupcastClusterLeaveGroupResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupcastClusterLeaveGroupResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupcastClusterLeaveGroupResponseParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRGroupcastClusterLeaveGroupResponseParams")
        }
    }
}
impl IMTRGroupcastClusterLeaveGroupResponseParams for MTRGroupcastClusterLeaveGroupResponseParams {}
pub trait IMTRGroupcastClusterLeaveGroupResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn endpoints(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoints)
    }
    unsafe fn setEndpoints_(&self, endpoints: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoints : endpoints)
    }
    unsafe fn listTooLarge(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, listTooLarge)
    }
    unsafe fn setListTooLarge_(&self, listTooLarge: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setListTooLarge : listTooLarge)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupcastClusterUpdateGroupKeyParams(pub id);
impl std::ops::Deref for MTRGroupcastClusterUpdateGroupKeyParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupcastClusterUpdateGroupKeyParams {}
impl MTRGroupcastClusterUpdateGroupKeyParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupcastClusterUpdateGroupKeyParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRGroupcastClusterUpdateGroupKeyParams {}
impl INSObject for MTRGroupcastClusterUpdateGroupKeyParams {}
impl PNSObject for MTRGroupcastClusterUpdateGroupKeyParams {}
impl std::convert::TryFrom<NSObject> for MTRGroupcastClusterUpdateGroupKeyParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRGroupcastClusterUpdateGroupKeyParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupcastClusterUpdateGroupKeyParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupcastClusterUpdateGroupKeyParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRGroupcastClusterUpdateGroupKeyParams")
        }
    }
}
impl IMTRGroupcastClusterUpdateGroupKeyParams for MTRGroupcastClusterUpdateGroupKeyParams {}
pub trait IMTRGroupcastClusterUpdateGroupKeyParams: Sized + std::ops::Deref {
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn keyID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, keyID)
    }
    unsafe fn setKeyID_(&self, keyID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setKeyID : keyID)
    }
    unsafe fn key(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, key)
    }
    unsafe fn setKey_(&self, key: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setKey : key)
    }
    unsafe fn gracePeriod(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, gracePeriod)
    }
    unsafe fn setGracePeriod_(&self, gracePeriod: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGracePeriod : gracePeriod)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupcastClusterExpireGracePeriodParams(pub id);
impl std::ops::Deref for MTRGroupcastClusterExpireGracePeriodParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupcastClusterExpireGracePeriodParams {}
impl MTRGroupcastClusterExpireGracePeriodParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupcastClusterExpireGracePeriodParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRGroupcastClusterExpireGracePeriodParams {}
impl INSObject for MTRGroupcastClusterExpireGracePeriodParams {}
impl PNSObject for MTRGroupcastClusterExpireGracePeriodParams {}
impl std::convert::TryFrom<NSObject> for MTRGroupcastClusterExpireGracePeriodParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGroupcastClusterExpireGracePeriodParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupcastClusterExpireGracePeriodParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupcastClusterExpireGracePeriodParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRGroupcastClusterExpireGracePeriodParams")
        }
    }
}
impl IMTRGroupcastClusterExpireGracePeriodParams for MTRGroupcastClusterExpireGracePeriodParams {}
pub trait IMTRGroupcastClusterExpireGracePeriodParams: Sized + std::ops::Deref {
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRGroupcastClusterConfigureAuxiliaryACLParams(pub id);
impl std::ops::Deref for MTRGroupcastClusterConfigureAuxiliaryACLParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRGroupcastClusterConfigureAuxiliaryACLParams {}
impl MTRGroupcastClusterConfigureAuxiliaryACLParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRGroupcastClusterConfigureAuxiliaryACLParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRGroupcastClusterConfigureAuxiliaryACLParams {}
impl INSObject for MTRGroupcastClusterConfigureAuxiliaryACLParams {}
impl PNSObject for MTRGroupcastClusterConfigureAuxiliaryACLParams {}
impl std::convert::TryFrom<NSObject> for MTRGroupcastClusterConfigureAuxiliaryACLParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRGroupcastClusterConfigureAuxiliaryACLParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRGroupcastClusterConfigureAuxiliaryACLParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRGroupcastClusterConfigureAuxiliaryACLParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRGroupcastClusterConfigureAuxiliaryACLParams" ,)
        }
    }
}
impl IMTRGroupcastClusterConfigureAuxiliaryACLParams
    for MTRGroupcastClusterConfigureAuxiliaryACLParams
{
}
pub trait IMTRGroupcastClusterConfigureAuxiliaryACLParams: Sized + std::ops::Deref {
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn useAuxiliaryACL(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, useAuxiliaryACL)
    }
    unsafe fn setUseAuxiliaryACL_(&self, useAuxiliaryACL: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUseAuxiliaryACL : useAuxiliaryACL)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRHEPAFilterMonitoringClusterResetConditionParams(pub id);
impl std::ops::Deref for MTRHEPAFilterMonitoringClusterResetConditionParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRHEPAFilterMonitoringClusterResetConditionParams {}
impl MTRHEPAFilterMonitoringClusterResetConditionParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRHEPAFilterMonitoringClusterResetConditionParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRHEPAFilterMonitoringClusterResetConditionParams {}
impl INSObject for MTRHEPAFilterMonitoringClusterResetConditionParams {}
impl PNSObject for MTRHEPAFilterMonitoringClusterResetConditionParams {}
impl std::convert::TryFrom<NSObject> for MTRHEPAFilterMonitoringClusterResetConditionParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRHEPAFilterMonitoringClusterResetConditionParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRHEPAFilterMonitoringClusterResetConditionParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRHEPAFilterMonitoringClusterResetConditionParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRHEPAFilterMonitoringClusterResetConditionParams" ,)
        }
    }
}
impl IMTRHEPAFilterMonitoringClusterResetConditionParams
    for MTRHEPAFilterMonitoringClusterResetConditionParams
{
}
pub trait IMTRHEPAFilterMonitoringClusterResetConditionParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRActivatedCarbonFilterMonitoringClusterResetConditionParams(pub id);
impl std::ops::Deref for MTRActivatedCarbonFilterMonitoringClusterResetConditionParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRActivatedCarbonFilterMonitoringClusterResetConditionParams {}
impl MTRActivatedCarbonFilterMonitoringClusterResetConditionParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRActivatedCarbonFilterMonitoringClusterResetConditionParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRActivatedCarbonFilterMonitoringClusterResetConditionParams {}
impl INSObject for MTRActivatedCarbonFilterMonitoringClusterResetConditionParams {}
impl PNSObject for MTRActivatedCarbonFilterMonitoringClusterResetConditionParams {}
impl std::convert::TryFrom<NSObject>
    for MTRActivatedCarbonFilterMonitoringClusterResetConditionParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRActivatedCarbonFilterMonitoringClusterResetConditionParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRActivatedCarbonFilterMonitoringClusterResetConditionParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRActivatedCarbonFilterMonitoringClusterResetConditionParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRActivatedCarbonFilterMonitoringClusterResetConditionParams" ,)
        }
    }
}
impl IMTRActivatedCarbonFilterMonitoringClusterResetConditionParams
    for MTRActivatedCarbonFilterMonitoringClusterResetConditionParams
{
}
pub trait IMTRActivatedCarbonFilterMonitoringClusterResetConditionParams:
    Sized + std::ops::Deref
{
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBooleanStateConfigurationClusterSuppressAlarmParams(pub id);
impl std::ops::Deref for MTRBooleanStateConfigurationClusterSuppressAlarmParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBooleanStateConfigurationClusterSuppressAlarmParams {}
impl MTRBooleanStateConfigurationClusterSuppressAlarmParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBooleanStateConfigurationClusterSuppressAlarmParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRBooleanStateConfigurationClusterSuppressAlarmParams {}
impl INSObject for MTRBooleanStateConfigurationClusterSuppressAlarmParams {}
impl PNSObject for MTRBooleanStateConfigurationClusterSuppressAlarmParams {}
impl std::convert::TryFrom<NSObject> for MTRBooleanStateConfigurationClusterSuppressAlarmParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRBooleanStateConfigurationClusterSuppressAlarmParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBooleanStateConfigurationClusterSuppressAlarmParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRBooleanStateConfigurationClusterSuppressAlarmParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRBooleanStateConfigurationClusterSuppressAlarmParams" ,)
        }
    }
}
impl IMTRBooleanStateConfigurationClusterSuppressAlarmParams
    for MTRBooleanStateConfigurationClusterSuppressAlarmParams
{
}
pub trait IMTRBooleanStateConfigurationClusterSuppressAlarmParams: Sized + std::ops::Deref {
    unsafe fn alarmsToSuppress(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, alarmsToSuppress)
    }
    unsafe fn setAlarmsToSuppress_(&self, alarmsToSuppress: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAlarmsToSuppress : alarmsToSuppress)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBooleanStateConfigurationClusterEnableDisableAlarmParams(pub id);
impl std::ops::Deref for MTRBooleanStateConfigurationClusterEnableDisableAlarmParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBooleanStateConfigurationClusterEnableDisableAlarmParams {}
impl MTRBooleanStateConfigurationClusterEnableDisableAlarmParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBooleanStateConfigurationClusterEnableDisableAlarmParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRBooleanStateConfigurationClusterEnableDisableAlarmParams {}
impl INSObject for MTRBooleanStateConfigurationClusterEnableDisableAlarmParams {}
impl PNSObject for MTRBooleanStateConfigurationClusterEnableDisableAlarmParams {}
impl std::convert::TryFrom<NSObject>
    for MTRBooleanStateConfigurationClusterEnableDisableAlarmParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRBooleanStateConfigurationClusterEnableDisableAlarmParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBooleanStateConfigurationClusterEnableDisableAlarmParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRBooleanStateConfigurationClusterEnableDisableAlarmParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRBooleanStateConfigurationClusterEnableDisableAlarmParams" ,)
        }
    }
}
impl IMTRBooleanStateConfigurationClusterEnableDisableAlarmParams
    for MTRBooleanStateConfigurationClusterEnableDisableAlarmParams
{
}
pub trait IMTRBooleanStateConfigurationClusterEnableDisableAlarmParams:
    Sized + std::ops::Deref
{
    unsafe fn alarmsToEnableDisable(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, alarmsToEnableDisable)
    }
    unsafe fn setAlarmsToEnableDisable_(&self, alarmsToEnableDisable: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAlarmsToEnableDisable : alarmsToEnableDisable)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRValveConfigurationAndControlClusterOpenParams(pub id);
impl std::ops::Deref for MTRValveConfigurationAndControlClusterOpenParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRValveConfigurationAndControlClusterOpenParams {}
impl MTRValveConfigurationAndControlClusterOpenParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRValveConfigurationAndControlClusterOpenParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRValveConfigurationAndControlClusterOpenParams {}
impl INSObject for MTRValveConfigurationAndControlClusterOpenParams {}
impl PNSObject for MTRValveConfigurationAndControlClusterOpenParams {}
impl std::convert::TryFrom<NSObject> for MTRValveConfigurationAndControlClusterOpenParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRValveConfigurationAndControlClusterOpenParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRValveConfigurationAndControlClusterOpenParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRValveConfigurationAndControlClusterOpenParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRValveConfigurationAndControlClusterOpenParams" ,)
        }
    }
}
impl IMTRValveConfigurationAndControlClusterOpenParams
    for MTRValveConfigurationAndControlClusterOpenParams
{
}
pub trait IMTRValveConfigurationAndControlClusterOpenParams: Sized + std::ops::Deref {
    unsafe fn openDuration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, openDuration)
    }
    unsafe fn setOpenDuration_(&self, openDuration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOpenDuration : openDuration)
    }
    unsafe fn targetLevel(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, targetLevel)
    }
    unsafe fn setTargetLevel_(&self, targetLevel: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTargetLevel : targetLevel)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRValveConfigurationAndControlClusterCloseParams(pub id);
impl std::ops::Deref for MTRValveConfigurationAndControlClusterCloseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRValveConfigurationAndControlClusterCloseParams {}
impl MTRValveConfigurationAndControlClusterCloseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRValveConfigurationAndControlClusterCloseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRValveConfigurationAndControlClusterCloseParams {}
impl INSObject for MTRValveConfigurationAndControlClusterCloseParams {}
impl PNSObject for MTRValveConfigurationAndControlClusterCloseParams {}
impl std::convert::TryFrom<NSObject> for MTRValveConfigurationAndControlClusterCloseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRValveConfigurationAndControlClusterCloseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRValveConfigurationAndControlClusterCloseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRValveConfigurationAndControlClusterCloseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRValveConfigurationAndControlClusterCloseParams" ,)
        }
    }
}
impl IMTRValveConfigurationAndControlClusterCloseParams
    for MTRValveConfigurationAndControlClusterCloseParams
{
}
pub trait IMTRValveConfigurationAndControlClusterCloseParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWaterHeaterManagementClusterBoostParams(pub id);
impl std::ops::Deref for MTRWaterHeaterManagementClusterBoostParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWaterHeaterManagementClusterBoostParams {}
impl MTRWaterHeaterManagementClusterBoostParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWaterHeaterManagementClusterBoostParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRWaterHeaterManagementClusterBoostParams {}
impl INSObject for MTRWaterHeaterManagementClusterBoostParams {}
impl PNSObject for MTRWaterHeaterManagementClusterBoostParams {}
impl std::convert::TryFrom<NSObject> for MTRWaterHeaterManagementClusterBoostParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWaterHeaterManagementClusterBoostParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWaterHeaterManagementClusterBoostParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWaterHeaterManagementClusterBoostParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRWaterHeaterManagementClusterBoostParams")
        }
    }
}
impl IMTRWaterHeaterManagementClusterBoostParams for MTRWaterHeaterManagementClusterBoostParams {}
pub trait IMTRWaterHeaterManagementClusterBoostParams: Sized + std::ops::Deref {
    unsafe fn boostInfo(&self) -> MTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, boostInfo)
    }
    unsafe fn setBoostInfo_(
        &self,
        boostInfo: MTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBoostInfo : boostInfo)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWaterHeaterManagementClusterCancelBoostParams(pub id);
impl std::ops::Deref for MTRWaterHeaterManagementClusterCancelBoostParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWaterHeaterManagementClusterCancelBoostParams {}
impl MTRWaterHeaterManagementClusterCancelBoostParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWaterHeaterManagementClusterCancelBoostParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWaterHeaterManagementClusterCancelBoostParams {}
impl INSObject for MTRWaterHeaterManagementClusterCancelBoostParams {}
impl PNSObject for MTRWaterHeaterManagementClusterCancelBoostParams {}
impl std::convert::TryFrom<NSObject> for MTRWaterHeaterManagementClusterCancelBoostParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWaterHeaterManagementClusterCancelBoostParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWaterHeaterManagementClusterCancelBoostParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWaterHeaterManagementClusterCancelBoostParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWaterHeaterManagementClusterCancelBoostParams" ,)
        }
    }
}
impl IMTRWaterHeaterManagementClusterCancelBoostParams
    for MTRWaterHeaterManagementClusterCancelBoostParams
{
}
pub trait IMTRWaterHeaterManagementClusterCancelBoostParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityPriceClusterGetDetailedPriceRequestParams(pub id);
impl std::ops::Deref for MTRCommodityPriceClusterGetDetailedPriceRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityPriceClusterGetDetailedPriceRequestParams {}
impl MTRCommodityPriceClusterGetDetailedPriceRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityPriceClusterGetDetailedPriceRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCommodityPriceClusterGetDetailedPriceRequestParams {}
impl INSObject for MTRCommodityPriceClusterGetDetailedPriceRequestParams {}
impl PNSObject for MTRCommodityPriceClusterGetDetailedPriceRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRCommodityPriceClusterGetDetailedPriceRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommodityPriceClusterGetDetailedPriceRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityPriceClusterGetDetailedPriceRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityPriceClusterGetDetailedPriceRequestParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCommodityPriceClusterGetDetailedPriceRequestParams" ,)
        }
    }
}
impl IMTRCommodityPriceClusterGetDetailedPriceRequestParams
    for MTRCommodityPriceClusterGetDetailedPriceRequestParams
{
}
pub trait IMTRCommodityPriceClusterGetDetailedPriceRequestParams: Sized + std::ops::Deref {
    unsafe fn details(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, details)
    }
    unsafe fn setDetails_(&self, details: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDetails : details)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityPriceClusterGetDetailedPriceResponseParams(pub id);
impl std::ops::Deref for MTRCommodityPriceClusterGetDetailedPriceResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityPriceClusterGetDetailedPriceResponseParams {}
impl MTRCommodityPriceClusterGetDetailedPriceResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityPriceClusterGetDetailedPriceResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCommodityPriceClusterGetDetailedPriceResponseParams {}
impl INSObject for MTRCommodityPriceClusterGetDetailedPriceResponseParams {}
impl PNSObject for MTRCommodityPriceClusterGetDetailedPriceResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRCommodityPriceClusterGetDetailedPriceResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommodityPriceClusterGetDetailedPriceResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityPriceClusterGetDetailedPriceResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityPriceClusterGetDetailedPriceResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCommodityPriceClusterGetDetailedPriceResponseParams" ,)
        }
    }
}
impl IMTRCommodityPriceClusterGetDetailedPriceResponseParams
    for MTRCommodityPriceClusterGetDetailedPriceResponseParams
{
}
pub trait IMTRCommodityPriceClusterGetDetailedPriceResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn currentPrice(&self) -> MTRCommodityPriceClusterCommodityPriceStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentPrice)
    }
    unsafe fn setCurrentPrice_(&self, currentPrice: MTRCommodityPriceClusterCommodityPriceStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrentPrice : currentPrice)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityPriceClusterGetDetailedForecastRequestParams(pub id);
impl std::ops::Deref for MTRCommodityPriceClusterGetDetailedForecastRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityPriceClusterGetDetailedForecastRequestParams {}
impl MTRCommodityPriceClusterGetDetailedForecastRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityPriceClusterGetDetailedForecastRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCommodityPriceClusterGetDetailedForecastRequestParams {}
impl INSObject for MTRCommodityPriceClusterGetDetailedForecastRequestParams {}
impl PNSObject for MTRCommodityPriceClusterGetDetailedForecastRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRCommodityPriceClusterGetDetailedForecastRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommodityPriceClusterGetDetailedForecastRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityPriceClusterGetDetailedForecastRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityPriceClusterGetDetailedForecastRequestParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCommodityPriceClusterGetDetailedForecastRequestParams" ,)
        }
    }
}
impl IMTRCommodityPriceClusterGetDetailedForecastRequestParams
    for MTRCommodityPriceClusterGetDetailedForecastRequestParams
{
}
pub trait IMTRCommodityPriceClusterGetDetailedForecastRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn details(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, details)
    }
    unsafe fn setDetails_(&self, details: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDetails : details)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityPriceClusterGetDetailedForecastResponseParams(pub id);
impl std::ops::Deref for MTRCommodityPriceClusterGetDetailedForecastResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityPriceClusterGetDetailedForecastResponseParams {}
impl MTRCommodityPriceClusterGetDetailedForecastResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityPriceClusterGetDetailedForecastResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCommodityPriceClusterGetDetailedForecastResponseParams {}
impl INSObject for MTRCommodityPriceClusterGetDetailedForecastResponseParams {}
impl PNSObject for MTRCommodityPriceClusterGetDetailedForecastResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRCommodityPriceClusterGetDetailedForecastResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommodityPriceClusterGetDetailedForecastResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityPriceClusterGetDetailedForecastResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityPriceClusterGetDetailedForecastResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCommodityPriceClusterGetDetailedForecastResponseParams" ,)
        }
    }
}
impl IMTRCommodityPriceClusterGetDetailedForecastResponseParams
    for MTRCommodityPriceClusterGetDetailedForecastResponseParams
{
}
pub trait IMTRCommodityPriceClusterGetDetailedForecastResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn priceForecast(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, priceForecast)
    }
    unsafe fn setPriceForecast_(&self, priceForecast: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPriceForecast : priceForecast)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMessagesClusterPresentMessagesRequestParams(pub id);
impl std::ops::Deref for MTRMessagesClusterPresentMessagesRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMessagesClusterPresentMessagesRequestParams {}
impl MTRMessagesClusterPresentMessagesRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMessagesClusterPresentMessagesRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRMessagesClusterPresentMessagesRequestParams {}
impl INSObject for MTRMessagesClusterPresentMessagesRequestParams {}
impl PNSObject for MTRMessagesClusterPresentMessagesRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRMessagesClusterPresentMessagesRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRMessagesClusterPresentMessagesRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMessagesClusterPresentMessagesRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMessagesClusterPresentMessagesRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRMessagesClusterPresentMessagesRequestParams" ,)
        }
    }
}
impl IMTRMessagesClusterPresentMessagesRequestParams
    for MTRMessagesClusterPresentMessagesRequestParams
{
}
pub trait IMTRMessagesClusterPresentMessagesRequestParams: Sized + std::ops::Deref {
    unsafe fn messageID(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, messageID)
    }
    unsafe fn setMessageID_(&self, messageID: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMessageID : messageID)
    }
    unsafe fn priority(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, priority)
    }
    unsafe fn setPriority_(&self, priority: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPriority : priority)
    }
    unsafe fn messageControl(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, messageControl)
    }
    unsafe fn setMessageControl_(&self, messageControl: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMessageControl : messageControl)
    }
    unsafe fn startTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startTime)
    }
    unsafe fn setStartTime_(&self, startTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartTime : startTime)
    }
    unsafe fn duration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, duration)
    }
    unsafe fn setDuration_(&self, duration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDuration : duration)
    }
    unsafe fn messageText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, messageText)
    }
    unsafe fn setMessageText_(&self, messageText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMessageText : messageText)
    }
    unsafe fn responses(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, responses)
    }
    unsafe fn setResponses_(&self, responses: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setResponses : responses)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMessagesClusterCancelMessagesRequestParams(pub id);
impl std::ops::Deref for MTRMessagesClusterCancelMessagesRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMessagesClusterCancelMessagesRequestParams {}
impl MTRMessagesClusterCancelMessagesRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMessagesClusterCancelMessagesRequestParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMessagesClusterCancelMessagesRequestParams {}
impl INSObject for MTRMessagesClusterCancelMessagesRequestParams {}
impl PNSObject for MTRMessagesClusterCancelMessagesRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRMessagesClusterCancelMessagesRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRMessagesClusterCancelMessagesRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMessagesClusterCancelMessagesRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMessagesClusterCancelMessagesRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRMessagesClusterCancelMessagesRequestParams" ,)
        }
    }
}
impl IMTRMessagesClusterCancelMessagesRequestParams
    for MTRMessagesClusterCancelMessagesRequestParams
{
}
pub trait IMTRMessagesClusterCancelMessagesRequestParams: Sized + std::ops::Deref {
    unsafe fn messageIDs(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, messageIDs)
    }
    unsafe fn setMessageIDs_(&self, messageIDs: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMessageIDs : messageIDs)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementClusterPowerAdjustRequestParams(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementClusterPowerAdjustRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementClusterPowerAdjustRequestParams {}
impl MTRDeviceEnergyManagementClusterPowerAdjustRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterPowerAdjustRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementClusterPowerAdjustRequestParams {}
impl INSObject for MTRDeviceEnergyManagementClusterPowerAdjustRequestParams {}
impl PNSObject for MTRDeviceEnergyManagementClusterPowerAdjustRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRDeviceEnergyManagementClusterPowerAdjustRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementClusterPowerAdjustRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterPowerAdjustRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementClusterPowerAdjustRequestParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDeviceEnergyManagementClusterPowerAdjustRequestParams" ,)
        }
    }
}
impl IMTRDeviceEnergyManagementClusterPowerAdjustRequestParams
    for MTRDeviceEnergyManagementClusterPowerAdjustRequestParams
{
}
pub trait IMTRDeviceEnergyManagementClusterPowerAdjustRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn power(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, power)
    }
    unsafe fn setPower_(&self, power: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPower : power)
    }
    unsafe fn duration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, duration)
    }
    unsafe fn setDuration_(&self, duration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDuration : duration)
    }
    unsafe fn cause(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cause)
    }
    unsafe fn setCause_(&self, cause: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCause : cause)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementClusterCancelPowerAdjustRequestParams(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementClusterCancelPowerAdjustRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementClusterCancelPowerAdjustRequestParams {}
impl MTRDeviceEnergyManagementClusterCancelPowerAdjustRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterCancelPowerAdjustRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementClusterCancelPowerAdjustRequestParams {}
impl INSObject for MTRDeviceEnergyManagementClusterCancelPowerAdjustRequestParams {}
impl PNSObject for MTRDeviceEnergyManagementClusterCancelPowerAdjustRequestParams {}
impl std::convert::TryFrom<NSObject>
    for MTRDeviceEnergyManagementClusterCancelPowerAdjustRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementClusterCancelPowerAdjustRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterCancelPowerAdjustRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementClusterCancelPowerAdjustRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDeviceEnergyManagementClusterCancelPowerAdjustRequestParams" ,)
        }
    }
}
impl IMTRDeviceEnergyManagementClusterCancelPowerAdjustRequestParams
    for MTRDeviceEnergyManagementClusterCancelPowerAdjustRequestParams
{
}
pub trait IMTRDeviceEnergyManagementClusterCancelPowerAdjustRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementClusterStartTimeAdjustRequestParams(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementClusterStartTimeAdjustRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementClusterStartTimeAdjustRequestParams {}
impl MTRDeviceEnergyManagementClusterStartTimeAdjustRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterStartTimeAdjustRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementClusterStartTimeAdjustRequestParams {}
impl INSObject for MTRDeviceEnergyManagementClusterStartTimeAdjustRequestParams {}
impl PNSObject for MTRDeviceEnergyManagementClusterStartTimeAdjustRequestParams {}
impl std::convert::TryFrom<NSObject>
    for MTRDeviceEnergyManagementClusterStartTimeAdjustRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementClusterStartTimeAdjustRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterStartTimeAdjustRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementClusterStartTimeAdjustRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDeviceEnergyManagementClusterStartTimeAdjustRequestParams" ,)
        }
    }
}
impl IMTRDeviceEnergyManagementClusterStartTimeAdjustRequestParams
    for MTRDeviceEnergyManagementClusterStartTimeAdjustRequestParams
{
}
pub trait IMTRDeviceEnergyManagementClusterStartTimeAdjustRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn requestedStartTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requestedStartTime)
    }
    unsafe fn setRequestedStartTime_(&self, requestedStartTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRequestedStartTime : requestedStartTime)
    }
    unsafe fn cause(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cause)
    }
    unsafe fn setCause_(&self, cause: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCause : cause)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementClusterPauseRequestParams(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementClusterPauseRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementClusterPauseRequestParams {}
impl MTRDeviceEnergyManagementClusterPauseRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterPauseRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementClusterPauseRequestParams {}
impl INSObject for MTRDeviceEnergyManagementClusterPauseRequestParams {}
impl PNSObject for MTRDeviceEnergyManagementClusterPauseRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRDeviceEnergyManagementClusterPauseRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementClusterPauseRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterPauseRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementClusterPauseRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDeviceEnergyManagementClusterPauseRequestParams" ,)
        }
    }
}
impl IMTRDeviceEnergyManagementClusterPauseRequestParams
    for MTRDeviceEnergyManagementClusterPauseRequestParams
{
}
pub trait IMTRDeviceEnergyManagementClusterPauseRequestParams: Sized + std::ops::Deref {
    unsafe fn duration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, duration)
    }
    unsafe fn setDuration_(&self, duration: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDuration : duration)
    }
    unsafe fn cause(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cause)
    }
    unsafe fn setCause_(&self, cause: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCause : cause)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementClusterResumeRequestParams(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementClusterResumeRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementClusterResumeRequestParams {}
impl MTRDeviceEnergyManagementClusterResumeRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterResumeRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementClusterResumeRequestParams {}
impl INSObject for MTRDeviceEnergyManagementClusterResumeRequestParams {}
impl PNSObject for MTRDeviceEnergyManagementClusterResumeRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRDeviceEnergyManagementClusterResumeRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementClusterResumeRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterResumeRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementClusterResumeRequestParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDeviceEnergyManagementClusterResumeRequestParams" ,)
        }
    }
}
impl IMTRDeviceEnergyManagementClusterResumeRequestParams
    for MTRDeviceEnergyManagementClusterResumeRequestParams
{
}
pub trait IMTRDeviceEnergyManagementClusterResumeRequestParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementClusterModifyForecastRequestParams(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementClusterModifyForecastRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementClusterModifyForecastRequestParams {}
impl MTRDeviceEnergyManagementClusterModifyForecastRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterModifyForecastRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementClusterModifyForecastRequestParams {}
impl INSObject for MTRDeviceEnergyManagementClusterModifyForecastRequestParams {}
impl PNSObject for MTRDeviceEnergyManagementClusterModifyForecastRequestParams {}
impl std::convert::TryFrom<NSObject>
    for MTRDeviceEnergyManagementClusterModifyForecastRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementClusterModifyForecastRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterModifyForecastRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementClusterModifyForecastRequestParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDeviceEnergyManagementClusterModifyForecastRequestParams" ,)
        }
    }
}
impl IMTRDeviceEnergyManagementClusterModifyForecastRequestParams
    for MTRDeviceEnergyManagementClusterModifyForecastRequestParams
{
}
pub trait IMTRDeviceEnergyManagementClusterModifyForecastRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn forecastID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, forecastID)
    }
    unsafe fn setForecastID_(&self, forecastID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setForecastID : forecastID)
    }
    unsafe fn slotAdjustments(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, slotAdjustments)
    }
    unsafe fn setSlotAdjustments_(&self, slotAdjustments: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSlotAdjustments : slotAdjustments)
    }
    unsafe fn cause(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cause)
    }
    unsafe fn setCause_(&self, cause: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCause : cause)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementClusterRequestConstraintBasedForecastParams(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementClusterRequestConstraintBasedForecastParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementClusterRequestConstraintBasedForecastParams {}
impl MTRDeviceEnergyManagementClusterRequestConstraintBasedForecastParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterRequestConstraintBasedForecastParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementClusterRequestConstraintBasedForecastParams {}
impl INSObject for MTRDeviceEnergyManagementClusterRequestConstraintBasedForecastParams {}
impl PNSObject for MTRDeviceEnergyManagementClusterRequestConstraintBasedForecastParams {}
impl std::convert::TryFrom<NSObject>
    for MTRDeviceEnergyManagementClusterRequestConstraintBasedForecastParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementClusterRequestConstraintBasedForecastParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterRequestConstraintBasedForecastParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementClusterRequestConstraintBasedForecastParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDeviceEnergyManagementClusterRequestConstraintBasedForecastParams" ,)
        }
    }
}
impl IMTRDeviceEnergyManagementClusterRequestConstraintBasedForecastParams
    for MTRDeviceEnergyManagementClusterRequestConstraintBasedForecastParams
{
}
pub trait IMTRDeviceEnergyManagementClusterRequestConstraintBasedForecastParams:
    Sized + std::ops::Deref
{
    unsafe fn constraints(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, constraints)
    }
    unsafe fn setConstraints_(&self, constraints: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setConstraints : constraints)
    }
    unsafe fn cause(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cause)
    }
    unsafe fn setCause_(&self, cause: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCause : cause)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementClusterCancelRequestParams(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementClusterCancelRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementClusterCancelRequestParams {}
impl MTRDeviceEnergyManagementClusterCancelRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterCancelRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementClusterCancelRequestParams {}
impl INSObject for MTRDeviceEnergyManagementClusterCancelRequestParams {}
impl PNSObject for MTRDeviceEnergyManagementClusterCancelRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRDeviceEnergyManagementClusterCancelRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementClusterCancelRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementClusterCancelRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementClusterCancelRequestParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDeviceEnergyManagementClusterCancelRequestParams" ,)
        }
    }
}
impl IMTRDeviceEnergyManagementClusterCancelRequestParams
    for MTRDeviceEnergyManagementClusterCancelRequestParams
{
}
pub trait IMTRDeviceEnergyManagementClusterCancelRequestParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREnergyEVSEClusterGetTargetsResponseParams(pub id);
impl std::ops::Deref for MTREnergyEVSEClusterGetTargetsResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREnergyEVSEClusterGetTargetsResponseParams {}
impl MTREnergyEVSEClusterGetTargetsResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterGetTargetsResponseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTREnergyEVSEClusterGetTargetsResponseParams {}
impl INSObject for MTREnergyEVSEClusterGetTargetsResponseParams {}
impl PNSObject for MTREnergyEVSEClusterGetTargetsResponseParams {}
impl std::convert::TryFrom<NSObject> for MTREnergyEVSEClusterGetTargetsResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTREnergyEVSEClusterGetTargetsResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterGetTargetsResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTREnergyEVSEClusterGetTargetsResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTREnergyEVSEClusterGetTargetsResponseParams" ,)
        }
    }
}
impl IMTREnergyEVSEClusterGetTargetsResponseParams
    for MTREnergyEVSEClusterGetTargetsResponseParams
{
}
pub trait IMTREnergyEVSEClusterGetTargetsResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn chargingTargetSchedules(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, chargingTargetSchedules)
    }
    unsafe fn setChargingTargetSchedules_(&self, chargingTargetSchedules: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChargingTargetSchedules : chargingTargetSchedules)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREnergyEVSEClusterDisableParams(pub id);
impl std::ops::Deref for MTREnergyEVSEClusterDisableParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREnergyEVSEClusterDisableParams {}
impl MTREnergyEVSEClusterDisableParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterDisableParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTREnergyEVSEClusterDisableParams {}
impl INSObject for MTREnergyEVSEClusterDisableParams {}
impl PNSObject for MTREnergyEVSEClusterDisableParams {}
impl std::convert::TryFrom<NSObject> for MTREnergyEVSEClusterDisableParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTREnergyEVSEClusterDisableParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterDisableParams").unwrap())
        };
        if is_kind_of {
            Ok(MTREnergyEVSEClusterDisableParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTREnergyEVSEClusterDisableParams")
        }
    }
}
impl IMTREnergyEVSEClusterDisableParams for MTREnergyEVSEClusterDisableParams {}
pub trait IMTREnergyEVSEClusterDisableParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREnergyEVSEClusterEnableChargingParams(pub id);
impl std::ops::Deref for MTREnergyEVSEClusterEnableChargingParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREnergyEVSEClusterEnableChargingParams {}
impl MTREnergyEVSEClusterEnableChargingParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterEnableChargingParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTREnergyEVSEClusterEnableChargingParams {}
impl INSObject for MTREnergyEVSEClusterEnableChargingParams {}
impl PNSObject for MTREnergyEVSEClusterEnableChargingParams {}
impl std::convert::TryFrom<NSObject> for MTREnergyEVSEClusterEnableChargingParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTREnergyEVSEClusterEnableChargingParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterEnableChargingParams").unwrap())
        };
        if is_kind_of {
            Ok(MTREnergyEVSEClusterEnableChargingParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTREnergyEVSEClusterEnableChargingParams")
        }
    }
}
impl IMTREnergyEVSEClusterEnableChargingParams for MTREnergyEVSEClusterEnableChargingParams {}
pub trait IMTREnergyEVSEClusterEnableChargingParams: Sized + std::ops::Deref {
    unsafe fn chargingEnabledUntil(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, chargingEnabledUntil)
    }
    unsafe fn setChargingEnabledUntil_(&self, chargingEnabledUntil: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChargingEnabledUntil : chargingEnabledUntil)
    }
    unsafe fn minimumChargeCurrent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minimumChargeCurrent)
    }
    unsafe fn setMinimumChargeCurrent_(&self, minimumChargeCurrent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinimumChargeCurrent : minimumChargeCurrent)
    }
    unsafe fn maximumChargeCurrent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maximumChargeCurrent)
    }
    unsafe fn setMaximumChargeCurrent_(&self, maximumChargeCurrent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaximumChargeCurrent : maximumChargeCurrent)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREnergyEVSEClusterEnableDischargingParams(pub id);
impl std::ops::Deref for MTREnergyEVSEClusterEnableDischargingParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREnergyEVSEClusterEnableDischargingParams {}
impl MTREnergyEVSEClusterEnableDischargingParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterEnableDischargingParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTREnergyEVSEClusterEnableDischargingParams {}
impl INSObject for MTREnergyEVSEClusterEnableDischargingParams {}
impl PNSObject for MTREnergyEVSEClusterEnableDischargingParams {}
impl std::convert::TryFrom<NSObject> for MTREnergyEVSEClusterEnableDischargingParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTREnergyEVSEClusterEnableDischargingParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterEnableDischargingParams").unwrap())
        };
        if is_kind_of {
            Ok(MTREnergyEVSEClusterEnableDischargingParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTREnergyEVSEClusterEnableDischargingParams")
        }
    }
}
impl IMTREnergyEVSEClusterEnableDischargingParams for MTREnergyEVSEClusterEnableDischargingParams {}
pub trait IMTREnergyEVSEClusterEnableDischargingParams: Sized + std::ops::Deref {
    unsafe fn dischargingEnabledUntil(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dischargingEnabledUntil)
    }
    unsafe fn setDischargingEnabledUntil_(&self, dischargingEnabledUntil: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDischargingEnabledUntil : dischargingEnabledUntil)
    }
    unsafe fn maximumDischargeCurrent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maximumDischargeCurrent)
    }
    unsafe fn setMaximumDischargeCurrent_(&self, maximumDischargeCurrent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaximumDischargeCurrent : maximumDischargeCurrent)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREnergyEVSEClusterStartDiagnosticsParams(pub id);
impl std::ops::Deref for MTREnergyEVSEClusterStartDiagnosticsParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREnergyEVSEClusterStartDiagnosticsParams {}
impl MTREnergyEVSEClusterStartDiagnosticsParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterStartDiagnosticsParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTREnergyEVSEClusterStartDiagnosticsParams {}
impl INSObject for MTREnergyEVSEClusterStartDiagnosticsParams {}
impl PNSObject for MTREnergyEVSEClusterStartDiagnosticsParams {}
impl std::convert::TryFrom<NSObject> for MTREnergyEVSEClusterStartDiagnosticsParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTREnergyEVSEClusterStartDiagnosticsParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterStartDiagnosticsParams").unwrap())
        };
        if is_kind_of {
            Ok(MTREnergyEVSEClusterStartDiagnosticsParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTREnergyEVSEClusterStartDiagnosticsParams")
        }
    }
}
impl IMTREnergyEVSEClusterStartDiagnosticsParams for MTREnergyEVSEClusterStartDiagnosticsParams {}
pub trait IMTREnergyEVSEClusterStartDiagnosticsParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREnergyEVSEClusterSetTargetsParams(pub id);
impl std::ops::Deref for MTREnergyEVSEClusterSetTargetsParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREnergyEVSEClusterSetTargetsParams {}
impl MTREnergyEVSEClusterSetTargetsParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterSetTargetsParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTREnergyEVSEClusterSetTargetsParams {}
impl INSObject for MTREnergyEVSEClusterSetTargetsParams {}
impl PNSObject for MTREnergyEVSEClusterSetTargetsParams {}
impl std::convert::TryFrom<NSObject> for MTREnergyEVSEClusterSetTargetsParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTREnergyEVSEClusterSetTargetsParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterSetTargetsParams").unwrap())
        };
        if is_kind_of {
            Ok(MTREnergyEVSEClusterSetTargetsParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTREnergyEVSEClusterSetTargetsParams")
        }
    }
}
impl IMTREnergyEVSEClusterSetTargetsParams for MTREnergyEVSEClusterSetTargetsParams {}
pub trait IMTREnergyEVSEClusterSetTargetsParams: Sized + std::ops::Deref {
    unsafe fn chargingTargetSchedules(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, chargingTargetSchedules)
    }
    unsafe fn setChargingTargetSchedules_(&self, chargingTargetSchedules: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChargingTargetSchedules : chargingTargetSchedules)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREnergyEVSEClusterGetTargetsParams(pub id);
impl std::ops::Deref for MTREnergyEVSEClusterGetTargetsParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREnergyEVSEClusterGetTargetsParams {}
impl MTREnergyEVSEClusterGetTargetsParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterGetTargetsParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTREnergyEVSEClusterGetTargetsParams {}
impl INSObject for MTREnergyEVSEClusterGetTargetsParams {}
impl PNSObject for MTREnergyEVSEClusterGetTargetsParams {}
impl std::convert::TryFrom<NSObject> for MTREnergyEVSEClusterGetTargetsParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTREnergyEVSEClusterGetTargetsParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterGetTargetsParams").unwrap())
        };
        if is_kind_of {
            Ok(MTREnergyEVSEClusterGetTargetsParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTREnergyEVSEClusterGetTargetsParams")
        }
    }
}
impl IMTREnergyEVSEClusterGetTargetsParams for MTREnergyEVSEClusterGetTargetsParams {}
pub trait IMTREnergyEVSEClusterGetTargetsParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREnergyEVSEClusterClearTargetsParams(pub id);
impl std::ops::Deref for MTREnergyEVSEClusterClearTargetsParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREnergyEVSEClusterClearTargetsParams {}
impl MTREnergyEVSEClusterClearTargetsParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterClearTargetsParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTREnergyEVSEClusterClearTargetsParams {}
impl INSObject for MTREnergyEVSEClusterClearTargetsParams {}
impl PNSObject for MTREnergyEVSEClusterClearTargetsParams {}
impl std::convert::TryFrom<NSObject> for MTREnergyEVSEClusterClearTargetsParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTREnergyEVSEClusterClearTargetsParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREnergyEVSEClusterClearTargetsParams").unwrap())
        };
        if is_kind_of {
            Ok(MTREnergyEVSEClusterClearTargetsParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTREnergyEVSEClusterClearTargetsParams")
        }
    }
}
impl IMTREnergyEVSEClusterClearTargetsParams for MTREnergyEVSEClusterClearTargetsParams {}
pub trait IMTREnergyEVSEClusterClearTargetsParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREnergyEVSEModeClusterChangeToModeParams(pub id);
impl std::ops::Deref for MTREnergyEVSEModeClusterChangeToModeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREnergyEVSEModeClusterChangeToModeParams {}
impl MTREnergyEVSEModeClusterChangeToModeParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTREnergyEVSEModeClusterChangeToModeParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTREnergyEVSEModeClusterChangeToModeParams {}
impl INSObject for MTREnergyEVSEModeClusterChangeToModeParams {}
impl PNSObject for MTREnergyEVSEModeClusterChangeToModeParams {}
impl std::convert::TryFrom<NSObject> for MTREnergyEVSEModeClusterChangeToModeParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTREnergyEVSEModeClusterChangeToModeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREnergyEVSEModeClusterChangeToModeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTREnergyEVSEModeClusterChangeToModeParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTREnergyEVSEModeClusterChangeToModeParams")
        }
    }
}
impl IMTREnergyEVSEModeClusterChangeToModeParams for MTREnergyEVSEModeClusterChangeToModeParams {}
pub trait IMTREnergyEVSEModeClusterChangeToModeParams: Sized + std::ops::Deref {
    unsafe fn getNewMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewMode)
    }
    unsafe fn setNewMode_(&self, newMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewMode : newMode)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREnergyEVSEModeClusterChangeToModeResponseParams(pub id);
impl std::ops::Deref for MTREnergyEVSEModeClusterChangeToModeResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREnergyEVSEModeClusterChangeToModeResponseParams {}
impl MTREnergyEVSEModeClusterChangeToModeResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTREnergyEVSEModeClusterChangeToModeResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTREnergyEVSEModeClusterChangeToModeResponseParams {}
impl INSObject for MTREnergyEVSEModeClusterChangeToModeResponseParams {}
impl PNSObject for MTREnergyEVSEModeClusterChangeToModeResponseParams {}
impl std::convert::TryFrom<NSObject> for MTREnergyEVSEModeClusterChangeToModeResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTREnergyEVSEModeClusterChangeToModeResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREnergyEVSEModeClusterChangeToModeResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTREnergyEVSEModeClusterChangeToModeResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTREnergyEVSEModeClusterChangeToModeResponseParams" ,)
        }
    }
}
impl IMTREnergyEVSEModeClusterChangeToModeResponseParams
    for MTREnergyEVSEModeClusterChangeToModeResponseParams
{
}
pub trait IMTREnergyEVSEModeClusterChangeToModeResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn statusText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusText)
    }
    unsafe fn setStatusText_(&self, statusText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusText : statusText)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWaterHeaterModeClusterChangeToModeParams(pub id);
impl std::ops::Deref for MTRWaterHeaterModeClusterChangeToModeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWaterHeaterModeClusterChangeToModeParams {}
impl MTRWaterHeaterModeClusterChangeToModeParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWaterHeaterModeClusterChangeToModeParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRWaterHeaterModeClusterChangeToModeParams {}
impl INSObject for MTRWaterHeaterModeClusterChangeToModeParams {}
impl PNSObject for MTRWaterHeaterModeClusterChangeToModeParams {}
impl std::convert::TryFrom<NSObject> for MTRWaterHeaterModeClusterChangeToModeParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWaterHeaterModeClusterChangeToModeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWaterHeaterModeClusterChangeToModeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWaterHeaterModeClusterChangeToModeParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRWaterHeaterModeClusterChangeToModeParams")
        }
    }
}
impl IMTRWaterHeaterModeClusterChangeToModeParams for MTRWaterHeaterModeClusterChangeToModeParams {}
pub trait IMTRWaterHeaterModeClusterChangeToModeParams: Sized + std::ops::Deref {
    unsafe fn getNewMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewMode)
    }
    unsafe fn setNewMode_(&self, newMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewMode : newMode)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWaterHeaterModeClusterChangeToModeResponseParams(pub id);
impl std::ops::Deref for MTRWaterHeaterModeClusterChangeToModeResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWaterHeaterModeClusterChangeToModeResponseParams {}
impl MTRWaterHeaterModeClusterChangeToModeResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWaterHeaterModeClusterChangeToModeResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWaterHeaterModeClusterChangeToModeResponseParams {}
impl INSObject for MTRWaterHeaterModeClusterChangeToModeResponseParams {}
impl PNSObject for MTRWaterHeaterModeClusterChangeToModeResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRWaterHeaterModeClusterChangeToModeResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWaterHeaterModeClusterChangeToModeResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWaterHeaterModeClusterChangeToModeResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWaterHeaterModeClusterChangeToModeResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWaterHeaterModeClusterChangeToModeResponseParams" ,)
        }
    }
}
impl IMTRWaterHeaterModeClusterChangeToModeResponseParams
    for MTRWaterHeaterModeClusterChangeToModeResponseParams
{
}
pub trait IMTRWaterHeaterModeClusterChangeToModeResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn statusText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusText)
    }
    unsafe fn setStatusText_(&self, statusText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusText : statusText)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementModeClusterChangeToModeParams(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementModeClusterChangeToModeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementModeClusterChangeToModeParams {}
impl MTRDeviceEnergyManagementModeClusterChangeToModeParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementModeClusterChangeToModeParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementModeClusterChangeToModeParams {}
impl INSObject for MTRDeviceEnergyManagementModeClusterChangeToModeParams {}
impl PNSObject for MTRDeviceEnergyManagementModeClusterChangeToModeParams {}
impl std::convert::TryFrom<NSObject> for MTRDeviceEnergyManagementModeClusterChangeToModeParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementModeClusterChangeToModeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementModeClusterChangeToModeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementModeClusterChangeToModeParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDeviceEnergyManagementModeClusterChangeToModeParams" ,)
        }
    }
}
impl IMTRDeviceEnergyManagementModeClusterChangeToModeParams
    for MTRDeviceEnergyManagementModeClusterChangeToModeParams
{
}
pub trait IMTRDeviceEnergyManagementModeClusterChangeToModeParams: Sized + std::ops::Deref {
    unsafe fn getNewMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewMode)
    }
    unsafe fn setNewMode_(&self, newMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewMode : newMode)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceEnergyManagementModeClusterChangeToModeResponseParams(pub id);
impl std::ops::Deref for MTRDeviceEnergyManagementModeClusterChangeToModeResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceEnergyManagementModeClusterChangeToModeResponseParams {}
impl MTRDeviceEnergyManagementModeClusterChangeToModeResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementModeClusterChangeToModeResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDeviceEnergyManagementModeClusterChangeToModeResponseParams {}
impl INSObject for MTRDeviceEnergyManagementModeClusterChangeToModeResponseParams {}
impl PNSObject for MTRDeviceEnergyManagementModeClusterChangeToModeResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRDeviceEnergyManagementModeClusterChangeToModeResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDeviceEnergyManagementModeClusterChangeToModeResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceEnergyManagementModeClusterChangeToModeResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceEnergyManagementModeClusterChangeToModeResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDeviceEnergyManagementModeClusterChangeToModeResponseParams" ,)
        }
    }
}
impl IMTRDeviceEnergyManagementModeClusterChangeToModeResponseParams
    for MTRDeviceEnergyManagementModeClusterChangeToModeResponseParams
{
}
pub trait IMTRDeviceEnergyManagementModeClusterChangeToModeResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn statusText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusText)
    }
    unsafe fn setStatusText_(&self, statusText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusText : statusText)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterLockDoorParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterLockDoorParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterLockDoorParams {}
impl MTRDoorLockClusterLockDoorParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterLockDoorParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterLockDoorParams {}
impl INSObject for MTRDoorLockClusterLockDoorParams {}
impl PNSObject for MTRDoorLockClusterLockDoorParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterLockDoorParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDoorLockClusterLockDoorParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterLockDoorParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterLockDoorParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterLockDoorParams")
        }
    }
}
impl IMTRDoorLockClusterLockDoorParams for MTRDoorLockClusterLockDoorParams {}
pub trait IMTRDoorLockClusterLockDoorParams: Sized + std::ops::Deref {
    unsafe fn pinCode(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pinCode)
    }
    unsafe fn setPinCode_(&self, pinCode: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPinCode : pinCode)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterUnlockDoorParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterUnlockDoorParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterUnlockDoorParams {}
impl MTRDoorLockClusterUnlockDoorParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterUnlockDoorParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterUnlockDoorParams {}
impl INSObject for MTRDoorLockClusterUnlockDoorParams {}
impl PNSObject for MTRDoorLockClusterUnlockDoorParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterUnlockDoorParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDoorLockClusterUnlockDoorParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterUnlockDoorParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterUnlockDoorParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterUnlockDoorParams")
        }
    }
}
impl IMTRDoorLockClusterUnlockDoorParams for MTRDoorLockClusterUnlockDoorParams {}
pub trait IMTRDoorLockClusterUnlockDoorParams: Sized + std::ops::Deref {
    unsafe fn pinCode(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pinCode)
    }
    unsafe fn setPinCode_(&self, pinCode: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPinCode : pinCode)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterUnlockWithTimeoutParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterUnlockWithTimeoutParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterUnlockWithTimeoutParams {}
impl MTRDoorLockClusterUnlockWithTimeoutParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterUnlockWithTimeoutParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterUnlockWithTimeoutParams {}
impl INSObject for MTRDoorLockClusterUnlockWithTimeoutParams {}
impl PNSObject for MTRDoorLockClusterUnlockWithTimeoutParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterUnlockWithTimeoutParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterUnlockWithTimeoutParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterUnlockWithTimeoutParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterUnlockWithTimeoutParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterUnlockWithTimeoutParams")
        }
    }
}
impl IMTRDoorLockClusterUnlockWithTimeoutParams for MTRDoorLockClusterUnlockWithTimeoutParams {}
pub trait IMTRDoorLockClusterUnlockWithTimeoutParams: Sized + std::ops::Deref {
    unsafe fn timeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeout)
    }
    unsafe fn setTimeout_(&self, timeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeout : timeout)
    }
    unsafe fn pinCode(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pinCode)
    }
    unsafe fn setPinCode_(&self, pinCode: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPinCode : pinCode)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterSetWeekDayScheduleParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterSetWeekDayScheduleParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterSetWeekDayScheduleParams {}
impl MTRDoorLockClusterSetWeekDayScheduleParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterSetWeekDayScheduleParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterSetWeekDayScheduleParams {}
impl INSObject for MTRDoorLockClusterSetWeekDayScheduleParams {}
impl PNSObject for MTRDoorLockClusterSetWeekDayScheduleParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterSetWeekDayScheduleParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterSetWeekDayScheduleParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterSetWeekDayScheduleParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterSetWeekDayScheduleParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterSetWeekDayScheduleParams")
        }
    }
}
impl IMTRDoorLockClusterSetWeekDayScheduleParams for MTRDoorLockClusterSetWeekDayScheduleParams {}
pub trait IMTRDoorLockClusterSetWeekDayScheduleParams: Sized + std::ops::Deref {
    unsafe fn weekDayIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, weekDayIndex)
    }
    unsafe fn setWeekDayIndex_(&self, weekDayIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWeekDayIndex : weekDayIndex)
    }
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn daysMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, daysMask)
    }
    unsafe fn setDaysMask_(&self, daysMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDaysMask : daysMask)
    }
    unsafe fn startHour(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startHour)
    }
    unsafe fn setStartHour_(&self, startHour: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartHour : startHour)
    }
    unsafe fn startMinute(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startMinute)
    }
    unsafe fn setStartMinute_(&self, startMinute: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartMinute : startMinute)
    }
    unsafe fn endHour(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endHour)
    }
    unsafe fn setEndHour_(&self, endHour: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndHour : endHour)
    }
    unsafe fn endMinute(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endMinute)
    }
    unsafe fn setEndMinute_(&self, endMinute: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndMinute : endMinute)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterGetWeekDayScheduleParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterGetWeekDayScheduleParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterGetWeekDayScheduleParams {}
impl MTRDoorLockClusterGetWeekDayScheduleParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterGetWeekDayScheduleParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterGetWeekDayScheduleParams {}
impl INSObject for MTRDoorLockClusterGetWeekDayScheduleParams {}
impl PNSObject for MTRDoorLockClusterGetWeekDayScheduleParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterGetWeekDayScheduleParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterGetWeekDayScheduleParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterGetWeekDayScheduleParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterGetWeekDayScheduleParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterGetWeekDayScheduleParams")
        }
    }
}
impl IMTRDoorLockClusterGetWeekDayScheduleParams for MTRDoorLockClusterGetWeekDayScheduleParams {}
pub trait IMTRDoorLockClusterGetWeekDayScheduleParams: Sized + std::ops::Deref {
    unsafe fn weekDayIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, weekDayIndex)
    }
    unsafe fn setWeekDayIndex_(&self, weekDayIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWeekDayIndex : weekDayIndex)
    }
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterGetWeekDayScheduleResponseParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterGetWeekDayScheduleResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterGetWeekDayScheduleResponseParams {}
impl MTRDoorLockClusterGetWeekDayScheduleResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterGetWeekDayScheduleResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDoorLockClusterGetWeekDayScheduleResponseParams {}
impl INSObject for MTRDoorLockClusterGetWeekDayScheduleResponseParams {}
impl PNSObject for MTRDoorLockClusterGetWeekDayScheduleResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterGetWeekDayScheduleResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterGetWeekDayScheduleResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterGetWeekDayScheduleResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterGetWeekDayScheduleResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDoorLockClusterGetWeekDayScheduleResponseParams" ,)
        }
    }
}
impl IMTRDoorLockClusterGetWeekDayScheduleResponseParams
    for MTRDoorLockClusterGetWeekDayScheduleResponseParams
{
}
pub trait IMTRDoorLockClusterGetWeekDayScheduleResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn weekDayIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, weekDayIndex)
    }
    unsafe fn setWeekDayIndex_(&self, weekDayIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWeekDayIndex : weekDayIndex)
    }
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn daysMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, daysMask)
    }
    unsafe fn setDaysMask_(&self, daysMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDaysMask : daysMask)
    }
    unsafe fn startHour(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startHour)
    }
    unsafe fn setStartHour_(&self, startHour: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartHour : startHour)
    }
    unsafe fn startMinute(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startMinute)
    }
    unsafe fn setStartMinute_(&self, startMinute: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartMinute : startMinute)
    }
    unsafe fn endHour(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endHour)
    }
    unsafe fn setEndHour_(&self, endHour: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndHour : endHour)
    }
    unsafe fn endMinute(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endMinute)
    }
    unsafe fn setEndMinute_(&self, endMinute: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndMinute : endMinute)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterClearWeekDayScheduleParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterClearWeekDayScheduleParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterClearWeekDayScheduleParams {}
impl MTRDoorLockClusterClearWeekDayScheduleParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterClearWeekDayScheduleParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterClearWeekDayScheduleParams {}
impl INSObject for MTRDoorLockClusterClearWeekDayScheduleParams {}
impl PNSObject for MTRDoorLockClusterClearWeekDayScheduleParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterClearWeekDayScheduleParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterClearWeekDayScheduleParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterClearWeekDayScheduleParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterClearWeekDayScheduleParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDoorLockClusterClearWeekDayScheduleParams" ,)
        }
    }
}
impl IMTRDoorLockClusterClearWeekDayScheduleParams
    for MTRDoorLockClusterClearWeekDayScheduleParams
{
}
pub trait IMTRDoorLockClusterClearWeekDayScheduleParams: Sized + std::ops::Deref {
    unsafe fn weekDayIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, weekDayIndex)
    }
    unsafe fn setWeekDayIndex_(&self, weekDayIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWeekDayIndex : weekDayIndex)
    }
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterSetYearDayScheduleParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterSetYearDayScheduleParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterSetYearDayScheduleParams {}
impl MTRDoorLockClusterSetYearDayScheduleParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterSetYearDayScheduleParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterSetYearDayScheduleParams {}
impl INSObject for MTRDoorLockClusterSetYearDayScheduleParams {}
impl PNSObject for MTRDoorLockClusterSetYearDayScheduleParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterSetYearDayScheduleParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterSetYearDayScheduleParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterSetYearDayScheduleParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterSetYearDayScheduleParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterSetYearDayScheduleParams")
        }
    }
}
impl IMTRDoorLockClusterSetYearDayScheduleParams for MTRDoorLockClusterSetYearDayScheduleParams {}
pub trait IMTRDoorLockClusterSetYearDayScheduleParams: Sized + std::ops::Deref {
    unsafe fn yearDayIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, yearDayIndex)
    }
    unsafe fn setYearDayIndex_(&self, yearDayIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setYearDayIndex : yearDayIndex)
    }
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn localStartTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localStartTime)
    }
    unsafe fn setLocalStartTime_(&self, localStartTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocalStartTime : localStartTime)
    }
    unsafe fn localEndTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localEndTime)
    }
    unsafe fn setLocalEndTime_(&self, localEndTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocalEndTime : localEndTime)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterGetYearDayScheduleParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterGetYearDayScheduleParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterGetYearDayScheduleParams {}
impl MTRDoorLockClusterGetYearDayScheduleParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterGetYearDayScheduleParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterGetYearDayScheduleParams {}
impl INSObject for MTRDoorLockClusterGetYearDayScheduleParams {}
impl PNSObject for MTRDoorLockClusterGetYearDayScheduleParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterGetYearDayScheduleParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterGetYearDayScheduleParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterGetYearDayScheduleParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterGetYearDayScheduleParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterGetYearDayScheduleParams")
        }
    }
}
impl IMTRDoorLockClusterGetYearDayScheduleParams for MTRDoorLockClusterGetYearDayScheduleParams {}
pub trait IMTRDoorLockClusterGetYearDayScheduleParams: Sized + std::ops::Deref {
    unsafe fn yearDayIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, yearDayIndex)
    }
    unsafe fn setYearDayIndex_(&self, yearDayIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setYearDayIndex : yearDayIndex)
    }
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterGetYearDayScheduleResponseParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterGetYearDayScheduleResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterGetYearDayScheduleResponseParams {}
impl MTRDoorLockClusterGetYearDayScheduleResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterGetYearDayScheduleResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDoorLockClusterGetYearDayScheduleResponseParams {}
impl INSObject for MTRDoorLockClusterGetYearDayScheduleResponseParams {}
impl PNSObject for MTRDoorLockClusterGetYearDayScheduleResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterGetYearDayScheduleResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterGetYearDayScheduleResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterGetYearDayScheduleResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterGetYearDayScheduleResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDoorLockClusterGetYearDayScheduleResponseParams" ,)
        }
    }
}
impl IMTRDoorLockClusterGetYearDayScheduleResponseParams
    for MTRDoorLockClusterGetYearDayScheduleResponseParams
{
}
pub trait IMTRDoorLockClusterGetYearDayScheduleResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn yearDayIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, yearDayIndex)
    }
    unsafe fn setYearDayIndex_(&self, yearDayIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setYearDayIndex : yearDayIndex)
    }
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn localStartTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localStartTime)
    }
    unsafe fn setLocalStartTime_(&self, localStartTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocalStartTime : localStartTime)
    }
    unsafe fn localEndTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localEndTime)
    }
    unsafe fn setLocalEndTime_(&self, localEndTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocalEndTime : localEndTime)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterClearYearDayScheduleParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterClearYearDayScheduleParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterClearYearDayScheduleParams {}
impl MTRDoorLockClusterClearYearDayScheduleParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterClearYearDayScheduleParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterClearYearDayScheduleParams {}
impl INSObject for MTRDoorLockClusterClearYearDayScheduleParams {}
impl PNSObject for MTRDoorLockClusterClearYearDayScheduleParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterClearYearDayScheduleParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterClearYearDayScheduleParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterClearYearDayScheduleParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterClearYearDayScheduleParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDoorLockClusterClearYearDayScheduleParams" ,)
        }
    }
}
impl IMTRDoorLockClusterClearYearDayScheduleParams
    for MTRDoorLockClusterClearYearDayScheduleParams
{
}
pub trait IMTRDoorLockClusterClearYearDayScheduleParams: Sized + std::ops::Deref {
    unsafe fn yearDayIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, yearDayIndex)
    }
    unsafe fn setYearDayIndex_(&self, yearDayIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setYearDayIndex : yearDayIndex)
    }
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterSetHolidayScheduleParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterSetHolidayScheduleParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterSetHolidayScheduleParams {}
impl MTRDoorLockClusterSetHolidayScheduleParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterSetHolidayScheduleParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterSetHolidayScheduleParams {}
impl INSObject for MTRDoorLockClusterSetHolidayScheduleParams {}
impl PNSObject for MTRDoorLockClusterSetHolidayScheduleParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterSetHolidayScheduleParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterSetHolidayScheduleParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterSetHolidayScheduleParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterSetHolidayScheduleParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterSetHolidayScheduleParams")
        }
    }
}
impl IMTRDoorLockClusterSetHolidayScheduleParams for MTRDoorLockClusterSetHolidayScheduleParams {}
pub trait IMTRDoorLockClusterSetHolidayScheduleParams: Sized + std::ops::Deref {
    unsafe fn holidayIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, holidayIndex)
    }
    unsafe fn setHolidayIndex_(&self, holidayIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHolidayIndex : holidayIndex)
    }
    unsafe fn localStartTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localStartTime)
    }
    unsafe fn setLocalStartTime_(&self, localStartTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocalStartTime : localStartTime)
    }
    unsafe fn localEndTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localEndTime)
    }
    unsafe fn setLocalEndTime_(&self, localEndTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocalEndTime : localEndTime)
    }
    unsafe fn operatingMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operatingMode)
    }
    unsafe fn setOperatingMode_(&self, operatingMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperatingMode : operatingMode)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterGetHolidayScheduleParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterGetHolidayScheduleParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterGetHolidayScheduleParams {}
impl MTRDoorLockClusterGetHolidayScheduleParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterGetHolidayScheduleParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterGetHolidayScheduleParams {}
impl INSObject for MTRDoorLockClusterGetHolidayScheduleParams {}
impl PNSObject for MTRDoorLockClusterGetHolidayScheduleParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterGetHolidayScheduleParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterGetHolidayScheduleParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterGetHolidayScheduleParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterGetHolidayScheduleParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterGetHolidayScheduleParams")
        }
    }
}
impl IMTRDoorLockClusterGetHolidayScheduleParams for MTRDoorLockClusterGetHolidayScheduleParams {}
pub trait IMTRDoorLockClusterGetHolidayScheduleParams: Sized + std::ops::Deref {
    unsafe fn holidayIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, holidayIndex)
    }
    unsafe fn setHolidayIndex_(&self, holidayIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHolidayIndex : holidayIndex)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterGetHolidayScheduleResponseParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterGetHolidayScheduleResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterGetHolidayScheduleResponseParams {}
impl MTRDoorLockClusterGetHolidayScheduleResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterGetHolidayScheduleResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDoorLockClusterGetHolidayScheduleResponseParams {}
impl INSObject for MTRDoorLockClusterGetHolidayScheduleResponseParams {}
impl PNSObject for MTRDoorLockClusterGetHolidayScheduleResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterGetHolidayScheduleResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterGetHolidayScheduleResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterGetHolidayScheduleResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterGetHolidayScheduleResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDoorLockClusterGetHolidayScheduleResponseParams" ,)
        }
    }
}
impl IMTRDoorLockClusterGetHolidayScheduleResponseParams
    for MTRDoorLockClusterGetHolidayScheduleResponseParams
{
}
pub trait IMTRDoorLockClusterGetHolidayScheduleResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn holidayIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, holidayIndex)
    }
    unsafe fn setHolidayIndex_(&self, holidayIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHolidayIndex : holidayIndex)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn localStartTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localStartTime)
    }
    unsafe fn setLocalStartTime_(&self, localStartTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocalStartTime : localStartTime)
    }
    unsafe fn localEndTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localEndTime)
    }
    unsafe fn setLocalEndTime_(&self, localEndTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocalEndTime : localEndTime)
    }
    unsafe fn operatingMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operatingMode)
    }
    unsafe fn setOperatingMode_(&self, operatingMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperatingMode : operatingMode)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterClearHolidayScheduleParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterClearHolidayScheduleParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterClearHolidayScheduleParams {}
impl MTRDoorLockClusterClearHolidayScheduleParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterClearHolidayScheduleParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterClearHolidayScheduleParams {}
impl INSObject for MTRDoorLockClusterClearHolidayScheduleParams {}
impl PNSObject for MTRDoorLockClusterClearHolidayScheduleParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterClearHolidayScheduleParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterClearHolidayScheduleParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterClearHolidayScheduleParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterClearHolidayScheduleParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDoorLockClusterClearHolidayScheduleParams" ,)
        }
    }
}
impl IMTRDoorLockClusterClearHolidayScheduleParams
    for MTRDoorLockClusterClearHolidayScheduleParams
{
}
pub trait IMTRDoorLockClusterClearHolidayScheduleParams: Sized + std::ops::Deref {
    unsafe fn holidayIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, holidayIndex)
    }
    unsafe fn setHolidayIndex_(&self, holidayIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHolidayIndex : holidayIndex)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterSetUserParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterSetUserParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterSetUserParams {}
impl MTRDoorLockClusterSetUserParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterSetUserParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterSetUserParams {}
impl INSObject for MTRDoorLockClusterSetUserParams {}
impl PNSObject for MTRDoorLockClusterSetUserParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterSetUserParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDoorLockClusterSetUserParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterSetUserParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterSetUserParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterSetUserParams")
        }
    }
}
impl IMTRDoorLockClusterSetUserParams for MTRDoorLockClusterSetUserParams {}
pub trait IMTRDoorLockClusterSetUserParams: Sized + std::ops::Deref {
    unsafe fn operationType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationType)
    }
    unsafe fn setOperationType_(&self, operationType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationType : operationType)
    }
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn userName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userName)
    }
    unsafe fn setUserName_(&self, userName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserName : userName)
    }
    unsafe fn userUniqueID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userUniqueID)
    }
    unsafe fn setUserUniqueID_(&self, userUniqueID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserUniqueID : userUniqueID)
    }
    unsafe fn userStatus(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userStatus)
    }
    unsafe fn setUserStatus_(&self, userStatus: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserStatus : userStatus)
    }
    unsafe fn userType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userType)
    }
    unsafe fn setUserType_(&self, userType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserType : userType)
    }
    unsafe fn credentialRule(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credentialRule)
    }
    unsafe fn setCredentialRule_(&self, credentialRule: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentialRule : credentialRule)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
impl MTRDoorLockClusterSetUserParams_Deprecated for MTRDoorLockClusterSetUserParams {}
pub trait MTRDoorLockClusterSetUserParams_Deprecated: Sized + std::ops::Deref {
    unsafe fn userUniqueId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userUniqueId)
    }
    unsafe fn setUserUniqueId_(&self, userUniqueId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserUniqueId : userUniqueId)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterGetUserParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterGetUserParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterGetUserParams {}
impl MTRDoorLockClusterGetUserParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterGetUserParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterGetUserParams {}
impl INSObject for MTRDoorLockClusterGetUserParams {}
impl PNSObject for MTRDoorLockClusterGetUserParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterGetUserParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDoorLockClusterGetUserParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterGetUserParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterGetUserParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterGetUserParams")
        }
    }
}
impl IMTRDoorLockClusterGetUserParams for MTRDoorLockClusterGetUserParams {}
pub trait IMTRDoorLockClusterGetUserParams: Sized + std::ops::Deref {
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterGetUserResponseParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterGetUserResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterGetUserResponseParams {}
impl MTRDoorLockClusterGetUserResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterGetUserResponseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterGetUserResponseParams {}
impl INSObject for MTRDoorLockClusterGetUserResponseParams {}
impl PNSObject for MTRDoorLockClusterGetUserResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterGetUserResponseParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDoorLockClusterGetUserResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterGetUserResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterGetUserResponseParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterGetUserResponseParams")
        }
    }
}
impl IMTRDoorLockClusterGetUserResponseParams for MTRDoorLockClusterGetUserResponseParams {}
pub trait IMTRDoorLockClusterGetUserResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn userName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userName)
    }
    unsafe fn setUserName_(&self, userName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserName : userName)
    }
    unsafe fn userUniqueID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userUniqueID)
    }
    unsafe fn setUserUniqueID_(&self, userUniqueID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserUniqueID : userUniqueID)
    }
    unsafe fn userStatus(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userStatus)
    }
    unsafe fn setUserStatus_(&self, userStatus: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserStatus : userStatus)
    }
    unsafe fn userType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userType)
    }
    unsafe fn setUserType_(&self, userType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserType : userType)
    }
    unsafe fn credentialRule(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credentialRule)
    }
    unsafe fn setCredentialRule_(&self, credentialRule: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentialRule : credentialRule)
    }
    unsafe fn credentials(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credentials)
    }
    unsafe fn setCredentials_(&self, credentials: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentials : credentials)
    }
    unsafe fn creatorFabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, creatorFabricIndex)
    }
    unsafe fn setCreatorFabricIndex_(&self, creatorFabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCreatorFabricIndex : creatorFabricIndex)
    }
    unsafe fn lastModifiedFabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lastModifiedFabricIndex)
    }
    unsafe fn setLastModifiedFabricIndex_(&self, lastModifiedFabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLastModifiedFabricIndex : lastModifiedFabricIndex)
    }
    unsafe fn nextUserIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nextUserIndex)
    }
    unsafe fn setNextUserIndex_(&self, nextUserIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNextUserIndex : nextUserIndex)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
impl MTRDoorLockClusterGetUserResponseParams_Deprecated
    for MTRDoorLockClusterGetUserResponseParams
{
}
pub trait MTRDoorLockClusterGetUserResponseParams_Deprecated: Sized + std::ops::Deref {
    unsafe fn userUniqueId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userUniqueId)
    }
    unsafe fn setUserUniqueId_(&self, userUniqueId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserUniqueId : userUniqueId)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterClearUserParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterClearUserParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterClearUserParams {}
impl MTRDoorLockClusterClearUserParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterClearUserParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterClearUserParams {}
impl INSObject for MTRDoorLockClusterClearUserParams {}
impl PNSObject for MTRDoorLockClusterClearUserParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterClearUserParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDoorLockClusterClearUserParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterClearUserParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterClearUserParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterClearUserParams")
        }
    }
}
impl IMTRDoorLockClusterClearUserParams for MTRDoorLockClusterClearUserParams {}
pub trait IMTRDoorLockClusterClearUserParams: Sized + std::ops::Deref {
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterSetCredentialParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterSetCredentialParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterSetCredentialParams {}
impl MTRDoorLockClusterSetCredentialParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterSetCredentialParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterSetCredentialParams {}
impl INSObject for MTRDoorLockClusterSetCredentialParams {}
impl PNSObject for MTRDoorLockClusterSetCredentialParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterSetCredentialParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDoorLockClusterSetCredentialParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterSetCredentialParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterSetCredentialParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterSetCredentialParams")
        }
    }
}
impl IMTRDoorLockClusterSetCredentialParams for MTRDoorLockClusterSetCredentialParams {}
pub trait IMTRDoorLockClusterSetCredentialParams: Sized + std::ops::Deref {
    unsafe fn operationType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationType)
    }
    unsafe fn setOperationType_(&self, operationType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationType : operationType)
    }
    unsafe fn credential(&self) -> MTRDoorLockClusterCredentialStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credential)
    }
    unsafe fn setCredential_(&self, credential: MTRDoorLockClusterCredentialStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredential : credential)
    }
    unsafe fn credentialData(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credentialData)
    }
    unsafe fn setCredentialData_(&self, credentialData: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentialData : credentialData)
    }
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn userStatus(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userStatus)
    }
    unsafe fn setUserStatus_(&self, userStatus: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserStatus : userStatus)
    }
    unsafe fn userType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userType)
    }
    unsafe fn setUserType_(&self, userType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserType : userType)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterSetCredentialResponseParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterSetCredentialResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterSetCredentialResponseParams {}
impl MTRDoorLockClusterSetCredentialResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterSetCredentialResponseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterSetCredentialResponseParams {}
impl INSObject for MTRDoorLockClusterSetCredentialResponseParams {}
impl PNSObject for MTRDoorLockClusterSetCredentialResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterSetCredentialResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterSetCredentialResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterSetCredentialResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterSetCredentialResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDoorLockClusterSetCredentialResponseParams" ,)
        }
    }
}
impl IMTRDoorLockClusterSetCredentialResponseParams
    for MTRDoorLockClusterSetCredentialResponseParams
{
}
pub trait IMTRDoorLockClusterSetCredentialResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn nextCredentialIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nextCredentialIndex)
    }
    unsafe fn setNextCredentialIndex_(&self, nextCredentialIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNextCredentialIndex : nextCredentialIndex)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterGetCredentialStatusParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterGetCredentialStatusParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterGetCredentialStatusParams {}
impl MTRDoorLockClusterGetCredentialStatusParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterGetCredentialStatusParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterGetCredentialStatusParams {}
impl INSObject for MTRDoorLockClusterGetCredentialStatusParams {}
impl PNSObject for MTRDoorLockClusterGetCredentialStatusParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterGetCredentialStatusParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterGetCredentialStatusParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterGetCredentialStatusParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterGetCredentialStatusParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterGetCredentialStatusParams")
        }
    }
}
impl IMTRDoorLockClusterGetCredentialStatusParams for MTRDoorLockClusterGetCredentialStatusParams {}
pub trait IMTRDoorLockClusterGetCredentialStatusParams: Sized + std::ops::Deref {
    unsafe fn credential(&self) -> MTRDoorLockClusterCredentialStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credential)
    }
    unsafe fn setCredential_(&self, credential: MTRDoorLockClusterCredentialStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredential : credential)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterGetCredentialStatusResponseParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterGetCredentialStatusResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterGetCredentialStatusResponseParams {}
impl MTRDoorLockClusterGetCredentialStatusResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterGetCredentialStatusResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDoorLockClusterGetCredentialStatusResponseParams {}
impl INSObject for MTRDoorLockClusterGetCredentialStatusResponseParams {}
impl PNSObject for MTRDoorLockClusterGetCredentialStatusResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterGetCredentialStatusResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterGetCredentialStatusResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterGetCredentialStatusResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterGetCredentialStatusResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDoorLockClusterGetCredentialStatusResponseParams" ,)
        }
    }
}
impl IMTRDoorLockClusterGetCredentialStatusResponseParams
    for MTRDoorLockClusterGetCredentialStatusResponseParams
{
}
pub trait IMTRDoorLockClusterGetCredentialStatusResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn credentialExists(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credentialExists)
    }
    unsafe fn setCredentialExists_(&self, credentialExists: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentialExists : credentialExists)
    }
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn creatorFabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, creatorFabricIndex)
    }
    unsafe fn setCreatorFabricIndex_(&self, creatorFabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCreatorFabricIndex : creatorFabricIndex)
    }
    unsafe fn lastModifiedFabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lastModifiedFabricIndex)
    }
    unsafe fn setLastModifiedFabricIndex_(&self, lastModifiedFabricIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLastModifiedFabricIndex : lastModifiedFabricIndex)
    }
    unsafe fn nextCredentialIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nextCredentialIndex)
    }
    unsafe fn setNextCredentialIndex_(&self, nextCredentialIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNextCredentialIndex : nextCredentialIndex)
    }
    unsafe fn credentialData(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credentialData)
    }
    unsafe fn setCredentialData_(&self, credentialData: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentialData : credentialData)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterClearCredentialParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterClearCredentialParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterClearCredentialParams {}
impl MTRDoorLockClusterClearCredentialParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterClearCredentialParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterClearCredentialParams {}
impl INSObject for MTRDoorLockClusterClearCredentialParams {}
impl PNSObject for MTRDoorLockClusterClearCredentialParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterClearCredentialParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDoorLockClusterClearCredentialParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterClearCredentialParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterClearCredentialParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterClearCredentialParams")
        }
    }
}
impl IMTRDoorLockClusterClearCredentialParams for MTRDoorLockClusterClearCredentialParams {}
pub trait IMTRDoorLockClusterClearCredentialParams: Sized + std::ops::Deref {
    unsafe fn credential(&self) -> MTRDoorLockClusterCredentialStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credential)
    }
    unsafe fn setCredential_(&self, credential: MTRDoorLockClusterCredentialStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredential : credential)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterUnboltDoorParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterUnboltDoorParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterUnboltDoorParams {}
impl MTRDoorLockClusterUnboltDoorParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterUnboltDoorParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterUnboltDoorParams {}
impl INSObject for MTRDoorLockClusterUnboltDoorParams {}
impl PNSObject for MTRDoorLockClusterUnboltDoorParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterUnboltDoorParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDoorLockClusterUnboltDoorParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterUnboltDoorParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterUnboltDoorParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDoorLockClusterUnboltDoorParams")
        }
    }
}
impl IMTRDoorLockClusterUnboltDoorParams for MTRDoorLockClusterUnboltDoorParams {}
pub trait IMTRDoorLockClusterUnboltDoorParams: Sized + std::ops::Deref {
    unsafe fn pinCode(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pinCode)
    }
    unsafe fn setPinCode_(&self, pinCode: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPinCode : pinCode)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterSetAliroReaderConfigParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterSetAliroReaderConfigParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterSetAliroReaderConfigParams {}
impl MTRDoorLockClusterSetAliroReaderConfigParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterSetAliroReaderConfigParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDoorLockClusterSetAliroReaderConfigParams {}
impl INSObject for MTRDoorLockClusterSetAliroReaderConfigParams {}
impl PNSObject for MTRDoorLockClusterSetAliroReaderConfigParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterSetAliroReaderConfigParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterSetAliroReaderConfigParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterSetAliroReaderConfigParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterSetAliroReaderConfigParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDoorLockClusterSetAliroReaderConfigParams" ,)
        }
    }
}
impl IMTRDoorLockClusterSetAliroReaderConfigParams
    for MTRDoorLockClusterSetAliroReaderConfigParams
{
}
pub trait IMTRDoorLockClusterSetAliroReaderConfigParams: Sized + std::ops::Deref {
    unsafe fn signingKey(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, signingKey)
    }
    unsafe fn setSigningKey_(&self, signingKey: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSigningKey : signingKey)
    }
    unsafe fn verificationKey(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, verificationKey)
    }
    unsafe fn setVerificationKey_(&self, verificationKey: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVerificationKey : verificationKey)
    }
    unsafe fn groupIdentifier(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupIdentifier)
    }
    unsafe fn setGroupIdentifier_(&self, groupIdentifier: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupIdentifier : groupIdentifier)
    }
    unsafe fn groupResolvingKey(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupResolvingKey)
    }
    unsafe fn setGroupResolvingKey_(&self, groupResolvingKey: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupResolvingKey : groupResolvingKey)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterClearAliroReaderConfigParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterClearAliroReaderConfigParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterClearAliroReaderConfigParams {}
impl MTRDoorLockClusterClearAliroReaderConfigParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterClearAliroReaderConfigParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDoorLockClusterClearAliroReaderConfigParams {}
impl INSObject for MTRDoorLockClusterClearAliroReaderConfigParams {}
impl PNSObject for MTRDoorLockClusterClearAliroReaderConfigParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterClearAliroReaderConfigParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterClearAliroReaderConfigParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterClearAliroReaderConfigParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterClearAliroReaderConfigParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDoorLockClusterClearAliroReaderConfigParams" ,)
        }
    }
}
impl IMTRDoorLockClusterClearAliroReaderConfigParams
    for MTRDoorLockClusterClearAliroReaderConfigParams
{
}
pub trait IMTRDoorLockClusterClearAliroReaderConfigParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterAppleSetAliroCredentialParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterAppleSetAliroCredentialParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterAppleSetAliroCredentialParams {}
impl MTRDoorLockClusterAppleSetAliroCredentialParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterAppleSetAliroCredentialParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDoorLockClusterAppleSetAliroCredentialParams {}
impl INSObject for MTRDoorLockClusterAppleSetAliroCredentialParams {}
impl PNSObject for MTRDoorLockClusterAppleSetAliroCredentialParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterAppleSetAliroCredentialParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterAppleSetAliroCredentialParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterAppleSetAliroCredentialParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterAppleSetAliroCredentialParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDoorLockClusterAppleSetAliroCredentialParams" ,)
        }
    }
}
impl IMTRDoorLockClusterAppleSetAliroCredentialParams
    for MTRDoorLockClusterAppleSetAliroCredentialParams
{
}
pub trait IMTRDoorLockClusterAppleSetAliroCredentialParams: Sized + std::ops::Deref {
    unsafe fn operationType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationType)
    }
    unsafe fn setOperationType_(&self, operationType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationType : operationType)
    }
    unsafe fn credential(&self) -> MTRDoorLockClusterAppleAliroCredentialStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credential)
    }
    unsafe fn setCredential_(&self, credential: MTRDoorLockClusterAppleAliroCredentialStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredential : credential)
    }
    unsafe fn credentialData(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credentialData)
    }
    unsafe fn setCredentialData_(&self, credentialData: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentialData : credentialData)
    }
    unsafe fn userIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userIndex)
    }
    unsafe fn setUserIndex_(&self, userIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserIndex : userIndex)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterAppleGetAliroCredentialStatusParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterAppleGetAliroCredentialStatusParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterAppleGetAliroCredentialStatusParams {}
impl MTRDoorLockClusterAppleGetAliroCredentialStatusParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterAppleGetAliroCredentialStatusParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDoorLockClusterAppleGetAliroCredentialStatusParams {}
impl INSObject for MTRDoorLockClusterAppleGetAliroCredentialStatusParams {}
impl PNSObject for MTRDoorLockClusterAppleGetAliroCredentialStatusParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterAppleGetAliroCredentialStatusParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterAppleGetAliroCredentialStatusParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterAppleGetAliroCredentialStatusParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterAppleGetAliroCredentialStatusParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDoorLockClusterAppleGetAliroCredentialStatusParams" ,)
        }
    }
}
impl IMTRDoorLockClusterAppleGetAliroCredentialStatusParams
    for MTRDoorLockClusterAppleGetAliroCredentialStatusParams
{
}
pub trait IMTRDoorLockClusterAppleGetAliroCredentialStatusParams: Sized + std::ops::Deref {
    unsafe fn credential(&self) -> MTRDoorLockClusterAppleAliroCredentialStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credential)
    }
    unsafe fn setCredential_(&self, credential: MTRDoorLockClusterAppleAliroCredentialStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredential : credential)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterAppleClearAliroCredentialParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterAppleClearAliroCredentialParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterAppleClearAliroCredentialParams {}
impl MTRDoorLockClusterAppleClearAliroCredentialParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterAppleClearAliroCredentialParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDoorLockClusterAppleClearAliroCredentialParams {}
impl INSObject for MTRDoorLockClusterAppleClearAliroCredentialParams {}
impl PNSObject for MTRDoorLockClusterAppleClearAliroCredentialParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterAppleClearAliroCredentialParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterAppleClearAliroCredentialParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterAppleClearAliroCredentialParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterAppleClearAliroCredentialParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDoorLockClusterAppleClearAliroCredentialParams" ,)
        }
    }
}
impl IMTRDoorLockClusterAppleClearAliroCredentialParams
    for MTRDoorLockClusterAppleClearAliroCredentialParams
{
}
pub trait IMTRDoorLockClusterAppleClearAliroCredentialParams: Sized + std::ops::Deref {
    unsafe fn credential(&self) -> MTRDoorLockClusterAppleAliroCredentialStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, credential)
    }
    unsafe fn setCredential_(&self, credential: MTRDoorLockClusterAppleAliroCredentialStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredential : credential)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterAppleSetAliroReaderConfigParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterAppleSetAliroReaderConfigParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterAppleSetAliroReaderConfigParams {}
impl MTRDoorLockClusterAppleSetAliroReaderConfigParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterAppleSetAliroReaderConfigParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDoorLockClusterAppleSetAliroReaderConfigParams {}
impl INSObject for MTRDoorLockClusterAppleSetAliroReaderConfigParams {}
impl PNSObject for MTRDoorLockClusterAppleSetAliroReaderConfigParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterAppleSetAliroReaderConfigParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterAppleSetAliroReaderConfigParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterAppleSetAliroReaderConfigParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterAppleSetAliroReaderConfigParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDoorLockClusterAppleSetAliroReaderConfigParams" ,)
        }
    }
}
impl IMTRDoorLockClusterAppleSetAliroReaderConfigParams
    for MTRDoorLockClusterAppleSetAliroReaderConfigParams
{
}
pub trait IMTRDoorLockClusterAppleSetAliroReaderConfigParams: Sized + std::ops::Deref {
    unsafe fn signingKey(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, signingKey)
    }
    unsafe fn setSigningKey_(&self, signingKey: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSigningKey : signingKey)
    }
    unsafe fn verificationKey(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, verificationKey)
    }
    unsafe fn setVerificationKey_(&self, verificationKey: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVerificationKey : verificationKey)
    }
    unsafe fn groupIdentifier(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupIdentifier)
    }
    unsafe fn setGroupIdentifier_(&self, groupIdentifier: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupIdentifier : groupIdentifier)
    }
    unsafe fn groupResolvingKey(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupResolvingKey)
    }
    unsafe fn setGroupResolvingKey_(&self, groupResolvingKey: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupResolvingKey : groupResolvingKey)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDoorLockClusterAppleClearAliroReaderConfigParams(pub id);
impl std::ops::Deref for MTRDoorLockClusterAppleClearAliroReaderConfigParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDoorLockClusterAppleClearAliroReaderConfigParams {}
impl MTRDoorLockClusterAppleClearAliroReaderConfigParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDoorLockClusterAppleClearAliroReaderConfigParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRDoorLockClusterAppleClearAliroReaderConfigParams {}
impl INSObject for MTRDoorLockClusterAppleClearAliroReaderConfigParams {}
impl PNSObject for MTRDoorLockClusterAppleClearAliroReaderConfigParams {}
impl std::convert::TryFrom<NSObject> for MTRDoorLockClusterAppleClearAliroReaderConfigParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRDoorLockClusterAppleClearAliroReaderConfigParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDoorLockClusterAppleClearAliroReaderConfigParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDoorLockClusterAppleClearAliroReaderConfigParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRDoorLockClusterAppleClearAliroReaderConfigParams" ,)
        }
    }
}
impl IMTRDoorLockClusterAppleClearAliroReaderConfigParams
    for MTRDoorLockClusterAppleClearAliroReaderConfigParams
{
}
pub trait IMTRDoorLockClusterAppleClearAliroReaderConfigParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWindowCoveringClusterUpOrOpenParams(pub id);
impl std::ops::Deref for MTRWindowCoveringClusterUpOrOpenParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWindowCoveringClusterUpOrOpenParams {}
impl MTRWindowCoveringClusterUpOrOpenParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWindowCoveringClusterUpOrOpenParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRWindowCoveringClusterUpOrOpenParams {}
impl INSObject for MTRWindowCoveringClusterUpOrOpenParams {}
impl PNSObject for MTRWindowCoveringClusterUpOrOpenParams {}
impl std::convert::TryFrom<NSObject> for MTRWindowCoveringClusterUpOrOpenParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRWindowCoveringClusterUpOrOpenParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWindowCoveringClusterUpOrOpenParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWindowCoveringClusterUpOrOpenParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRWindowCoveringClusterUpOrOpenParams")
        }
    }
}
impl IMTRWindowCoveringClusterUpOrOpenParams for MTRWindowCoveringClusterUpOrOpenParams {}
pub trait IMTRWindowCoveringClusterUpOrOpenParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWindowCoveringClusterDownOrCloseParams(pub id);
impl std::ops::Deref for MTRWindowCoveringClusterDownOrCloseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWindowCoveringClusterDownOrCloseParams {}
impl MTRWindowCoveringClusterDownOrCloseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWindowCoveringClusterDownOrCloseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRWindowCoveringClusterDownOrCloseParams {}
impl INSObject for MTRWindowCoveringClusterDownOrCloseParams {}
impl PNSObject for MTRWindowCoveringClusterDownOrCloseParams {}
impl std::convert::TryFrom<NSObject> for MTRWindowCoveringClusterDownOrCloseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWindowCoveringClusterDownOrCloseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWindowCoveringClusterDownOrCloseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWindowCoveringClusterDownOrCloseParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRWindowCoveringClusterDownOrCloseParams")
        }
    }
}
impl IMTRWindowCoveringClusterDownOrCloseParams for MTRWindowCoveringClusterDownOrCloseParams {}
pub trait IMTRWindowCoveringClusterDownOrCloseParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWindowCoveringClusterStopMotionParams(pub id);
impl std::ops::Deref for MTRWindowCoveringClusterStopMotionParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWindowCoveringClusterStopMotionParams {}
impl MTRWindowCoveringClusterStopMotionParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWindowCoveringClusterStopMotionParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRWindowCoveringClusterStopMotionParams {}
impl INSObject for MTRWindowCoveringClusterStopMotionParams {}
impl PNSObject for MTRWindowCoveringClusterStopMotionParams {}
impl std::convert::TryFrom<NSObject> for MTRWindowCoveringClusterStopMotionParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRWindowCoveringClusterStopMotionParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWindowCoveringClusterStopMotionParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWindowCoveringClusterStopMotionParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRWindowCoveringClusterStopMotionParams")
        }
    }
}
impl IMTRWindowCoveringClusterStopMotionParams for MTRWindowCoveringClusterStopMotionParams {}
pub trait IMTRWindowCoveringClusterStopMotionParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWindowCoveringClusterGoToLiftValueParams(pub id);
impl std::ops::Deref for MTRWindowCoveringClusterGoToLiftValueParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWindowCoveringClusterGoToLiftValueParams {}
impl MTRWindowCoveringClusterGoToLiftValueParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWindowCoveringClusterGoToLiftValueParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRWindowCoveringClusterGoToLiftValueParams {}
impl INSObject for MTRWindowCoveringClusterGoToLiftValueParams {}
impl PNSObject for MTRWindowCoveringClusterGoToLiftValueParams {}
impl std::convert::TryFrom<NSObject> for MTRWindowCoveringClusterGoToLiftValueParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWindowCoveringClusterGoToLiftValueParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWindowCoveringClusterGoToLiftValueParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWindowCoveringClusterGoToLiftValueParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRWindowCoveringClusterGoToLiftValueParams")
        }
    }
}
impl IMTRWindowCoveringClusterGoToLiftValueParams for MTRWindowCoveringClusterGoToLiftValueParams {}
pub trait IMTRWindowCoveringClusterGoToLiftValueParams: Sized + std::ops::Deref {
    unsafe fn liftValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, liftValue)
    }
    unsafe fn setLiftValue_(&self, liftValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLiftValue : liftValue)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWindowCoveringClusterGoToLiftPercentageParams(pub id);
impl std::ops::Deref for MTRWindowCoveringClusterGoToLiftPercentageParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWindowCoveringClusterGoToLiftPercentageParams {}
impl MTRWindowCoveringClusterGoToLiftPercentageParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWindowCoveringClusterGoToLiftPercentageParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWindowCoveringClusterGoToLiftPercentageParams {}
impl INSObject for MTRWindowCoveringClusterGoToLiftPercentageParams {}
impl PNSObject for MTRWindowCoveringClusterGoToLiftPercentageParams {}
impl std::convert::TryFrom<NSObject> for MTRWindowCoveringClusterGoToLiftPercentageParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWindowCoveringClusterGoToLiftPercentageParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWindowCoveringClusterGoToLiftPercentageParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWindowCoveringClusterGoToLiftPercentageParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWindowCoveringClusterGoToLiftPercentageParams" ,)
        }
    }
}
impl IMTRWindowCoveringClusterGoToLiftPercentageParams
    for MTRWindowCoveringClusterGoToLiftPercentageParams
{
}
pub trait IMTRWindowCoveringClusterGoToLiftPercentageParams: Sized + std::ops::Deref {
    unsafe fn liftPercent100thsValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, liftPercent100thsValue)
    }
    unsafe fn setLiftPercent100thsValue_(&self, liftPercent100thsValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLiftPercent100thsValue : liftPercent100thsValue)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWindowCoveringClusterGoToTiltValueParams(pub id);
impl std::ops::Deref for MTRWindowCoveringClusterGoToTiltValueParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWindowCoveringClusterGoToTiltValueParams {}
impl MTRWindowCoveringClusterGoToTiltValueParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWindowCoveringClusterGoToTiltValueParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRWindowCoveringClusterGoToTiltValueParams {}
impl INSObject for MTRWindowCoveringClusterGoToTiltValueParams {}
impl PNSObject for MTRWindowCoveringClusterGoToTiltValueParams {}
impl std::convert::TryFrom<NSObject> for MTRWindowCoveringClusterGoToTiltValueParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWindowCoveringClusterGoToTiltValueParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWindowCoveringClusterGoToTiltValueParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWindowCoveringClusterGoToTiltValueParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRWindowCoveringClusterGoToTiltValueParams")
        }
    }
}
impl IMTRWindowCoveringClusterGoToTiltValueParams for MTRWindowCoveringClusterGoToTiltValueParams {}
pub trait IMTRWindowCoveringClusterGoToTiltValueParams: Sized + std::ops::Deref {
    unsafe fn tiltValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tiltValue)
    }
    unsafe fn setTiltValue_(&self, tiltValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTiltValue : tiltValue)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWindowCoveringClusterGoToTiltPercentageParams(pub id);
impl std::ops::Deref for MTRWindowCoveringClusterGoToTiltPercentageParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWindowCoveringClusterGoToTiltPercentageParams {}
impl MTRWindowCoveringClusterGoToTiltPercentageParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWindowCoveringClusterGoToTiltPercentageParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWindowCoveringClusterGoToTiltPercentageParams {}
impl INSObject for MTRWindowCoveringClusterGoToTiltPercentageParams {}
impl PNSObject for MTRWindowCoveringClusterGoToTiltPercentageParams {}
impl std::convert::TryFrom<NSObject> for MTRWindowCoveringClusterGoToTiltPercentageParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWindowCoveringClusterGoToTiltPercentageParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWindowCoveringClusterGoToTiltPercentageParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWindowCoveringClusterGoToTiltPercentageParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWindowCoveringClusterGoToTiltPercentageParams" ,)
        }
    }
}
impl IMTRWindowCoveringClusterGoToTiltPercentageParams
    for MTRWindowCoveringClusterGoToTiltPercentageParams
{
}
pub trait IMTRWindowCoveringClusterGoToTiltPercentageParams: Sized + std::ops::Deref {
    unsafe fn tiltPercent100thsValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tiltPercent100thsValue)
    }
    unsafe fn setTiltPercent100thsValue_(&self, tiltPercent100thsValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTiltPercent100thsValue : tiltPercent100thsValue)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClosureControlClusterStopParams(pub id);
impl std::ops::Deref for MTRClosureControlClusterStopParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClosureControlClusterStopParams {}
impl MTRClosureControlClusterStopParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClosureControlClusterStopParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRClosureControlClusterStopParams {}
impl INSObject for MTRClosureControlClusterStopParams {}
impl PNSObject for MTRClosureControlClusterStopParams {}
impl std::convert::TryFrom<NSObject> for MTRClosureControlClusterStopParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRClosureControlClusterStopParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClosureControlClusterStopParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRClosureControlClusterStopParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRClosureControlClusterStopParams")
        }
    }
}
impl IMTRClosureControlClusterStopParams for MTRClosureControlClusterStopParams {}
pub trait IMTRClosureControlClusterStopParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClosureControlClusterMoveToParams(pub id);
impl std::ops::Deref for MTRClosureControlClusterMoveToParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClosureControlClusterMoveToParams {}
impl MTRClosureControlClusterMoveToParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClosureControlClusterMoveToParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRClosureControlClusterMoveToParams {}
impl INSObject for MTRClosureControlClusterMoveToParams {}
impl PNSObject for MTRClosureControlClusterMoveToParams {}
impl std::convert::TryFrom<NSObject> for MTRClosureControlClusterMoveToParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRClosureControlClusterMoveToParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClosureControlClusterMoveToParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRClosureControlClusterMoveToParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRClosureControlClusterMoveToParams")
        }
    }
}
impl IMTRClosureControlClusterMoveToParams for MTRClosureControlClusterMoveToParams {}
pub trait IMTRClosureControlClusterMoveToParams: Sized + std::ops::Deref {
    unsafe fn position(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, position)
    }
    unsafe fn setPosition_(&self, position: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPosition : position)
    }
    unsafe fn latch(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, latch)
    }
    unsafe fn setLatch_(&self, latch: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLatch : latch)
    }
    unsafe fn speed(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, speed)
    }
    unsafe fn setSpeed_(&self, speed: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSpeed : speed)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClosureControlClusterCalibrateParams(pub id);
impl std::ops::Deref for MTRClosureControlClusterCalibrateParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClosureControlClusterCalibrateParams {}
impl MTRClosureControlClusterCalibrateParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClosureControlClusterCalibrateParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRClosureControlClusterCalibrateParams {}
impl INSObject for MTRClosureControlClusterCalibrateParams {}
impl PNSObject for MTRClosureControlClusterCalibrateParams {}
impl std::convert::TryFrom<NSObject> for MTRClosureControlClusterCalibrateParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRClosureControlClusterCalibrateParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClosureControlClusterCalibrateParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRClosureControlClusterCalibrateParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRClosureControlClusterCalibrateParams")
        }
    }
}
impl IMTRClosureControlClusterCalibrateParams for MTRClosureControlClusterCalibrateParams {}
pub trait IMTRClosureControlClusterCalibrateParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClosureDimensionClusterSetTargetParams(pub id);
impl std::ops::Deref for MTRClosureDimensionClusterSetTargetParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClosureDimensionClusterSetTargetParams {}
impl MTRClosureDimensionClusterSetTargetParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClosureDimensionClusterSetTargetParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRClosureDimensionClusterSetTargetParams {}
impl INSObject for MTRClosureDimensionClusterSetTargetParams {}
impl PNSObject for MTRClosureDimensionClusterSetTargetParams {}
impl std::convert::TryFrom<NSObject> for MTRClosureDimensionClusterSetTargetParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRClosureDimensionClusterSetTargetParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClosureDimensionClusterSetTargetParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRClosureDimensionClusterSetTargetParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRClosureDimensionClusterSetTargetParams")
        }
    }
}
impl IMTRClosureDimensionClusterSetTargetParams for MTRClosureDimensionClusterSetTargetParams {}
pub trait IMTRClosureDimensionClusterSetTargetParams: Sized + std::ops::Deref {
    unsafe fn position(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, position)
    }
    unsafe fn setPosition_(&self, position: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPosition : position)
    }
    unsafe fn latch(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, latch)
    }
    unsafe fn setLatch_(&self, latch: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLatch : latch)
    }
    unsafe fn speed(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, speed)
    }
    unsafe fn setSpeed_(&self, speed: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSpeed : speed)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClosureDimensionClusterStepParams(pub id);
impl std::ops::Deref for MTRClosureDimensionClusterStepParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClosureDimensionClusterStepParams {}
impl MTRClosureDimensionClusterStepParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClosureDimensionClusterStepParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRClosureDimensionClusterStepParams {}
impl INSObject for MTRClosureDimensionClusterStepParams {}
impl PNSObject for MTRClosureDimensionClusterStepParams {}
impl std::convert::TryFrom<NSObject> for MTRClosureDimensionClusterStepParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRClosureDimensionClusterStepParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClosureDimensionClusterStepParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRClosureDimensionClusterStepParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRClosureDimensionClusterStepParams")
        }
    }
}
impl IMTRClosureDimensionClusterStepParams for MTRClosureDimensionClusterStepParams {}
pub trait IMTRClosureDimensionClusterStepParams: Sized + std::ops::Deref {
    unsafe fn direction(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, direction)
    }
    unsafe fn setDirection_(&self, direction: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDirection : direction)
    }
    unsafe fn numberOfSteps(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, numberOfSteps)
    }
    unsafe fn setNumberOfSteps_(&self, numberOfSteps: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNumberOfSteps : numberOfSteps)
    }
    unsafe fn speed(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, speed)
    }
    unsafe fn setSpeed_(&self, speed: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSpeed : speed)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRServiceAreaClusterSelectAreasParams(pub id);
impl std::ops::Deref for MTRServiceAreaClusterSelectAreasParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRServiceAreaClusterSelectAreasParams {}
impl MTRServiceAreaClusterSelectAreasParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRServiceAreaClusterSelectAreasParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRServiceAreaClusterSelectAreasParams {}
impl INSObject for MTRServiceAreaClusterSelectAreasParams {}
impl PNSObject for MTRServiceAreaClusterSelectAreasParams {}
impl std::convert::TryFrom<NSObject> for MTRServiceAreaClusterSelectAreasParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRServiceAreaClusterSelectAreasParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRServiceAreaClusterSelectAreasParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRServiceAreaClusterSelectAreasParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRServiceAreaClusterSelectAreasParams")
        }
    }
}
impl IMTRServiceAreaClusterSelectAreasParams for MTRServiceAreaClusterSelectAreasParams {}
pub trait IMTRServiceAreaClusterSelectAreasParams: Sized + std::ops::Deref {
    unsafe fn getNewAreas(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewAreas)
    }
    unsafe fn setNewAreas_(&self, newAreas: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewAreas : newAreas)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRServiceAreaClusterSelectAreasResponseParams(pub id);
impl std::ops::Deref for MTRServiceAreaClusterSelectAreasResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRServiceAreaClusterSelectAreasResponseParams {}
impl MTRServiceAreaClusterSelectAreasResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRServiceAreaClusterSelectAreasResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRServiceAreaClusterSelectAreasResponseParams {}
impl INSObject for MTRServiceAreaClusterSelectAreasResponseParams {}
impl PNSObject for MTRServiceAreaClusterSelectAreasResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRServiceAreaClusterSelectAreasResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRServiceAreaClusterSelectAreasResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRServiceAreaClusterSelectAreasResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRServiceAreaClusterSelectAreasResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRServiceAreaClusterSelectAreasResponseParams" ,)
        }
    }
}
impl IMTRServiceAreaClusterSelectAreasResponseParams
    for MTRServiceAreaClusterSelectAreasResponseParams
{
}
pub trait IMTRServiceAreaClusterSelectAreasResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn statusText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusText)
    }
    unsafe fn setStatusText_(&self, statusText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusText : statusText)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRServiceAreaClusterSkipAreaParams(pub id);
impl std::ops::Deref for MTRServiceAreaClusterSkipAreaParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRServiceAreaClusterSkipAreaParams {}
impl MTRServiceAreaClusterSkipAreaParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRServiceAreaClusterSkipAreaParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRServiceAreaClusterSkipAreaParams {}
impl INSObject for MTRServiceAreaClusterSkipAreaParams {}
impl PNSObject for MTRServiceAreaClusterSkipAreaParams {}
impl std::convert::TryFrom<NSObject> for MTRServiceAreaClusterSkipAreaParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRServiceAreaClusterSkipAreaParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRServiceAreaClusterSkipAreaParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRServiceAreaClusterSkipAreaParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRServiceAreaClusterSkipAreaParams")
        }
    }
}
impl IMTRServiceAreaClusterSkipAreaParams for MTRServiceAreaClusterSkipAreaParams {}
pub trait IMTRServiceAreaClusterSkipAreaParams: Sized + std::ops::Deref {
    unsafe fn skippedArea(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, skippedArea)
    }
    unsafe fn setSkippedArea_(&self, skippedArea: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSkippedArea : skippedArea)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRServiceAreaClusterSkipAreaResponseParams(pub id);
impl std::ops::Deref for MTRServiceAreaClusterSkipAreaResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRServiceAreaClusterSkipAreaResponseParams {}
impl MTRServiceAreaClusterSkipAreaResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRServiceAreaClusterSkipAreaResponseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRServiceAreaClusterSkipAreaResponseParams {}
impl INSObject for MTRServiceAreaClusterSkipAreaResponseParams {}
impl PNSObject for MTRServiceAreaClusterSkipAreaResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRServiceAreaClusterSkipAreaResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRServiceAreaClusterSkipAreaResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRServiceAreaClusterSkipAreaResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRServiceAreaClusterSkipAreaResponseParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRServiceAreaClusterSkipAreaResponseParams")
        }
    }
}
impl IMTRServiceAreaClusterSkipAreaResponseParams for MTRServiceAreaClusterSkipAreaResponseParams {}
pub trait IMTRServiceAreaClusterSkipAreaResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn statusText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusText)
    }
    unsafe fn setStatusText_(&self, statusText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusText : statusText)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterSetpointRaiseLowerParams(pub id);
impl std::ops::Deref for MTRThermostatClusterSetpointRaiseLowerParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterSetpointRaiseLowerParams {}
impl MTRThermostatClusterSetpointRaiseLowerParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterSetpointRaiseLowerParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRThermostatClusterSetpointRaiseLowerParams {}
impl INSObject for MTRThermostatClusterSetpointRaiseLowerParams {}
impl PNSObject for MTRThermostatClusterSetpointRaiseLowerParams {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterSetpointRaiseLowerParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThermostatClusterSetpointRaiseLowerParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterSetpointRaiseLowerParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterSetpointRaiseLowerParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThermostatClusterSetpointRaiseLowerParams" ,)
        }
    }
}
impl IMTRThermostatClusterSetpointRaiseLowerParams
    for MTRThermostatClusterSetpointRaiseLowerParams
{
}
pub trait IMTRThermostatClusterSetpointRaiseLowerParams: Sized + std::ops::Deref {
    unsafe fn mode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mode)
    }
    unsafe fn setMode_(&self, mode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMode : mode)
    }
    unsafe fn amount(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, amount)
    }
    unsafe fn setAmount_(&self, amount: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAmount : amount)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterGetWeeklyScheduleResponseParams(pub id);
impl std::ops::Deref for MTRThermostatClusterGetWeeklyScheduleResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterGetWeeklyScheduleResponseParams {}
impl MTRThermostatClusterGetWeeklyScheduleResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterGetWeeklyScheduleResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThermostatClusterGetWeeklyScheduleResponseParams {}
impl INSObject for MTRThermostatClusterGetWeeklyScheduleResponseParams {}
impl PNSObject for MTRThermostatClusterGetWeeklyScheduleResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterGetWeeklyScheduleResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThermostatClusterGetWeeklyScheduleResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterGetWeeklyScheduleResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterGetWeeklyScheduleResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThermostatClusterGetWeeklyScheduleResponseParams" ,)
        }
    }
}
impl IMTRThermostatClusterGetWeeklyScheduleResponseParams
    for MTRThermostatClusterGetWeeklyScheduleResponseParams
{
}
pub trait IMTRThermostatClusterGetWeeklyScheduleResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn numberOfTransitionsForSequence(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, numberOfTransitionsForSequence)
    }
    unsafe fn setNumberOfTransitionsForSequence_(&self, numberOfTransitionsForSequence: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNumberOfTransitionsForSequence : numberOfTransitionsForSequence)
    }
    unsafe fn dayOfWeekForSequence(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dayOfWeekForSequence)
    }
    unsafe fn setDayOfWeekForSequence_(&self, dayOfWeekForSequence: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDayOfWeekForSequence : dayOfWeekForSequence)
    }
    unsafe fn modeForSequence(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, modeForSequence)
    }
    unsafe fn setModeForSequence_(&self, modeForSequence: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setModeForSequence : modeForSequence)
    }
    unsafe fn transitions(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitions)
    }
    unsafe fn setTransitions_(&self, transitions: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitions : transitions)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterSetWeeklyScheduleParams(pub id);
impl std::ops::Deref for MTRThermostatClusterSetWeeklyScheduleParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterSetWeeklyScheduleParams {}
impl MTRThermostatClusterSetWeeklyScheduleParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterSetWeeklyScheduleParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRThermostatClusterSetWeeklyScheduleParams {}
impl INSObject for MTRThermostatClusterSetWeeklyScheduleParams {}
impl PNSObject for MTRThermostatClusterSetWeeklyScheduleParams {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterSetWeeklyScheduleParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThermostatClusterSetWeeklyScheduleParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterSetWeeklyScheduleParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterSetWeeklyScheduleParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRThermostatClusterSetWeeklyScheduleParams")
        }
    }
}
impl IMTRThermostatClusterSetWeeklyScheduleParams for MTRThermostatClusterSetWeeklyScheduleParams {}
pub trait IMTRThermostatClusterSetWeeklyScheduleParams: Sized + std::ops::Deref {
    unsafe fn numberOfTransitionsForSequence(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, numberOfTransitionsForSequence)
    }
    unsafe fn setNumberOfTransitionsForSequence_(&self, numberOfTransitionsForSequence: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNumberOfTransitionsForSequence : numberOfTransitionsForSequence)
    }
    unsafe fn dayOfWeekForSequence(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dayOfWeekForSequence)
    }
    unsafe fn setDayOfWeekForSequence_(&self, dayOfWeekForSequence: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDayOfWeekForSequence : dayOfWeekForSequence)
    }
    unsafe fn modeForSequence(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, modeForSequence)
    }
    unsafe fn setModeForSequence_(&self, modeForSequence: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setModeForSequence : modeForSequence)
    }
    unsafe fn transitions(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitions)
    }
    unsafe fn setTransitions_(&self, transitions: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitions : transitions)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterGetWeeklyScheduleParams(pub id);
impl std::ops::Deref for MTRThermostatClusterGetWeeklyScheduleParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterGetWeeklyScheduleParams {}
impl MTRThermostatClusterGetWeeklyScheduleParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterGetWeeklyScheduleParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRThermostatClusterGetWeeklyScheduleParams {}
impl INSObject for MTRThermostatClusterGetWeeklyScheduleParams {}
impl PNSObject for MTRThermostatClusterGetWeeklyScheduleParams {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterGetWeeklyScheduleParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThermostatClusterGetWeeklyScheduleParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterGetWeeklyScheduleParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterGetWeeklyScheduleParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRThermostatClusterGetWeeklyScheduleParams")
        }
    }
}
impl IMTRThermostatClusterGetWeeklyScheduleParams for MTRThermostatClusterGetWeeklyScheduleParams {}
pub trait IMTRThermostatClusterGetWeeklyScheduleParams: Sized + std::ops::Deref {
    unsafe fn daysToReturn(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, daysToReturn)
    }
    unsafe fn setDaysToReturn_(&self, daysToReturn: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDaysToReturn : daysToReturn)
    }
    unsafe fn modeToReturn(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, modeToReturn)
    }
    unsafe fn setModeToReturn_(&self, modeToReturn: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setModeToReturn : modeToReturn)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterAddThermostatSuggestionResponseParams(pub id);
impl std::ops::Deref for MTRThermostatClusterAddThermostatSuggestionResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterAddThermostatSuggestionResponseParams {}
impl MTRThermostatClusterAddThermostatSuggestionResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterAddThermostatSuggestionResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThermostatClusterAddThermostatSuggestionResponseParams {}
impl INSObject for MTRThermostatClusterAddThermostatSuggestionResponseParams {}
impl PNSObject for MTRThermostatClusterAddThermostatSuggestionResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterAddThermostatSuggestionResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThermostatClusterAddThermostatSuggestionResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterAddThermostatSuggestionResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterAddThermostatSuggestionResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThermostatClusterAddThermostatSuggestionResponseParams" ,)
        }
    }
}
impl IMTRThermostatClusterAddThermostatSuggestionResponseParams
    for MTRThermostatClusterAddThermostatSuggestionResponseParams
{
}
pub trait IMTRThermostatClusterAddThermostatSuggestionResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn uniqueID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, uniqueID)
    }
    unsafe fn setUniqueID_(&self, uniqueID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUniqueID : uniqueID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterClearWeeklyScheduleParams(pub id);
impl std::ops::Deref for MTRThermostatClusterClearWeeklyScheduleParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterClearWeeklyScheduleParams {}
impl MTRThermostatClusterClearWeeklyScheduleParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterClearWeeklyScheduleParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRThermostatClusterClearWeeklyScheduleParams {}
impl INSObject for MTRThermostatClusterClearWeeklyScheduleParams {}
impl PNSObject for MTRThermostatClusterClearWeeklyScheduleParams {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterClearWeeklyScheduleParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThermostatClusterClearWeeklyScheduleParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterClearWeeklyScheduleParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterClearWeeklyScheduleParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThermostatClusterClearWeeklyScheduleParams" ,)
        }
    }
}
impl IMTRThermostatClusterClearWeeklyScheduleParams
    for MTRThermostatClusterClearWeeklyScheduleParams
{
}
pub trait IMTRThermostatClusterClearWeeklyScheduleParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterSetActiveScheduleRequestParams(pub id);
impl std::ops::Deref for MTRThermostatClusterSetActiveScheduleRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterSetActiveScheduleRequestParams {}
impl MTRThermostatClusterSetActiveScheduleRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterSetActiveScheduleRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThermostatClusterSetActiveScheduleRequestParams {}
impl INSObject for MTRThermostatClusterSetActiveScheduleRequestParams {}
impl PNSObject for MTRThermostatClusterSetActiveScheduleRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterSetActiveScheduleRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThermostatClusterSetActiveScheduleRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterSetActiveScheduleRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterSetActiveScheduleRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThermostatClusterSetActiveScheduleRequestParams" ,)
        }
    }
}
impl IMTRThermostatClusterSetActiveScheduleRequestParams
    for MTRThermostatClusterSetActiveScheduleRequestParams
{
}
pub trait IMTRThermostatClusterSetActiveScheduleRequestParams: Sized + std::ops::Deref {
    unsafe fn scheduleHandle(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, scheduleHandle)
    }
    unsafe fn setScheduleHandle_(&self, scheduleHandle: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setScheduleHandle : scheduleHandle)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterSetActivePresetRequestParams(pub id);
impl std::ops::Deref for MTRThermostatClusterSetActivePresetRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterSetActivePresetRequestParams {}
impl MTRThermostatClusterSetActivePresetRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterSetActivePresetRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThermostatClusterSetActivePresetRequestParams {}
impl INSObject for MTRThermostatClusterSetActivePresetRequestParams {}
impl PNSObject for MTRThermostatClusterSetActivePresetRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterSetActivePresetRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThermostatClusterSetActivePresetRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterSetActivePresetRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterSetActivePresetRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThermostatClusterSetActivePresetRequestParams" ,)
        }
    }
}
impl IMTRThermostatClusterSetActivePresetRequestParams
    for MTRThermostatClusterSetActivePresetRequestParams
{
}
pub trait IMTRThermostatClusterSetActivePresetRequestParams: Sized + std::ops::Deref {
    unsafe fn presetHandle(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, presetHandle)
    }
    unsafe fn setPresetHandle_(&self, presetHandle: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPresetHandle : presetHandle)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterAddThermostatSuggestionParams(pub id);
impl std::ops::Deref for MTRThermostatClusterAddThermostatSuggestionParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterAddThermostatSuggestionParams {}
impl MTRThermostatClusterAddThermostatSuggestionParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterAddThermostatSuggestionParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThermostatClusterAddThermostatSuggestionParams {}
impl INSObject for MTRThermostatClusterAddThermostatSuggestionParams {}
impl PNSObject for MTRThermostatClusterAddThermostatSuggestionParams {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterAddThermostatSuggestionParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThermostatClusterAddThermostatSuggestionParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterAddThermostatSuggestionParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterAddThermostatSuggestionParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThermostatClusterAddThermostatSuggestionParams" ,)
        }
    }
}
impl IMTRThermostatClusterAddThermostatSuggestionParams
    for MTRThermostatClusterAddThermostatSuggestionParams
{
}
pub trait IMTRThermostatClusterAddThermostatSuggestionParams: Sized + std::ops::Deref {
    unsafe fn presetHandle(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, presetHandle)
    }
    unsafe fn setPresetHandle_(&self, presetHandle: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPresetHandle : presetHandle)
    }
    unsafe fn effectiveTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, effectiveTime)
    }
    unsafe fn setEffectiveTime_(&self, effectiveTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEffectiveTime : effectiveTime)
    }
    unsafe fn expirationInMinutes(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, expirationInMinutes)
    }
    unsafe fn setExpirationInMinutes_(&self, expirationInMinutes: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExpirationInMinutes : expirationInMinutes)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterRemoveThermostatSuggestionParams(pub id);
impl std::ops::Deref for MTRThermostatClusterRemoveThermostatSuggestionParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterRemoveThermostatSuggestionParams {}
impl MTRThermostatClusterRemoveThermostatSuggestionParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterRemoveThermostatSuggestionParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThermostatClusterRemoveThermostatSuggestionParams {}
impl INSObject for MTRThermostatClusterRemoveThermostatSuggestionParams {}
impl PNSObject for MTRThermostatClusterRemoveThermostatSuggestionParams {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterRemoveThermostatSuggestionParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThermostatClusterRemoveThermostatSuggestionParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterRemoveThermostatSuggestionParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterRemoveThermostatSuggestionParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThermostatClusterRemoveThermostatSuggestionParams" ,)
        }
    }
}
impl IMTRThermostatClusterRemoveThermostatSuggestionParams
    for MTRThermostatClusterRemoveThermostatSuggestionParams
{
}
pub trait IMTRThermostatClusterRemoveThermostatSuggestionParams: Sized + std::ops::Deref {
    unsafe fn uniqueID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, uniqueID)
    }
    unsafe fn setUniqueID_(&self, uniqueID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUniqueID : uniqueID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterAtomicResponseParams(pub id);
impl std::ops::Deref for MTRThermostatClusterAtomicResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterAtomicResponseParams {}
impl MTRThermostatClusterAtomicResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterAtomicResponseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRThermostatClusterAtomicResponseParams {}
impl INSObject for MTRThermostatClusterAtomicResponseParams {}
impl PNSObject for MTRThermostatClusterAtomicResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterAtomicResponseParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRThermostatClusterAtomicResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterAtomicResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterAtomicResponseParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRThermostatClusterAtomicResponseParams")
        }
    }
}
impl IMTRThermostatClusterAtomicResponseParams for MTRThermostatClusterAtomicResponseParams {}
pub trait IMTRThermostatClusterAtomicResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn statusCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusCode)
    }
    unsafe fn setStatusCode_(&self, statusCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusCode : statusCode)
    }
    unsafe fn attributeStatus(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attributeStatus)
    }
    unsafe fn setAttributeStatus_(&self, attributeStatus: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttributeStatus : attributeStatus)
    }
    unsafe fn timeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeout)
    }
    unsafe fn setTimeout_(&self, timeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeout : timeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThermostatClusterAtomicRequestParams(pub id);
impl std::ops::Deref for MTRThermostatClusterAtomicRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThermostatClusterAtomicRequestParams {}
impl MTRThermostatClusterAtomicRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThermostatClusterAtomicRequestParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRThermostatClusterAtomicRequestParams {}
impl INSObject for MTRThermostatClusterAtomicRequestParams {}
impl PNSObject for MTRThermostatClusterAtomicRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRThermostatClusterAtomicRequestParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRThermostatClusterAtomicRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThermostatClusterAtomicRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThermostatClusterAtomicRequestParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRThermostatClusterAtomicRequestParams")
        }
    }
}
impl IMTRThermostatClusterAtomicRequestParams for MTRThermostatClusterAtomicRequestParams {}
pub trait IMTRThermostatClusterAtomicRequestParams: Sized + std::ops::Deref {
    unsafe fn requestType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requestType)
    }
    unsafe fn setRequestType_(&self, requestType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRequestType : requestType)
    }
    unsafe fn attributeRequests(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attributeRequests)
    }
    unsafe fn setAttributeRequests_(&self, attributeRequests: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttributeRequests : attributeRequests)
    }
    unsafe fn timeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeout)
    }
    unsafe fn setTimeout_(&self, timeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeout : timeout)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRFanControlClusterStepParams(pub id);
impl std::ops::Deref for MTRFanControlClusterStepParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRFanControlClusterStepParams {}
impl MTRFanControlClusterStepParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRFanControlClusterStepParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRFanControlClusterStepParams {}
impl INSObject for MTRFanControlClusterStepParams {}
impl PNSObject for MTRFanControlClusterStepParams {}
impl std::convert::TryFrom<NSObject> for MTRFanControlClusterStepParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRFanControlClusterStepParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRFanControlClusterStepParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRFanControlClusterStepParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRFanControlClusterStepParams")
        }
    }
}
impl IMTRFanControlClusterStepParams for MTRFanControlClusterStepParams {}
pub trait IMTRFanControlClusterStepParams: Sized + std::ops::Deref {
    unsafe fn direction(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, direction)
    }
    unsafe fn setDirection_(&self, direction: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDirection : direction)
    }
    unsafe fn wrap(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, wrap)
    }
    unsafe fn setWrap_(&self, wrap: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWrap : wrap)
    }
    unsafe fn lowestOff(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lowestOff)
    }
    unsafe fn setLowestOff_(&self, lowestOff: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLowestOff : lowestOff)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRColorControlClusterMoveToHueParams(pub id);
impl std::ops::Deref for MTRColorControlClusterMoveToHueParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRColorControlClusterMoveToHueParams {}
impl MTRColorControlClusterMoveToHueParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRColorControlClusterMoveToHueParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRColorControlClusterMoveToHueParams {}
impl INSObject for MTRColorControlClusterMoveToHueParams {}
impl PNSObject for MTRColorControlClusterMoveToHueParams {}
impl std::convert::TryFrom<NSObject> for MTRColorControlClusterMoveToHueParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRColorControlClusterMoveToHueParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRColorControlClusterMoveToHueParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRColorControlClusterMoveToHueParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRColorControlClusterMoveToHueParams")
        }
    }
}
impl IMTRColorControlClusterMoveToHueParams for MTRColorControlClusterMoveToHueParams {}
pub trait IMTRColorControlClusterMoveToHueParams: Sized + std::ops::Deref {
    unsafe fn hue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hue)
    }
    unsafe fn setHue_(&self, hue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHue : hue)
    }
    unsafe fn direction(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, direction)
    }
    unsafe fn setDirection_(&self, direction: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDirection : direction)
    }
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRColorControlClusterMoveHueParams(pub id);
impl std::ops::Deref for MTRColorControlClusterMoveHueParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRColorControlClusterMoveHueParams {}
impl MTRColorControlClusterMoveHueParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRColorControlClusterMoveHueParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRColorControlClusterMoveHueParams {}
impl INSObject for MTRColorControlClusterMoveHueParams {}
impl PNSObject for MTRColorControlClusterMoveHueParams {}
impl std::convert::TryFrom<NSObject> for MTRColorControlClusterMoveHueParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRColorControlClusterMoveHueParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRColorControlClusterMoveHueParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRColorControlClusterMoveHueParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRColorControlClusterMoveHueParams")
        }
    }
}
impl IMTRColorControlClusterMoveHueParams for MTRColorControlClusterMoveHueParams {}
pub trait IMTRColorControlClusterMoveHueParams: Sized + std::ops::Deref {
    unsafe fn moveMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, moveMode)
    }
    unsafe fn setMoveMode_(&self, moveMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMoveMode : moveMode)
    }
    unsafe fn rate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rate)
    }
    unsafe fn setRate_(&self, rate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRate : rate)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRColorControlClusterStepHueParams(pub id);
impl std::ops::Deref for MTRColorControlClusterStepHueParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRColorControlClusterStepHueParams {}
impl MTRColorControlClusterStepHueParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRColorControlClusterStepHueParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRColorControlClusterStepHueParams {}
impl INSObject for MTRColorControlClusterStepHueParams {}
impl PNSObject for MTRColorControlClusterStepHueParams {}
impl std::convert::TryFrom<NSObject> for MTRColorControlClusterStepHueParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRColorControlClusterStepHueParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRColorControlClusterStepHueParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRColorControlClusterStepHueParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRColorControlClusterStepHueParams")
        }
    }
}
impl IMTRColorControlClusterStepHueParams for MTRColorControlClusterStepHueParams {}
pub trait IMTRColorControlClusterStepHueParams: Sized + std::ops::Deref {
    unsafe fn stepMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stepMode)
    }
    unsafe fn setStepMode_(&self, stepMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStepMode : stepMode)
    }
    unsafe fn stepSize(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stepSize)
    }
    unsafe fn setStepSize_(&self, stepSize: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStepSize : stepSize)
    }
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRColorControlClusterMoveToSaturationParams(pub id);
impl std::ops::Deref for MTRColorControlClusterMoveToSaturationParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRColorControlClusterMoveToSaturationParams {}
impl MTRColorControlClusterMoveToSaturationParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRColorControlClusterMoveToSaturationParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRColorControlClusterMoveToSaturationParams {}
impl INSObject for MTRColorControlClusterMoveToSaturationParams {}
impl PNSObject for MTRColorControlClusterMoveToSaturationParams {}
impl std::convert::TryFrom<NSObject> for MTRColorControlClusterMoveToSaturationParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRColorControlClusterMoveToSaturationParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRColorControlClusterMoveToSaturationParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRColorControlClusterMoveToSaturationParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRColorControlClusterMoveToSaturationParams" ,)
        }
    }
}
impl IMTRColorControlClusterMoveToSaturationParams
    for MTRColorControlClusterMoveToSaturationParams
{
}
pub trait IMTRColorControlClusterMoveToSaturationParams: Sized + std::ops::Deref {
    unsafe fn saturation(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, saturation)
    }
    unsafe fn setSaturation_(&self, saturation: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSaturation : saturation)
    }
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRColorControlClusterMoveSaturationParams(pub id);
impl std::ops::Deref for MTRColorControlClusterMoveSaturationParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRColorControlClusterMoveSaturationParams {}
impl MTRColorControlClusterMoveSaturationParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRColorControlClusterMoveSaturationParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRColorControlClusterMoveSaturationParams {}
impl INSObject for MTRColorControlClusterMoveSaturationParams {}
impl PNSObject for MTRColorControlClusterMoveSaturationParams {}
impl std::convert::TryFrom<NSObject> for MTRColorControlClusterMoveSaturationParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRColorControlClusterMoveSaturationParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRColorControlClusterMoveSaturationParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRColorControlClusterMoveSaturationParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRColorControlClusterMoveSaturationParams")
        }
    }
}
impl IMTRColorControlClusterMoveSaturationParams for MTRColorControlClusterMoveSaturationParams {}
pub trait IMTRColorControlClusterMoveSaturationParams: Sized + std::ops::Deref {
    unsafe fn moveMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, moveMode)
    }
    unsafe fn setMoveMode_(&self, moveMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMoveMode : moveMode)
    }
    unsafe fn rate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rate)
    }
    unsafe fn setRate_(&self, rate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRate : rate)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRColorControlClusterStepSaturationParams(pub id);
impl std::ops::Deref for MTRColorControlClusterStepSaturationParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRColorControlClusterStepSaturationParams {}
impl MTRColorControlClusterStepSaturationParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRColorControlClusterStepSaturationParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRColorControlClusterStepSaturationParams {}
impl INSObject for MTRColorControlClusterStepSaturationParams {}
impl PNSObject for MTRColorControlClusterStepSaturationParams {}
impl std::convert::TryFrom<NSObject> for MTRColorControlClusterStepSaturationParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRColorControlClusterStepSaturationParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRColorControlClusterStepSaturationParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRColorControlClusterStepSaturationParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRColorControlClusterStepSaturationParams")
        }
    }
}
impl IMTRColorControlClusterStepSaturationParams for MTRColorControlClusterStepSaturationParams {}
pub trait IMTRColorControlClusterStepSaturationParams: Sized + std::ops::Deref {
    unsafe fn stepMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stepMode)
    }
    unsafe fn setStepMode_(&self, stepMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStepMode : stepMode)
    }
    unsafe fn stepSize(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stepSize)
    }
    unsafe fn setStepSize_(&self, stepSize: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStepSize : stepSize)
    }
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRColorControlClusterMoveToHueAndSaturationParams(pub id);
impl std::ops::Deref for MTRColorControlClusterMoveToHueAndSaturationParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRColorControlClusterMoveToHueAndSaturationParams {}
impl MTRColorControlClusterMoveToHueAndSaturationParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRColorControlClusterMoveToHueAndSaturationParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRColorControlClusterMoveToHueAndSaturationParams {}
impl INSObject for MTRColorControlClusterMoveToHueAndSaturationParams {}
impl PNSObject for MTRColorControlClusterMoveToHueAndSaturationParams {}
impl std::convert::TryFrom<NSObject> for MTRColorControlClusterMoveToHueAndSaturationParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRColorControlClusterMoveToHueAndSaturationParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRColorControlClusterMoveToHueAndSaturationParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRColorControlClusterMoveToHueAndSaturationParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRColorControlClusterMoveToHueAndSaturationParams" ,)
        }
    }
}
impl IMTRColorControlClusterMoveToHueAndSaturationParams
    for MTRColorControlClusterMoveToHueAndSaturationParams
{
}
pub trait IMTRColorControlClusterMoveToHueAndSaturationParams: Sized + std::ops::Deref {
    unsafe fn hue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hue)
    }
    unsafe fn setHue_(&self, hue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHue : hue)
    }
    unsafe fn saturation(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, saturation)
    }
    unsafe fn setSaturation_(&self, saturation: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSaturation : saturation)
    }
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRColorControlClusterMoveToColorParams(pub id);
impl std::ops::Deref for MTRColorControlClusterMoveToColorParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRColorControlClusterMoveToColorParams {}
impl MTRColorControlClusterMoveToColorParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRColorControlClusterMoveToColorParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRColorControlClusterMoveToColorParams {}
impl INSObject for MTRColorControlClusterMoveToColorParams {}
impl PNSObject for MTRColorControlClusterMoveToColorParams {}
impl std::convert::TryFrom<NSObject> for MTRColorControlClusterMoveToColorParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRColorControlClusterMoveToColorParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRColorControlClusterMoveToColorParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRColorControlClusterMoveToColorParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRColorControlClusterMoveToColorParams")
        }
    }
}
impl IMTRColorControlClusterMoveToColorParams for MTRColorControlClusterMoveToColorParams {}
pub trait IMTRColorControlClusterMoveToColorParams: Sized + std::ops::Deref {
    unsafe fn colorX(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, colorX)
    }
    unsafe fn setColorX_(&self, colorX: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setColorX : colorX)
    }
    unsafe fn colorY(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, colorY)
    }
    unsafe fn setColorY_(&self, colorY: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setColorY : colorY)
    }
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRColorControlClusterMoveColorParams(pub id);
impl std::ops::Deref for MTRColorControlClusterMoveColorParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRColorControlClusterMoveColorParams {}
impl MTRColorControlClusterMoveColorParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRColorControlClusterMoveColorParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRColorControlClusterMoveColorParams {}
impl INSObject for MTRColorControlClusterMoveColorParams {}
impl PNSObject for MTRColorControlClusterMoveColorParams {}
impl std::convert::TryFrom<NSObject> for MTRColorControlClusterMoveColorParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRColorControlClusterMoveColorParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRColorControlClusterMoveColorParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRColorControlClusterMoveColorParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRColorControlClusterMoveColorParams")
        }
    }
}
impl IMTRColorControlClusterMoveColorParams for MTRColorControlClusterMoveColorParams {}
pub trait IMTRColorControlClusterMoveColorParams: Sized + std::ops::Deref {
    unsafe fn rateX(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rateX)
    }
    unsafe fn setRateX_(&self, rateX: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRateX : rateX)
    }
    unsafe fn rateY(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rateY)
    }
    unsafe fn setRateY_(&self, rateY: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRateY : rateY)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRColorControlClusterStepColorParams(pub id);
impl std::ops::Deref for MTRColorControlClusterStepColorParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRColorControlClusterStepColorParams {}
impl MTRColorControlClusterStepColorParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRColorControlClusterStepColorParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRColorControlClusterStepColorParams {}
impl INSObject for MTRColorControlClusterStepColorParams {}
impl PNSObject for MTRColorControlClusterStepColorParams {}
impl std::convert::TryFrom<NSObject> for MTRColorControlClusterStepColorParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRColorControlClusterStepColorParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRColorControlClusterStepColorParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRColorControlClusterStepColorParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRColorControlClusterStepColorParams")
        }
    }
}
impl IMTRColorControlClusterStepColorParams for MTRColorControlClusterStepColorParams {}
pub trait IMTRColorControlClusterStepColorParams: Sized + std::ops::Deref {
    unsafe fn stepX(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stepX)
    }
    unsafe fn setStepX_(&self, stepX: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStepX : stepX)
    }
    unsafe fn stepY(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stepY)
    }
    unsafe fn setStepY_(&self, stepY: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStepY : stepY)
    }
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRColorControlClusterMoveToColorTemperatureParams(pub id);
impl std::ops::Deref for MTRColorControlClusterMoveToColorTemperatureParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRColorControlClusterMoveToColorTemperatureParams {}
impl MTRColorControlClusterMoveToColorTemperatureParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRColorControlClusterMoveToColorTemperatureParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRColorControlClusterMoveToColorTemperatureParams {}
impl INSObject for MTRColorControlClusterMoveToColorTemperatureParams {}
impl PNSObject for MTRColorControlClusterMoveToColorTemperatureParams {}
impl std::convert::TryFrom<NSObject> for MTRColorControlClusterMoveToColorTemperatureParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRColorControlClusterMoveToColorTemperatureParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRColorControlClusterMoveToColorTemperatureParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRColorControlClusterMoveToColorTemperatureParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRColorControlClusterMoveToColorTemperatureParams" ,)
        }
    }
}
impl IMTRColorControlClusterMoveToColorTemperatureParams
    for MTRColorControlClusterMoveToColorTemperatureParams
{
}
pub trait IMTRColorControlClusterMoveToColorTemperatureParams: Sized + std::ops::Deref {
    unsafe fn colorTemperatureMireds(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, colorTemperatureMireds)
    }
    unsafe fn setColorTemperatureMireds_(&self, colorTemperatureMireds: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setColorTemperatureMireds : colorTemperatureMireds)
    }
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
impl MTRColorControlClusterMoveToColorTemperatureParams_Deprecated
    for MTRColorControlClusterMoveToColorTemperatureParams
{
}
pub trait MTRColorControlClusterMoveToColorTemperatureParams_Deprecated:
    Sized + std::ops::Deref
{
    unsafe fn colorTemperature(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, colorTemperature)
    }
    unsafe fn setColorTemperature_(&self, colorTemperature: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setColorTemperature : colorTemperature)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRColorControlClusterEnhancedMoveToHueParams(pub id);
impl std::ops::Deref for MTRColorControlClusterEnhancedMoveToHueParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRColorControlClusterEnhancedMoveToHueParams {}
impl MTRColorControlClusterEnhancedMoveToHueParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRColorControlClusterEnhancedMoveToHueParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRColorControlClusterEnhancedMoveToHueParams {}
impl INSObject for MTRColorControlClusterEnhancedMoveToHueParams {}
impl PNSObject for MTRColorControlClusterEnhancedMoveToHueParams {}
impl std::convert::TryFrom<NSObject> for MTRColorControlClusterEnhancedMoveToHueParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRColorControlClusterEnhancedMoveToHueParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRColorControlClusterEnhancedMoveToHueParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRColorControlClusterEnhancedMoveToHueParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRColorControlClusterEnhancedMoveToHueParams" ,)
        }
    }
}
impl IMTRColorControlClusterEnhancedMoveToHueParams
    for MTRColorControlClusterEnhancedMoveToHueParams
{
}
pub trait IMTRColorControlClusterEnhancedMoveToHueParams: Sized + std::ops::Deref {
    unsafe fn enhancedHue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, enhancedHue)
    }
    unsafe fn setEnhancedHue_(&self, enhancedHue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEnhancedHue : enhancedHue)
    }
    unsafe fn direction(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, direction)
    }
    unsafe fn setDirection_(&self, direction: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDirection : direction)
    }
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRColorControlClusterEnhancedMoveHueParams(pub id);
impl std::ops::Deref for MTRColorControlClusterEnhancedMoveHueParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRColorControlClusterEnhancedMoveHueParams {}
impl MTRColorControlClusterEnhancedMoveHueParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRColorControlClusterEnhancedMoveHueParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRColorControlClusterEnhancedMoveHueParams {}
impl INSObject for MTRColorControlClusterEnhancedMoveHueParams {}
impl PNSObject for MTRColorControlClusterEnhancedMoveHueParams {}
impl std::convert::TryFrom<NSObject> for MTRColorControlClusterEnhancedMoveHueParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRColorControlClusterEnhancedMoveHueParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRColorControlClusterEnhancedMoveHueParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRColorControlClusterEnhancedMoveHueParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRColorControlClusterEnhancedMoveHueParams")
        }
    }
}
impl IMTRColorControlClusterEnhancedMoveHueParams for MTRColorControlClusterEnhancedMoveHueParams {}
pub trait IMTRColorControlClusterEnhancedMoveHueParams: Sized + std::ops::Deref {
    unsafe fn moveMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, moveMode)
    }
    unsafe fn setMoveMode_(&self, moveMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMoveMode : moveMode)
    }
    unsafe fn rate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rate)
    }
    unsafe fn setRate_(&self, rate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRate : rate)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRColorControlClusterEnhancedStepHueParams(pub id);
impl std::ops::Deref for MTRColorControlClusterEnhancedStepHueParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRColorControlClusterEnhancedStepHueParams {}
impl MTRColorControlClusterEnhancedStepHueParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRColorControlClusterEnhancedStepHueParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRColorControlClusterEnhancedStepHueParams {}
impl INSObject for MTRColorControlClusterEnhancedStepHueParams {}
impl PNSObject for MTRColorControlClusterEnhancedStepHueParams {}
impl std::convert::TryFrom<NSObject> for MTRColorControlClusterEnhancedStepHueParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRColorControlClusterEnhancedStepHueParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRColorControlClusterEnhancedStepHueParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRColorControlClusterEnhancedStepHueParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRColorControlClusterEnhancedStepHueParams")
        }
    }
}
impl IMTRColorControlClusterEnhancedStepHueParams for MTRColorControlClusterEnhancedStepHueParams {}
pub trait IMTRColorControlClusterEnhancedStepHueParams: Sized + std::ops::Deref {
    unsafe fn stepMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stepMode)
    }
    unsafe fn setStepMode_(&self, stepMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStepMode : stepMode)
    }
    unsafe fn stepSize(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stepSize)
    }
    unsafe fn setStepSize_(&self, stepSize: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStepSize : stepSize)
    }
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRColorControlClusterEnhancedMoveToHueAndSaturationParams(pub id);
impl std::ops::Deref for MTRColorControlClusterEnhancedMoveToHueAndSaturationParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRColorControlClusterEnhancedMoveToHueAndSaturationParams {}
impl MTRColorControlClusterEnhancedMoveToHueAndSaturationParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRColorControlClusterEnhancedMoveToHueAndSaturationParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRColorControlClusterEnhancedMoveToHueAndSaturationParams {}
impl INSObject for MTRColorControlClusterEnhancedMoveToHueAndSaturationParams {}
impl PNSObject for MTRColorControlClusterEnhancedMoveToHueAndSaturationParams {}
impl std::convert::TryFrom<NSObject>
    for MTRColorControlClusterEnhancedMoveToHueAndSaturationParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRColorControlClusterEnhancedMoveToHueAndSaturationParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRColorControlClusterEnhancedMoveToHueAndSaturationParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRColorControlClusterEnhancedMoveToHueAndSaturationParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRColorControlClusterEnhancedMoveToHueAndSaturationParams" ,)
        }
    }
}
impl IMTRColorControlClusterEnhancedMoveToHueAndSaturationParams
    for MTRColorControlClusterEnhancedMoveToHueAndSaturationParams
{
}
pub trait IMTRColorControlClusterEnhancedMoveToHueAndSaturationParams:
    Sized + std::ops::Deref
{
    unsafe fn enhancedHue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, enhancedHue)
    }
    unsafe fn setEnhancedHue_(&self, enhancedHue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEnhancedHue : enhancedHue)
    }
    unsafe fn saturation(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, saturation)
    }
    unsafe fn setSaturation_(&self, saturation: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSaturation : saturation)
    }
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRColorControlClusterColorLoopSetParams(pub id);
impl std::ops::Deref for MTRColorControlClusterColorLoopSetParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRColorControlClusterColorLoopSetParams {}
impl MTRColorControlClusterColorLoopSetParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRColorControlClusterColorLoopSetParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRColorControlClusterColorLoopSetParams {}
impl INSObject for MTRColorControlClusterColorLoopSetParams {}
impl PNSObject for MTRColorControlClusterColorLoopSetParams {}
impl std::convert::TryFrom<NSObject> for MTRColorControlClusterColorLoopSetParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRColorControlClusterColorLoopSetParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRColorControlClusterColorLoopSetParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRColorControlClusterColorLoopSetParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRColorControlClusterColorLoopSetParams")
        }
    }
}
impl IMTRColorControlClusterColorLoopSetParams for MTRColorControlClusterColorLoopSetParams {}
pub trait IMTRColorControlClusterColorLoopSetParams: Sized + std::ops::Deref {
    unsafe fn updateFlags(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, updateFlags)
    }
    unsafe fn setUpdateFlags_(&self, updateFlags: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUpdateFlags : updateFlags)
    }
    unsafe fn action(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, action)
    }
    unsafe fn setAction_(&self, action: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAction : action)
    }
    unsafe fn direction(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, direction)
    }
    unsafe fn setDirection_(&self, direction: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDirection : direction)
    }
    unsafe fn time(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, time)
    }
    unsafe fn setTime_(&self, time: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTime : time)
    }
    unsafe fn startHue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startHue)
    }
    unsafe fn setStartHue_(&self, startHue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartHue : startHue)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRColorControlClusterStopMoveStepParams(pub id);
impl std::ops::Deref for MTRColorControlClusterStopMoveStepParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRColorControlClusterStopMoveStepParams {}
impl MTRColorControlClusterStopMoveStepParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRColorControlClusterStopMoveStepParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRColorControlClusterStopMoveStepParams {}
impl INSObject for MTRColorControlClusterStopMoveStepParams {}
impl PNSObject for MTRColorControlClusterStopMoveStepParams {}
impl std::convert::TryFrom<NSObject> for MTRColorControlClusterStopMoveStepParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRColorControlClusterStopMoveStepParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRColorControlClusterStopMoveStepParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRColorControlClusterStopMoveStepParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRColorControlClusterStopMoveStepParams")
        }
    }
}
impl IMTRColorControlClusterStopMoveStepParams for MTRColorControlClusterStopMoveStepParams {}
pub trait IMTRColorControlClusterStopMoveStepParams: Sized + std::ops::Deref {
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRColorControlClusterMoveColorTemperatureParams(pub id);
impl std::ops::Deref for MTRColorControlClusterMoveColorTemperatureParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRColorControlClusterMoveColorTemperatureParams {}
impl MTRColorControlClusterMoveColorTemperatureParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRColorControlClusterMoveColorTemperatureParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRColorControlClusterMoveColorTemperatureParams {}
impl INSObject for MTRColorControlClusterMoveColorTemperatureParams {}
impl PNSObject for MTRColorControlClusterMoveColorTemperatureParams {}
impl std::convert::TryFrom<NSObject> for MTRColorControlClusterMoveColorTemperatureParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRColorControlClusterMoveColorTemperatureParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRColorControlClusterMoveColorTemperatureParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRColorControlClusterMoveColorTemperatureParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRColorControlClusterMoveColorTemperatureParams" ,)
        }
    }
}
impl IMTRColorControlClusterMoveColorTemperatureParams
    for MTRColorControlClusterMoveColorTemperatureParams
{
}
pub trait IMTRColorControlClusterMoveColorTemperatureParams: Sized + std::ops::Deref {
    unsafe fn moveMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, moveMode)
    }
    unsafe fn setMoveMode_(&self, moveMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMoveMode : moveMode)
    }
    unsafe fn rate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rate)
    }
    unsafe fn setRate_(&self, rate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRate : rate)
    }
    unsafe fn colorTemperatureMinimumMireds(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, colorTemperatureMinimumMireds)
    }
    unsafe fn setColorTemperatureMinimumMireds_(&self, colorTemperatureMinimumMireds: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setColorTemperatureMinimumMireds : colorTemperatureMinimumMireds)
    }
    unsafe fn colorTemperatureMaximumMireds(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, colorTemperatureMaximumMireds)
    }
    unsafe fn setColorTemperatureMaximumMireds_(&self, colorTemperatureMaximumMireds: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setColorTemperatureMaximumMireds : colorTemperatureMaximumMireds)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRColorControlClusterStepColorTemperatureParams(pub id);
impl std::ops::Deref for MTRColorControlClusterStepColorTemperatureParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRColorControlClusterStepColorTemperatureParams {}
impl MTRColorControlClusterStepColorTemperatureParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRColorControlClusterStepColorTemperatureParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRColorControlClusterStepColorTemperatureParams {}
impl INSObject for MTRColorControlClusterStepColorTemperatureParams {}
impl PNSObject for MTRColorControlClusterStepColorTemperatureParams {}
impl std::convert::TryFrom<NSObject> for MTRColorControlClusterStepColorTemperatureParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRColorControlClusterStepColorTemperatureParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRColorControlClusterStepColorTemperatureParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRColorControlClusterStepColorTemperatureParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRColorControlClusterStepColorTemperatureParams" ,)
        }
    }
}
impl IMTRColorControlClusterStepColorTemperatureParams
    for MTRColorControlClusterStepColorTemperatureParams
{
}
pub trait IMTRColorControlClusterStepColorTemperatureParams: Sized + std::ops::Deref {
    unsafe fn stepMode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stepMode)
    }
    unsafe fn setStepMode_(&self, stepMode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStepMode : stepMode)
    }
    unsafe fn stepSize(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stepSize)
    }
    unsafe fn setStepSize_(&self, stepSize: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStepSize : stepSize)
    }
    unsafe fn transitionTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transitionTime)
    }
    unsafe fn setTransitionTime_(&self, transitionTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransitionTime : transitionTime)
    }
    unsafe fn colorTemperatureMinimumMireds(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, colorTemperatureMinimumMireds)
    }
    unsafe fn setColorTemperatureMinimumMireds_(&self, colorTemperatureMinimumMireds: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setColorTemperatureMinimumMireds : colorTemperatureMinimumMireds)
    }
    unsafe fn colorTemperatureMaximumMireds(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, colorTemperatureMaximumMireds)
    }
    unsafe fn setColorTemperatureMaximumMireds_(&self, colorTemperatureMaximumMireds: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setColorTemperatureMaximumMireds : colorTemperatureMaximumMireds)
    }
    unsafe fn optionsMask(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsMask)
    }
    unsafe fn setOptionsMask_(&self, optionsMask: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsMask : optionsMask)
    }
    unsafe fn optionsOverride(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionsOverride)
    }
    unsafe fn setOptionsOverride_(&self, optionsOverride: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionsOverride : optionsOverride)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWiFiNetworkManagementClusterNetworkPassphraseRequestParams(pub id);
impl std::ops::Deref for MTRWiFiNetworkManagementClusterNetworkPassphraseRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWiFiNetworkManagementClusterNetworkPassphraseRequestParams {}
impl MTRWiFiNetworkManagementClusterNetworkPassphraseRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWiFiNetworkManagementClusterNetworkPassphraseRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWiFiNetworkManagementClusterNetworkPassphraseRequestParams {}
impl INSObject for MTRWiFiNetworkManagementClusterNetworkPassphraseRequestParams {}
impl PNSObject for MTRWiFiNetworkManagementClusterNetworkPassphraseRequestParams {}
impl std::convert::TryFrom<NSObject>
    for MTRWiFiNetworkManagementClusterNetworkPassphraseRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWiFiNetworkManagementClusterNetworkPassphraseRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWiFiNetworkManagementClusterNetworkPassphraseRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWiFiNetworkManagementClusterNetworkPassphraseRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWiFiNetworkManagementClusterNetworkPassphraseRequestParams" ,)
        }
    }
}
impl IMTRWiFiNetworkManagementClusterNetworkPassphraseRequestParams
    for MTRWiFiNetworkManagementClusterNetworkPassphraseRequestParams
{
}
pub trait IMTRWiFiNetworkManagementClusterNetworkPassphraseRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWiFiNetworkManagementClusterNetworkPassphraseResponseParams(pub id);
impl std::ops::Deref for MTRWiFiNetworkManagementClusterNetworkPassphraseResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWiFiNetworkManagementClusterNetworkPassphraseResponseParams {}
impl MTRWiFiNetworkManagementClusterNetworkPassphraseResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWiFiNetworkManagementClusterNetworkPassphraseResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWiFiNetworkManagementClusterNetworkPassphraseResponseParams {}
impl INSObject for MTRWiFiNetworkManagementClusterNetworkPassphraseResponseParams {}
impl PNSObject for MTRWiFiNetworkManagementClusterNetworkPassphraseResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRWiFiNetworkManagementClusterNetworkPassphraseResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWiFiNetworkManagementClusterNetworkPassphraseResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWiFiNetworkManagementClusterNetworkPassphraseResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWiFiNetworkManagementClusterNetworkPassphraseResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWiFiNetworkManagementClusterNetworkPassphraseResponseParams" ,)
        }
    }
}
impl IMTRWiFiNetworkManagementClusterNetworkPassphraseResponseParams
    for MTRWiFiNetworkManagementClusterNetworkPassphraseResponseParams
{
}
pub trait IMTRWiFiNetworkManagementClusterNetworkPassphraseResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn passphrase(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, passphrase)
    }
    unsafe fn setPassphrase_(&self, passphrase: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPassphrase : passphrase)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThreadBorderRouterManagementClusterGetActiveDatasetRequestParams(pub id);
impl std::ops::Deref for MTRThreadBorderRouterManagementClusterGetActiveDatasetRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThreadBorderRouterManagementClusterGetActiveDatasetRequestParams {}
impl MTRThreadBorderRouterManagementClusterGetActiveDatasetRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThreadBorderRouterManagementClusterGetActiveDatasetRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThreadBorderRouterManagementClusterGetActiveDatasetRequestParams {}
impl INSObject for MTRThreadBorderRouterManagementClusterGetActiveDatasetRequestParams {}
impl PNSObject for MTRThreadBorderRouterManagementClusterGetActiveDatasetRequestParams {}
impl std::convert::TryFrom<NSObject>
    for MTRThreadBorderRouterManagementClusterGetActiveDatasetRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThreadBorderRouterManagementClusterGetActiveDatasetRequestParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThreadBorderRouterManagementClusterGetActiveDatasetRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThreadBorderRouterManagementClusterGetActiveDatasetRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThreadBorderRouterManagementClusterGetActiveDatasetRequestParams" ,)
        }
    }
}
impl IMTRThreadBorderRouterManagementClusterGetActiveDatasetRequestParams
    for MTRThreadBorderRouterManagementClusterGetActiveDatasetRequestParams
{
}
pub trait IMTRThreadBorderRouterManagementClusterGetActiveDatasetRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThreadBorderRouterManagementClusterGetPendingDatasetRequestParams(pub id);
impl std::ops::Deref for MTRThreadBorderRouterManagementClusterGetPendingDatasetRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThreadBorderRouterManagementClusterGetPendingDatasetRequestParams {}
impl MTRThreadBorderRouterManagementClusterGetPendingDatasetRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThreadBorderRouterManagementClusterGetPendingDatasetRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThreadBorderRouterManagementClusterGetPendingDatasetRequestParams {}
impl INSObject for MTRThreadBorderRouterManagementClusterGetPendingDatasetRequestParams {}
impl PNSObject for MTRThreadBorderRouterManagementClusterGetPendingDatasetRequestParams {}
impl std::convert::TryFrom<NSObject>
    for MTRThreadBorderRouterManagementClusterGetPendingDatasetRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThreadBorderRouterManagementClusterGetPendingDatasetRequestParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThreadBorderRouterManagementClusterGetPendingDatasetRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThreadBorderRouterManagementClusterGetPendingDatasetRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThreadBorderRouterManagementClusterGetPendingDatasetRequestParams" ,)
        }
    }
}
impl IMTRThreadBorderRouterManagementClusterGetPendingDatasetRequestParams
    for MTRThreadBorderRouterManagementClusterGetPendingDatasetRequestParams
{
}
pub trait IMTRThreadBorderRouterManagementClusterGetPendingDatasetRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThreadBorderRouterManagementClusterDatasetResponseParams(pub id);
impl std::ops::Deref for MTRThreadBorderRouterManagementClusterDatasetResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThreadBorderRouterManagementClusterDatasetResponseParams {}
impl MTRThreadBorderRouterManagementClusterDatasetResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThreadBorderRouterManagementClusterDatasetResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThreadBorderRouterManagementClusterDatasetResponseParams {}
impl INSObject for MTRThreadBorderRouterManagementClusterDatasetResponseParams {}
impl PNSObject for MTRThreadBorderRouterManagementClusterDatasetResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRThreadBorderRouterManagementClusterDatasetResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThreadBorderRouterManagementClusterDatasetResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThreadBorderRouterManagementClusterDatasetResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThreadBorderRouterManagementClusterDatasetResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThreadBorderRouterManagementClusterDatasetResponseParams" ,)
        }
    }
}
impl IMTRThreadBorderRouterManagementClusterDatasetResponseParams
    for MTRThreadBorderRouterManagementClusterDatasetResponseParams
{
}
pub trait IMTRThreadBorderRouterManagementClusterDatasetResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn dataset(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dataset)
    }
    unsafe fn setDataset_(&self, dataset: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDataset : dataset)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThreadBorderRouterManagementClusterSetActiveDatasetRequestParams(pub id);
impl std::ops::Deref for MTRThreadBorderRouterManagementClusterSetActiveDatasetRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThreadBorderRouterManagementClusterSetActiveDatasetRequestParams {}
impl MTRThreadBorderRouterManagementClusterSetActiveDatasetRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThreadBorderRouterManagementClusterSetActiveDatasetRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThreadBorderRouterManagementClusterSetActiveDatasetRequestParams {}
impl INSObject for MTRThreadBorderRouterManagementClusterSetActiveDatasetRequestParams {}
impl PNSObject for MTRThreadBorderRouterManagementClusterSetActiveDatasetRequestParams {}
impl std::convert::TryFrom<NSObject>
    for MTRThreadBorderRouterManagementClusterSetActiveDatasetRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThreadBorderRouterManagementClusterSetActiveDatasetRequestParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThreadBorderRouterManagementClusterSetActiveDatasetRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThreadBorderRouterManagementClusterSetActiveDatasetRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThreadBorderRouterManagementClusterSetActiveDatasetRequestParams" ,)
        }
    }
}
impl IMTRThreadBorderRouterManagementClusterSetActiveDatasetRequestParams
    for MTRThreadBorderRouterManagementClusterSetActiveDatasetRequestParams
{
}
pub trait IMTRThreadBorderRouterManagementClusterSetActiveDatasetRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn activeDataset(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, activeDataset)
    }
    unsafe fn setActiveDataset_(&self, activeDataset: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActiveDataset : activeDataset)
    }
    unsafe fn breadcrumb(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, breadcrumb)
    }
    unsafe fn setBreadcrumb_(&self, breadcrumb: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBreadcrumb : breadcrumb)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThreadBorderRouterManagementClusterSetPendingDatasetRequestParams(pub id);
impl std::ops::Deref for MTRThreadBorderRouterManagementClusterSetPendingDatasetRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThreadBorderRouterManagementClusterSetPendingDatasetRequestParams {}
impl MTRThreadBorderRouterManagementClusterSetPendingDatasetRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThreadBorderRouterManagementClusterSetPendingDatasetRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThreadBorderRouterManagementClusterSetPendingDatasetRequestParams {}
impl INSObject for MTRThreadBorderRouterManagementClusterSetPendingDatasetRequestParams {}
impl PNSObject for MTRThreadBorderRouterManagementClusterSetPendingDatasetRequestParams {}
impl std::convert::TryFrom<NSObject>
    for MTRThreadBorderRouterManagementClusterSetPendingDatasetRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThreadBorderRouterManagementClusterSetPendingDatasetRequestParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThreadBorderRouterManagementClusterSetPendingDatasetRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThreadBorderRouterManagementClusterSetPendingDatasetRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThreadBorderRouterManagementClusterSetPendingDatasetRequestParams" ,)
        }
    }
}
impl IMTRThreadBorderRouterManagementClusterSetPendingDatasetRequestParams
    for MTRThreadBorderRouterManagementClusterSetPendingDatasetRequestParams
{
}
pub trait IMTRThreadBorderRouterManagementClusterSetPendingDatasetRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn pendingDataset(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pendingDataset)
    }
    unsafe fn setPendingDataset_(&self, pendingDataset: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPendingDataset : pendingDataset)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThreadNetworkDirectoryClusterAddNetworkParams(pub id);
impl std::ops::Deref for MTRThreadNetworkDirectoryClusterAddNetworkParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThreadNetworkDirectoryClusterAddNetworkParams {}
impl MTRThreadNetworkDirectoryClusterAddNetworkParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThreadNetworkDirectoryClusterAddNetworkParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThreadNetworkDirectoryClusterAddNetworkParams {}
impl INSObject for MTRThreadNetworkDirectoryClusterAddNetworkParams {}
impl PNSObject for MTRThreadNetworkDirectoryClusterAddNetworkParams {}
impl std::convert::TryFrom<NSObject> for MTRThreadNetworkDirectoryClusterAddNetworkParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThreadNetworkDirectoryClusterAddNetworkParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThreadNetworkDirectoryClusterAddNetworkParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThreadNetworkDirectoryClusterAddNetworkParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThreadNetworkDirectoryClusterAddNetworkParams" ,)
        }
    }
}
impl IMTRThreadNetworkDirectoryClusterAddNetworkParams
    for MTRThreadNetworkDirectoryClusterAddNetworkParams
{
}
pub trait IMTRThreadNetworkDirectoryClusterAddNetworkParams: Sized + std::ops::Deref {
    unsafe fn operationalDataset(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationalDataset)
    }
    unsafe fn setOperationalDataset_(&self, operationalDataset: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationalDataset : operationalDataset)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThreadNetworkDirectoryClusterRemoveNetworkParams(pub id);
impl std::ops::Deref for MTRThreadNetworkDirectoryClusterRemoveNetworkParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThreadNetworkDirectoryClusterRemoveNetworkParams {}
impl MTRThreadNetworkDirectoryClusterRemoveNetworkParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThreadNetworkDirectoryClusterRemoveNetworkParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThreadNetworkDirectoryClusterRemoveNetworkParams {}
impl INSObject for MTRThreadNetworkDirectoryClusterRemoveNetworkParams {}
impl PNSObject for MTRThreadNetworkDirectoryClusterRemoveNetworkParams {}
impl std::convert::TryFrom<NSObject> for MTRThreadNetworkDirectoryClusterRemoveNetworkParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThreadNetworkDirectoryClusterRemoveNetworkParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThreadNetworkDirectoryClusterRemoveNetworkParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThreadNetworkDirectoryClusterRemoveNetworkParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThreadNetworkDirectoryClusterRemoveNetworkParams" ,)
        }
    }
}
impl IMTRThreadNetworkDirectoryClusterRemoveNetworkParams
    for MTRThreadNetworkDirectoryClusterRemoveNetworkParams
{
}
pub trait IMTRThreadNetworkDirectoryClusterRemoveNetworkParams: Sized + std::ops::Deref {
    unsafe fn extendedPanID(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, extendedPanID)
    }
    unsafe fn setExtendedPanID_(&self, extendedPanID: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExtendedPanID : extendedPanID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThreadNetworkDirectoryClusterGetOperationalDatasetParams(pub id);
impl std::ops::Deref for MTRThreadNetworkDirectoryClusterGetOperationalDatasetParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThreadNetworkDirectoryClusterGetOperationalDatasetParams {}
impl MTRThreadNetworkDirectoryClusterGetOperationalDatasetParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThreadNetworkDirectoryClusterGetOperationalDatasetParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThreadNetworkDirectoryClusterGetOperationalDatasetParams {}
impl INSObject for MTRThreadNetworkDirectoryClusterGetOperationalDatasetParams {}
impl PNSObject for MTRThreadNetworkDirectoryClusterGetOperationalDatasetParams {}
impl std::convert::TryFrom<NSObject>
    for MTRThreadNetworkDirectoryClusterGetOperationalDatasetParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThreadNetworkDirectoryClusterGetOperationalDatasetParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThreadNetworkDirectoryClusterGetOperationalDatasetParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThreadNetworkDirectoryClusterGetOperationalDatasetParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThreadNetworkDirectoryClusterGetOperationalDatasetParams" ,)
        }
    }
}
impl IMTRThreadNetworkDirectoryClusterGetOperationalDatasetParams
    for MTRThreadNetworkDirectoryClusterGetOperationalDatasetParams
{
}
pub trait IMTRThreadNetworkDirectoryClusterGetOperationalDatasetParams:
    Sized + std::ops::Deref
{
    unsafe fn extendedPanID(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, extendedPanID)
    }
    unsafe fn setExtendedPanID_(&self, extendedPanID: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExtendedPanID : extendedPanID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThreadNetworkDirectoryClusterOperationalDatasetResponseParams(pub id);
impl std::ops::Deref for MTRThreadNetworkDirectoryClusterOperationalDatasetResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThreadNetworkDirectoryClusterOperationalDatasetResponseParams {}
impl MTRThreadNetworkDirectoryClusterOperationalDatasetResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThreadNetworkDirectoryClusterOperationalDatasetResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRThreadNetworkDirectoryClusterOperationalDatasetResponseParams {}
impl INSObject for MTRThreadNetworkDirectoryClusterOperationalDatasetResponseParams {}
impl PNSObject for MTRThreadNetworkDirectoryClusterOperationalDatasetResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRThreadNetworkDirectoryClusterOperationalDatasetResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRThreadNetworkDirectoryClusterOperationalDatasetResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThreadNetworkDirectoryClusterOperationalDatasetResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRThreadNetworkDirectoryClusterOperationalDatasetResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRThreadNetworkDirectoryClusterOperationalDatasetResponseParams" ,)
        }
    }
}
impl IMTRThreadNetworkDirectoryClusterOperationalDatasetResponseParams
    for MTRThreadNetworkDirectoryClusterOperationalDatasetResponseParams
{
}
pub trait IMTRThreadNetworkDirectoryClusterOperationalDatasetResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn operationalDataset(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationalDataset)
    }
    unsafe fn setOperationalDataset_(&self, operationalDataset: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationalDataset : operationalDataset)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRChannelClusterChangeChannelParams(pub id);
impl std::ops::Deref for MTRChannelClusterChangeChannelParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRChannelClusterChangeChannelParams {}
impl MTRChannelClusterChangeChannelParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRChannelClusterChangeChannelParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRChannelClusterChangeChannelParams {}
impl INSObject for MTRChannelClusterChangeChannelParams {}
impl PNSObject for MTRChannelClusterChangeChannelParams {}
impl std::convert::TryFrom<NSObject> for MTRChannelClusterChangeChannelParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRChannelClusterChangeChannelParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRChannelClusterChangeChannelParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRChannelClusterChangeChannelParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRChannelClusterChangeChannelParams")
        }
    }
}
impl IMTRChannelClusterChangeChannelParams for MTRChannelClusterChangeChannelParams {}
pub trait IMTRChannelClusterChangeChannelParams: Sized + std::ops::Deref {
    unsafe fn match_(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, match)
    }
    unsafe fn setMatch_(&self, match_: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMatch : match_)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRChannelClusterChangeChannelResponseParams(pub id);
impl std::ops::Deref for MTRChannelClusterChangeChannelResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRChannelClusterChangeChannelResponseParams {}
impl MTRChannelClusterChangeChannelResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRChannelClusterChangeChannelResponseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRChannelClusterChangeChannelResponseParams {}
impl INSObject for MTRChannelClusterChangeChannelResponseParams {}
impl PNSObject for MTRChannelClusterChangeChannelResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRChannelClusterChangeChannelResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRChannelClusterChangeChannelResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRChannelClusterChangeChannelResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRChannelClusterChangeChannelResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRChannelClusterChangeChannelResponseParams" ,)
        }
    }
}
impl IMTRChannelClusterChangeChannelResponseParams
    for MTRChannelClusterChangeChannelResponseParams
{
}
pub trait IMTRChannelClusterChangeChannelResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn data(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn setData_(&self, data: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setData : data)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRChannelClusterChangeChannelByNumberParams(pub id);
impl std::ops::Deref for MTRChannelClusterChangeChannelByNumberParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRChannelClusterChangeChannelByNumberParams {}
impl MTRChannelClusterChangeChannelByNumberParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRChannelClusterChangeChannelByNumberParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRChannelClusterChangeChannelByNumberParams {}
impl INSObject for MTRChannelClusterChangeChannelByNumberParams {}
impl PNSObject for MTRChannelClusterChangeChannelByNumberParams {}
impl std::convert::TryFrom<NSObject> for MTRChannelClusterChangeChannelByNumberParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRChannelClusterChangeChannelByNumberParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRChannelClusterChangeChannelByNumberParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRChannelClusterChangeChannelByNumberParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRChannelClusterChangeChannelByNumberParams" ,)
        }
    }
}
impl IMTRChannelClusterChangeChannelByNumberParams
    for MTRChannelClusterChangeChannelByNumberParams
{
}
pub trait IMTRChannelClusterChangeChannelByNumberParams: Sized + std::ops::Deref {
    unsafe fn majorNumber(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, majorNumber)
    }
    unsafe fn setMajorNumber_(&self, majorNumber: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMajorNumber : majorNumber)
    }
    unsafe fn minorNumber(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minorNumber)
    }
    unsafe fn setMinorNumber_(&self, minorNumber: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinorNumber : minorNumber)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRChannelClusterSkipChannelParams(pub id);
impl std::ops::Deref for MTRChannelClusterSkipChannelParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRChannelClusterSkipChannelParams {}
impl MTRChannelClusterSkipChannelParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRChannelClusterSkipChannelParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRChannelClusterSkipChannelParams {}
impl INSObject for MTRChannelClusterSkipChannelParams {}
impl PNSObject for MTRChannelClusterSkipChannelParams {}
impl std::convert::TryFrom<NSObject> for MTRChannelClusterSkipChannelParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRChannelClusterSkipChannelParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRChannelClusterSkipChannelParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRChannelClusterSkipChannelParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRChannelClusterSkipChannelParams")
        }
    }
}
impl IMTRChannelClusterSkipChannelParams for MTRChannelClusterSkipChannelParams {}
pub trait IMTRChannelClusterSkipChannelParams: Sized + std::ops::Deref {
    unsafe fn getCount(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getCount)
    }
    unsafe fn setCount_(&self, count: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCount : count)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRChannelClusterGetProgramGuideParams(pub id);
impl std::ops::Deref for MTRChannelClusterGetProgramGuideParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRChannelClusterGetProgramGuideParams {}
impl MTRChannelClusterGetProgramGuideParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRChannelClusterGetProgramGuideParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRChannelClusterGetProgramGuideParams {}
impl INSObject for MTRChannelClusterGetProgramGuideParams {}
impl PNSObject for MTRChannelClusterGetProgramGuideParams {}
impl std::convert::TryFrom<NSObject> for MTRChannelClusterGetProgramGuideParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRChannelClusterGetProgramGuideParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRChannelClusterGetProgramGuideParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRChannelClusterGetProgramGuideParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRChannelClusterGetProgramGuideParams")
        }
    }
}
impl IMTRChannelClusterGetProgramGuideParams for MTRChannelClusterGetProgramGuideParams {}
pub trait IMTRChannelClusterGetProgramGuideParams: Sized + std::ops::Deref {
    unsafe fn startTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startTime)
    }
    unsafe fn setStartTime_(&self, startTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartTime : startTime)
    }
    unsafe fn endTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endTime)
    }
    unsafe fn setEndTime_(&self, endTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndTime : endTime)
    }
    unsafe fn channelList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, channelList)
    }
    unsafe fn setChannelList_(&self, channelList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChannelList : channelList)
    }
    unsafe fn pageToken(&self) -> MTRChannelClusterPageTokenStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pageToken)
    }
    unsafe fn setPageToken_(&self, pageToken: MTRChannelClusterPageTokenStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPageToken : pageToken)
    }
    unsafe fn recordingFlag(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, recordingFlag)
    }
    unsafe fn setRecordingFlag_(&self, recordingFlag: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRecordingFlag : recordingFlag)
    }
    unsafe fn externalIDList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, externalIDList)
    }
    unsafe fn setExternalIDList_(&self, externalIDList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExternalIDList : externalIDList)
    }
    unsafe fn data(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn setData_(&self, data: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setData : data)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRChannelClusterProgramGuideResponseParams(pub id);
impl std::ops::Deref for MTRChannelClusterProgramGuideResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRChannelClusterProgramGuideResponseParams {}
impl MTRChannelClusterProgramGuideResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRChannelClusterProgramGuideResponseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRChannelClusterProgramGuideResponseParams {}
impl INSObject for MTRChannelClusterProgramGuideResponseParams {}
impl PNSObject for MTRChannelClusterProgramGuideResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRChannelClusterProgramGuideResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRChannelClusterProgramGuideResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRChannelClusterProgramGuideResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRChannelClusterProgramGuideResponseParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRChannelClusterProgramGuideResponseParams")
        }
    }
}
impl IMTRChannelClusterProgramGuideResponseParams for MTRChannelClusterProgramGuideResponseParams {}
pub trait IMTRChannelClusterProgramGuideResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn paging(&self) -> MTRChannelClusterChannelPagingStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, paging)
    }
    unsafe fn setPaging_(&self, paging: MTRChannelClusterChannelPagingStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPaging : paging)
    }
    unsafe fn programList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, programList)
    }
    unsafe fn setProgramList_(&self, programList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProgramList : programList)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRChannelClusterRecordProgramParams(pub id);
impl std::ops::Deref for MTRChannelClusterRecordProgramParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRChannelClusterRecordProgramParams {}
impl MTRChannelClusterRecordProgramParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRChannelClusterRecordProgramParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRChannelClusterRecordProgramParams {}
impl INSObject for MTRChannelClusterRecordProgramParams {}
impl PNSObject for MTRChannelClusterRecordProgramParams {}
impl std::convert::TryFrom<NSObject> for MTRChannelClusterRecordProgramParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRChannelClusterRecordProgramParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRChannelClusterRecordProgramParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRChannelClusterRecordProgramParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRChannelClusterRecordProgramParams")
        }
    }
}
impl IMTRChannelClusterRecordProgramParams for MTRChannelClusterRecordProgramParams {}
pub trait IMTRChannelClusterRecordProgramParams: Sized + std::ops::Deref {
    unsafe fn programIdentifier(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, programIdentifier)
    }
    unsafe fn setProgramIdentifier_(&self, programIdentifier: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProgramIdentifier : programIdentifier)
    }
    unsafe fn shouldRecordSeries(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shouldRecordSeries)
    }
    unsafe fn setShouldRecordSeries_(&self, shouldRecordSeries: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setShouldRecordSeries : shouldRecordSeries)
    }
    unsafe fn externalIDList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, externalIDList)
    }
    unsafe fn setExternalIDList_(&self, externalIDList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExternalIDList : externalIDList)
    }
    unsafe fn data(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn setData_(&self, data: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setData : data)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRChannelClusterCancelRecordProgramParams(pub id);
impl std::ops::Deref for MTRChannelClusterCancelRecordProgramParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRChannelClusterCancelRecordProgramParams {}
impl MTRChannelClusterCancelRecordProgramParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRChannelClusterCancelRecordProgramParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRChannelClusterCancelRecordProgramParams {}
impl INSObject for MTRChannelClusterCancelRecordProgramParams {}
impl PNSObject for MTRChannelClusterCancelRecordProgramParams {}
impl std::convert::TryFrom<NSObject> for MTRChannelClusterCancelRecordProgramParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRChannelClusterCancelRecordProgramParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRChannelClusterCancelRecordProgramParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRChannelClusterCancelRecordProgramParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRChannelClusterCancelRecordProgramParams")
        }
    }
}
impl IMTRChannelClusterCancelRecordProgramParams for MTRChannelClusterCancelRecordProgramParams {}
pub trait IMTRChannelClusterCancelRecordProgramParams: Sized + std::ops::Deref {
    unsafe fn programIdentifier(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, programIdentifier)
    }
    unsafe fn setProgramIdentifier_(&self, programIdentifier: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProgramIdentifier : programIdentifier)
    }
    unsafe fn shouldRecordSeries(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shouldRecordSeries)
    }
    unsafe fn setShouldRecordSeries_(&self, shouldRecordSeries: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setShouldRecordSeries : shouldRecordSeries)
    }
    unsafe fn externalIDList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, externalIDList)
    }
    unsafe fn setExternalIDList_(&self, externalIDList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExternalIDList : externalIDList)
    }
    unsafe fn data(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn setData_(&self, data: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setData : data)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTargetNavigatorClusterNavigateTargetParams(pub id);
impl std::ops::Deref for MTRTargetNavigatorClusterNavigateTargetParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTargetNavigatorClusterNavigateTargetParams {}
impl MTRTargetNavigatorClusterNavigateTargetParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTargetNavigatorClusterNavigateTargetParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRTargetNavigatorClusterNavigateTargetParams {}
impl INSObject for MTRTargetNavigatorClusterNavigateTargetParams {}
impl PNSObject for MTRTargetNavigatorClusterNavigateTargetParams {}
impl std::convert::TryFrom<NSObject> for MTRTargetNavigatorClusterNavigateTargetParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTargetNavigatorClusterNavigateTargetParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTargetNavigatorClusterNavigateTargetParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTargetNavigatorClusterNavigateTargetParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTargetNavigatorClusterNavigateTargetParams" ,)
        }
    }
}
impl IMTRTargetNavigatorClusterNavigateTargetParams
    for MTRTargetNavigatorClusterNavigateTargetParams
{
}
pub trait IMTRTargetNavigatorClusterNavigateTargetParams: Sized + std::ops::Deref {
    unsafe fn target(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, target)
    }
    unsafe fn setTarget_(&self, target: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTarget : target)
    }
    unsafe fn data(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn setData_(&self, data: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setData : data)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTargetNavigatorClusterNavigateTargetResponseParams(pub id);
impl std::ops::Deref for MTRTargetNavigatorClusterNavigateTargetResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTargetNavigatorClusterNavigateTargetResponseParams {}
impl MTRTargetNavigatorClusterNavigateTargetResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTargetNavigatorClusterNavigateTargetResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTargetNavigatorClusterNavigateTargetResponseParams {}
impl INSObject for MTRTargetNavigatorClusterNavigateTargetResponseParams {}
impl PNSObject for MTRTargetNavigatorClusterNavigateTargetResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRTargetNavigatorClusterNavigateTargetResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTargetNavigatorClusterNavigateTargetResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTargetNavigatorClusterNavigateTargetResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTargetNavigatorClusterNavigateTargetResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTargetNavigatorClusterNavigateTargetResponseParams" ,)
        }
    }
}
impl IMTRTargetNavigatorClusterNavigateTargetResponseParams
    for MTRTargetNavigatorClusterNavigateTargetResponseParams
{
}
pub trait IMTRTargetNavigatorClusterNavigateTargetResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn data(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn setData_(&self, data: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setData : data)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaPlaybackClusterPlayParams(pub id);
impl std::ops::Deref for MTRMediaPlaybackClusterPlayParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaPlaybackClusterPlayParams {}
impl MTRMediaPlaybackClusterPlayParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterPlayParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMediaPlaybackClusterPlayParams {}
impl INSObject for MTRMediaPlaybackClusterPlayParams {}
impl PNSObject for MTRMediaPlaybackClusterPlayParams {}
impl std::convert::TryFrom<NSObject> for MTRMediaPlaybackClusterPlayParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMediaPlaybackClusterPlayParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterPlayParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaPlaybackClusterPlayParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMediaPlaybackClusterPlayParams")
        }
    }
}
impl IMTRMediaPlaybackClusterPlayParams for MTRMediaPlaybackClusterPlayParams {}
pub trait IMTRMediaPlaybackClusterPlayParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaPlaybackClusterPauseParams(pub id);
impl std::ops::Deref for MTRMediaPlaybackClusterPauseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaPlaybackClusterPauseParams {}
impl MTRMediaPlaybackClusterPauseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterPauseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMediaPlaybackClusterPauseParams {}
impl INSObject for MTRMediaPlaybackClusterPauseParams {}
impl PNSObject for MTRMediaPlaybackClusterPauseParams {}
impl std::convert::TryFrom<NSObject> for MTRMediaPlaybackClusterPauseParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMediaPlaybackClusterPauseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterPauseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaPlaybackClusterPauseParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMediaPlaybackClusterPauseParams")
        }
    }
}
impl IMTRMediaPlaybackClusterPauseParams for MTRMediaPlaybackClusterPauseParams {}
pub trait IMTRMediaPlaybackClusterPauseParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaPlaybackClusterStopParams(pub id);
impl std::ops::Deref for MTRMediaPlaybackClusterStopParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaPlaybackClusterStopParams {}
impl MTRMediaPlaybackClusterStopParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterStopParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMediaPlaybackClusterStopParams {}
impl INSObject for MTRMediaPlaybackClusterStopParams {}
impl PNSObject for MTRMediaPlaybackClusterStopParams {}
impl std::convert::TryFrom<NSObject> for MTRMediaPlaybackClusterStopParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMediaPlaybackClusterStopParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterStopParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaPlaybackClusterStopParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMediaPlaybackClusterStopParams")
        }
    }
}
impl IMTRMediaPlaybackClusterStopParams for MTRMediaPlaybackClusterStopParams {}
pub trait IMTRMediaPlaybackClusterStopParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaPlaybackClusterStopPlaybackParams(pub id);
impl std::ops::Deref for MTRMediaPlaybackClusterStopPlaybackParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaPlaybackClusterStopPlaybackParams {}
impl MTRMediaPlaybackClusterStopPlaybackParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterStopPlaybackParams").unwrap(), alloc) })
    }
}
impl IMTRMediaPlaybackClusterStopParams for MTRMediaPlaybackClusterStopPlaybackParams {}
impl PNSCopying for MTRMediaPlaybackClusterStopPlaybackParams {}
impl From<MTRMediaPlaybackClusterStopPlaybackParams> for MTRMediaPlaybackClusterStopParams {
    fn from(child: MTRMediaPlaybackClusterStopPlaybackParams) -> MTRMediaPlaybackClusterStopParams {
        MTRMediaPlaybackClusterStopParams(child.0)
    }
}
impl std::convert::TryFrom<MTRMediaPlaybackClusterStopParams>
    for MTRMediaPlaybackClusterStopPlaybackParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRMediaPlaybackClusterStopParams,
    ) -> Result<MTRMediaPlaybackClusterStopPlaybackParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterStopPlaybackParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaPlaybackClusterStopPlaybackParams(parent.0))
        } else {
            Err ("This MTRMediaPlaybackClusterStopParams cannot be downcasted to MTRMediaPlaybackClusterStopPlaybackParams" ,)
        }
    }
}
impl INSObject for MTRMediaPlaybackClusterStopPlaybackParams {}
impl PNSObject for MTRMediaPlaybackClusterStopPlaybackParams {}
impl IMTRMediaPlaybackClusterStopPlaybackParams for MTRMediaPlaybackClusterStopPlaybackParams {}
pub trait IMTRMediaPlaybackClusterStopPlaybackParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaPlaybackClusterStartOverParams(pub id);
impl std::ops::Deref for MTRMediaPlaybackClusterStartOverParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaPlaybackClusterStartOverParams {}
impl MTRMediaPlaybackClusterStartOverParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterStartOverParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMediaPlaybackClusterStartOverParams {}
impl INSObject for MTRMediaPlaybackClusterStartOverParams {}
impl PNSObject for MTRMediaPlaybackClusterStartOverParams {}
impl std::convert::TryFrom<NSObject> for MTRMediaPlaybackClusterStartOverParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMediaPlaybackClusterStartOverParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterStartOverParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaPlaybackClusterStartOverParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMediaPlaybackClusterStartOverParams")
        }
    }
}
impl IMTRMediaPlaybackClusterStartOverParams for MTRMediaPlaybackClusterStartOverParams {}
pub trait IMTRMediaPlaybackClusterStartOverParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaPlaybackClusterPreviousParams(pub id);
impl std::ops::Deref for MTRMediaPlaybackClusterPreviousParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaPlaybackClusterPreviousParams {}
impl MTRMediaPlaybackClusterPreviousParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterPreviousParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMediaPlaybackClusterPreviousParams {}
impl INSObject for MTRMediaPlaybackClusterPreviousParams {}
impl PNSObject for MTRMediaPlaybackClusterPreviousParams {}
impl std::convert::TryFrom<NSObject> for MTRMediaPlaybackClusterPreviousParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMediaPlaybackClusterPreviousParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterPreviousParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaPlaybackClusterPreviousParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMediaPlaybackClusterPreviousParams")
        }
    }
}
impl IMTRMediaPlaybackClusterPreviousParams for MTRMediaPlaybackClusterPreviousParams {}
pub trait IMTRMediaPlaybackClusterPreviousParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaPlaybackClusterNextParams(pub id);
impl std::ops::Deref for MTRMediaPlaybackClusterNextParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaPlaybackClusterNextParams {}
impl MTRMediaPlaybackClusterNextParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterNextParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMediaPlaybackClusterNextParams {}
impl INSObject for MTRMediaPlaybackClusterNextParams {}
impl PNSObject for MTRMediaPlaybackClusterNextParams {}
impl std::convert::TryFrom<NSObject> for MTRMediaPlaybackClusterNextParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMediaPlaybackClusterNextParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterNextParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaPlaybackClusterNextParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMediaPlaybackClusterNextParams")
        }
    }
}
impl IMTRMediaPlaybackClusterNextParams for MTRMediaPlaybackClusterNextParams {}
pub trait IMTRMediaPlaybackClusterNextParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaPlaybackClusterRewindParams(pub id);
impl std::ops::Deref for MTRMediaPlaybackClusterRewindParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaPlaybackClusterRewindParams {}
impl MTRMediaPlaybackClusterRewindParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterRewindParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMediaPlaybackClusterRewindParams {}
impl INSObject for MTRMediaPlaybackClusterRewindParams {}
impl PNSObject for MTRMediaPlaybackClusterRewindParams {}
impl std::convert::TryFrom<NSObject> for MTRMediaPlaybackClusterRewindParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMediaPlaybackClusterRewindParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterRewindParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaPlaybackClusterRewindParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMediaPlaybackClusterRewindParams")
        }
    }
}
impl IMTRMediaPlaybackClusterRewindParams for MTRMediaPlaybackClusterRewindParams {}
pub trait IMTRMediaPlaybackClusterRewindParams: Sized + std::ops::Deref {
    unsafe fn audioAdvanceUnmuted(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, audioAdvanceUnmuted)
    }
    unsafe fn setAudioAdvanceUnmuted_(&self, audioAdvanceUnmuted: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAudioAdvanceUnmuted : audioAdvanceUnmuted)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaPlaybackClusterFastForwardParams(pub id);
impl std::ops::Deref for MTRMediaPlaybackClusterFastForwardParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaPlaybackClusterFastForwardParams {}
impl MTRMediaPlaybackClusterFastForwardParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterFastForwardParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMediaPlaybackClusterFastForwardParams {}
impl INSObject for MTRMediaPlaybackClusterFastForwardParams {}
impl PNSObject for MTRMediaPlaybackClusterFastForwardParams {}
impl std::convert::TryFrom<NSObject> for MTRMediaPlaybackClusterFastForwardParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMediaPlaybackClusterFastForwardParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterFastForwardParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaPlaybackClusterFastForwardParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMediaPlaybackClusterFastForwardParams")
        }
    }
}
impl IMTRMediaPlaybackClusterFastForwardParams for MTRMediaPlaybackClusterFastForwardParams {}
pub trait IMTRMediaPlaybackClusterFastForwardParams: Sized + std::ops::Deref {
    unsafe fn audioAdvanceUnmuted(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, audioAdvanceUnmuted)
    }
    unsafe fn setAudioAdvanceUnmuted_(&self, audioAdvanceUnmuted: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAudioAdvanceUnmuted : audioAdvanceUnmuted)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaPlaybackClusterSkipForwardParams(pub id);
impl std::ops::Deref for MTRMediaPlaybackClusterSkipForwardParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaPlaybackClusterSkipForwardParams {}
impl MTRMediaPlaybackClusterSkipForwardParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterSkipForwardParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMediaPlaybackClusterSkipForwardParams {}
impl INSObject for MTRMediaPlaybackClusterSkipForwardParams {}
impl PNSObject for MTRMediaPlaybackClusterSkipForwardParams {}
impl std::convert::TryFrom<NSObject> for MTRMediaPlaybackClusterSkipForwardParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMediaPlaybackClusterSkipForwardParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterSkipForwardParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaPlaybackClusterSkipForwardParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMediaPlaybackClusterSkipForwardParams")
        }
    }
}
impl IMTRMediaPlaybackClusterSkipForwardParams for MTRMediaPlaybackClusterSkipForwardParams {}
pub trait IMTRMediaPlaybackClusterSkipForwardParams: Sized + std::ops::Deref {
    unsafe fn deltaPositionMilliseconds(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deltaPositionMilliseconds)
    }
    unsafe fn setDeltaPositionMilliseconds_(&self, deltaPositionMilliseconds: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDeltaPositionMilliseconds : deltaPositionMilliseconds)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaPlaybackClusterSkipBackwardParams(pub id);
impl std::ops::Deref for MTRMediaPlaybackClusterSkipBackwardParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaPlaybackClusterSkipBackwardParams {}
impl MTRMediaPlaybackClusterSkipBackwardParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterSkipBackwardParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMediaPlaybackClusterSkipBackwardParams {}
impl INSObject for MTRMediaPlaybackClusterSkipBackwardParams {}
impl PNSObject for MTRMediaPlaybackClusterSkipBackwardParams {}
impl std::convert::TryFrom<NSObject> for MTRMediaPlaybackClusterSkipBackwardParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRMediaPlaybackClusterSkipBackwardParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterSkipBackwardParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaPlaybackClusterSkipBackwardParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMediaPlaybackClusterSkipBackwardParams")
        }
    }
}
impl IMTRMediaPlaybackClusterSkipBackwardParams for MTRMediaPlaybackClusterSkipBackwardParams {}
pub trait IMTRMediaPlaybackClusterSkipBackwardParams: Sized + std::ops::Deref {
    unsafe fn deltaPositionMilliseconds(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deltaPositionMilliseconds)
    }
    unsafe fn setDeltaPositionMilliseconds_(&self, deltaPositionMilliseconds: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDeltaPositionMilliseconds : deltaPositionMilliseconds)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaPlaybackClusterPlaybackResponseParams(pub id);
impl std::ops::Deref for MTRMediaPlaybackClusterPlaybackResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaPlaybackClusterPlaybackResponseParams {}
impl MTRMediaPlaybackClusterPlaybackResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterPlaybackResponseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMediaPlaybackClusterPlaybackResponseParams {}
impl INSObject for MTRMediaPlaybackClusterPlaybackResponseParams {}
impl PNSObject for MTRMediaPlaybackClusterPlaybackResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRMediaPlaybackClusterPlaybackResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRMediaPlaybackClusterPlaybackResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterPlaybackResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaPlaybackClusterPlaybackResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRMediaPlaybackClusterPlaybackResponseParams" ,)
        }
    }
}
impl IMTRMediaPlaybackClusterPlaybackResponseParams
    for MTRMediaPlaybackClusterPlaybackResponseParams
{
}
pub trait IMTRMediaPlaybackClusterPlaybackResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn data(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn setData_(&self, data: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setData : data)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaPlaybackClusterSeekParams(pub id);
impl std::ops::Deref for MTRMediaPlaybackClusterSeekParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaPlaybackClusterSeekParams {}
impl MTRMediaPlaybackClusterSeekParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterSeekParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMediaPlaybackClusterSeekParams {}
impl INSObject for MTRMediaPlaybackClusterSeekParams {}
impl PNSObject for MTRMediaPlaybackClusterSeekParams {}
impl std::convert::TryFrom<NSObject> for MTRMediaPlaybackClusterSeekParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMediaPlaybackClusterSeekParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterSeekParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaPlaybackClusterSeekParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMediaPlaybackClusterSeekParams")
        }
    }
}
impl IMTRMediaPlaybackClusterSeekParams for MTRMediaPlaybackClusterSeekParams {}
pub trait IMTRMediaPlaybackClusterSeekParams: Sized + std::ops::Deref {
    unsafe fn position(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, position)
    }
    unsafe fn setPosition_(&self, position: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPosition : position)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaPlaybackClusterActivateAudioTrackParams(pub id);
impl std::ops::Deref for MTRMediaPlaybackClusterActivateAudioTrackParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaPlaybackClusterActivateAudioTrackParams {}
impl MTRMediaPlaybackClusterActivateAudioTrackParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterActivateAudioTrackParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRMediaPlaybackClusterActivateAudioTrackParams {}
impl INSObject for MTRMediaPlaybackClusterActivateAudioTrackParams {}
impl PNSObject for MTRMediaPlaybackClusterActivateAudioTrackParams {}
impl std::convert::TryFrom<NSObject> for MTRMediaPlaybackClusterActivateAudioTrackParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRMediaPlaybackClusterActivateAudioTrackParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterActivateAudioTrackParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaPlaybackClusterActivateAudioTrackParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRMediaPlaybackClusterActivateAudioTrackParams" ,)
        }
    }
}
impl IMTRMediaPlaybackClusterActivateAudioTrackParams
    for MTRMediaPlaybackClusterActivateAudioTrackParams
{
}
pub trait IMTRMediaPlaybackClusterActivateAudioTrackParams: Sized + std::ops::Deref {
    unsafe fn trackID(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, trackID)
    }
    unsafe fn setTrackID_(&self, trackID: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTrackID : trackID)
    }
    unsafe fn audioOutputIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, audioOutputIndex)
    }
    unsafe fn setAudioOutputIndex_(&self, audioOutputIndex: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAudioOutputIndex : audioOutputIndex)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaPlaybackClusterActivateTextTrackParams(pub id);
impl std::ops::Deref for MTRMediaPlaybackClusterActivateTextTrackParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaPlaybackClusterActivateTextTrackParams {}
impl MTRMediaPlaybackClusterActivateTextTrackParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterActivateTextTrackParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRMediaPlaybackClusterActivateTextTrackParams {}
impl INSObject for MTRMediaPlaybackClusterActivateTextTrackParams {}
impl PNSObject for MTRMediaPlaybackClusterActivateTextTrackParams {}
impl std::convert::TryFrom<NSObject> for MTRMediaPlaybackClusterActivateTextTrackParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRMediaPlaybackClusterActivateTextTrackParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterActivateTextTrackParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaPlaybackClusterActivateTextTrackParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRMediaPlaybackClusterActivateTextTrackParams" ,)
        }
    }
}
impl IMTRMediaPlaybackClusterActivateTextTrackParams
    for MTRMediaPlaybackClusterActivateTextTrackParams
{
}
pub trait IMTRMediaPlaybackClusterActivateTextTrackParams: Sized + std::ops::Deref {
    unsafe fn trackID(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, trackID)
    }
    unsafe fn setTrackID_(&self, trackID: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTrackID : trackID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaPlaybackClusterDeactivateTextTrackParams(pub id);
impl std::ops::Deref for MTRMediaPlaybackClusterDeactivateTextTrackParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaPlaybackClusterDeactivateTextTrackParams {}
impl MTRMediaPlaybackClusterDeactivateTextTrackParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterDeactivateTextTrackParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRMediaPlaybackClusterDeactivateTextTrackParams {}
impl INSObject for MTRMediaPlaybackClusterDeactivateTextTrackParams {}
impl PNSObject for MTRMediaPlaybackClusterDeactivateTextTrackParams {}
impl std::convert::TryFrom<NSObject> for MTRMediaPlaybackClusterDeactivateTextTrackParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRMediaPlaybackClusterDeactivateTextTrackParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaPlaybackClusterDeactivateTextTrackParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaPlaybackClusterDeactivateTextTrackParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRMediaPlaybackClusterDeactivateTextTrackParams" ,)
        }
    }
}
impl IMTRMediaPlaybackClusterDeactivateTextTrackParams
    for MTRMediaPlaybackClusterDeactivateTextTrackParams
{
}
pub trait IMTRMediaPlaybackClusterDeactivateTextTrackParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaInputClusterSelectInputParams(pub id);
impl std::ops::Deref for MTRMediaInputClusterSelectInputParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaInputClusterSelectInputParams {}
impl MTRMediaInputClusterSelectInputParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaInputClusterSelectInputParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMediaInputClusterSelectInputParams {}
impl INSObject for MTRMediaInputClusterSelectInputParams {}
impl PNSObject for MTRMediaInputClusterSelectInputParams {}
impl std::convert::TryFrom<NSObject> for MTRMediaInputClusterSelectInputParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMediaInputClusterSelectInputParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaInputClusterSelectInputParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaInputClusterSelectInputParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMediaInputClusterSelectInputParams")
        }
    }
}
impl IMTRMediaInputClusterSelectInputParams for MTRMediaInputClusterSelectInputParams {}
pub trait IMTRMediaInputClusterSelectInputParams: Sized + std::ops::Deref {
    unsafe fn index(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, index)
    }
    unsafe fn setIndex_(&self, index: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIndex : index)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaInputClusterShowInputStatusParams(pub id);
impl std::ops::Deref for MTRMediaInputClusterShowInputStatusParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaInputClusterShowInputStatusParams {}
impl MTRMediaInputClusterShowInputStatusParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaInputClusterShowInputStatusParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMediaInputClusterShowInputStatusParams {}
impl INSObject for MTRMediaInputClusterShowInputStatusParams {}
impl PNSObject for MTRMediaInputClusterShowInputStatusParams {}
impl std::convert::TryFrom<NSObject> for MTRMediaInputClusterShowInputStatusParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRMediaInputClusterShowInputStatusParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaInputClusterShowInputStatusParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaInputClusterShowInputStatusParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMediaInputClusterShowInputStatusParams")
        }
    }
}
impl IMTRMediaInputClusterShowInputStatusParams for MTRMediaInputClusterShowInputStatusParams {}
pub trait IMTRMediaInputClusterShowInputStatusParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaInputClusterHideInputStatusParams(pub id);
impl std::ops::Deref for MTRMediaInputClusterHideInputStatusParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaInputClusterHideInputStatusParams {}
impl MTRMediaInputClusterHideInputStatusParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaInputClusterHideInputStatusParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMediaInputClusterHideInputStatusParams {}
impl INSObject for MTRMediaInputClusterHideInputStatusParams {}
impl PNSObject for MTRMediaInputClusterHideInputStatusParams {}
impl std::convert::TryFrom<NSObject> for MTRMediaInputClusterHideInputStatusParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRMediaInputClusterHideInputStatusParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaInputClusterHideInputStatusParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaInputClusterHideInputStatusParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMediaInputClusterHideInputStatusParams")
        }
    }
}
impl IMTRMediaInputClusterHideInputStatusParams for MTRMediaInputClusterHideInputStatusParams {}
pub trait IMTRMediaInputClusterHideInputStatusParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMediaInputClusterRenameInputParams(pub id);
impl std::ops::Deref for MTRMediaInputClusterRenameInputParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMediaInputClusterRenameInputParams {}
impl MTRMediaInputClusterRenameInputParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMediaInputClusterRenameInputParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRMediaInputClusterRenameInputParams {}
impl INSObject for MTRMediaInputClusterRenameInputParams {}
impl PNSObject for MTRMediaInputClusterRenameInputParams {}
impl std::convert::TryFrom<NSObject> for MTRMediaInputClusterRenameInputParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMediaInputClusterRenameInputParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMediaInputClusterRenameInputParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRMediaInputClusterRenameInputParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMediaInputClusterRenameInputParams")
        }
    }
}
impl IMTRMediaInputClusterRenameInputParams for MTRMediaInputClusterRenameInputParams {}
pub trait IMTRMediaInputClusterRenameInputParams: Sized + std::ops::Deref {
    unsafe fn index(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, index)
    }
    unsafe fn setIndex_(&self, index: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIndex : index)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRLowPowerClusterSleepParams(pub id);
impl std::ops::Deref for MTRLowPowerClusterSleepParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRLowPowerClusterSleepParams {}
impl MTRLowPowerClusterSleepParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRLowPowerClusterSleepParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRLowPowerClusterSleepParams {}
impl INSObject for MTRLowPowerClusterSleepParams {}
impl PNSObject for MTRLowPowerClusterSleepParams {}
impl std::convert::TryFrom<NSObject> for MTRLowPowerClusterSleepParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRLowPowerClusterSleepParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRLowPowerClusterSleepParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRLowPowerClusterSleepParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRLowPowerClusterSleepParams")
        }
    }
}
impl IMTRLowPowerClusterSleepParams for MTRLowPowerClusterSleepParams {}
pub trait IMTRLowPowerClusterSleepParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRKeypadInputClusterSendKeyParams(pub id);
impl std::ops::Deref for MTRKeypadInputClusterSendKeyParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRKeypadInputClusterSendKeyParams {}
impl MTRKeypadInputClusterSendKeyParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRKeypadInputClusterSendKeyParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRKeypadInputClusterSendKeyParams {}
impl INSObject for MTRKeypadInputClusterSendKeyParams {}
impl PNSObject for MTRKeypadInputClusterSendKeyParams {}
impl std::convert::TryFrom<NSObject> for MTRKeypadInputClusterSendKeyParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRKeypadInputClusterSendKeyParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRKeypadInputClusterSendKeyParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRKeypadInputClusterSendKeyParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRKeypadInputClusterSendKeyParams")
        }
    }
}
impl IMTRKeypadInputClusterSendKeyParams for MTRKeypadInputClusterSendKeyParams {}
pub trait IMTRKeypadInputClusterSendKeyParams: Sized + std::ops::Deref {
    unsafe fn keyCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, keyCode)
    }
    unsafe fn setKeyCode_(&self, keyCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setKeyCode : keyCode)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRKeypadInputClusterSendKeyResponseParams(pub id);
impl std::ops::Deref for MTRKeypadInputClusterSendKeyResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRKeypadInputClusterSendKeyResponseParams {}
impl MTRKeypadInputClusterSendKeyResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRKeypadInputClusterSendKeyResponseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRKeypadInputClusterSendKeyResponseParams {}
impl INSObject for MTRKeypadInputClusterSendKeyResponseParams {}
impl PNSObject for MTRKeypadInputClusterSendKeyResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRKeypadInputClusterSendKeyResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRKeypadInputClusterSendKeyResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRKeypadInputClusterSendKeyResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRKeypadInputClusterSendKeyResponseParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRKeypadInputClusterSendKeyResponseParams")
        }
    }
}
impl IMTRKeypadInputClusterSendKeyResponseParams for MTRKeypadInputClusterSendKeyResponseParams {}
pub trait IMTRKeypadInputClusterSendKeyResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentLauncherClusterLaunchContentParams(pub id);
impl std::ops::Deref for MTRContentLauncherClusterLaunchContentParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentLauncherClusterLaunchContentParams {}
impl MTRContentLauncherClusterLaunchContentParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterLaunchContentParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRContentLauncherClusterLaunchContentParams {}
impl INSObject for MTRContentLauncherClusterLaunchContentParams {}
impl PNSObject for MTRContentLauncherClusterLaunchContentParams {}
impl std::convert::TryFrom<NSObject> for MTRContentLauncherClusterLaunchContentParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRContentLauncherClusterLaunchContentParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterLaunchContentParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentLauncherClusterLaunchContentParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRContentLauncherClusterLaunchContentParams" ,)
        }
    }
}
impl IMTRContentLauncherClusterLaunchContentParams
    for MTRContentLauncherClusterLaunchContentParams
{
}
pub trait IMTRContentLauncherClusterLaunchContentParams: Sized + std::ops::Deref {
    unsafe fn search(&self) -> MTRContentLauncherClusterContentSearchStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, search)
    }
    unsafe fn setSearch_(&self, search: MTRContentLauncherClusterContentSearchStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSearch : search)
    }
    unsafe fn autoPlay(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, autoPlay)
    }
    unsafe fn setAutoPlay_(&self, autoPlay: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAutoPlay : autoPlay)
    }
    unsafe fn data(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn setData_(&self, data: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setData : data)
    }
    unsafe fn playbackPreferences(&self) -> MTRContentLauncherClusterPlaybackPreferencesStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, playbackPreferences)
    }
    unsafe fn setPlaybackPreferences_(
        &self,
        playbackPreferences: MTRContentLauncherClusterPlaybackPreferencesStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPlaybackPreferences : playbackPreferences)
    }
    unsafe fn useCurrentContext(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, useCurrentContext)
    }
    unsafe fn setUseCurrentContext_(&self, useCurrentContext: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUseCurrentContext : useCurrentContext)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentLauncherClusterLaunchURLParams(pub id);
impl std::ops::Deref for MTRContentLauncherClusterLaunchURLParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentLauncherClusterLaunchURLParams {}
impl MTRContentLauncherClusterLaunchURLParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterLaunchURLParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRContentLauncherClusterLaunchURLParams {}
impl INSObject for MTRContentLauncherClusterLaunchURLParams {}
impl PNSObject for MTRContentLauncherClusterLaunchURLParams {}
impl std::convert::TryFrom<NSObject> for MTRContentLauncherClusterLaunchURLParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRContentLauncherClusterLaunchURLParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterLaunchURLParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentLauncherClusterLaunchURLParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRContentLauncherClusterLaunchURLParams")
        }
    }
}
impl IMTRContentLauncherClusterLaunchURLParams for MTRContentLauncherClusterLaunchURLParams {}
pub trait IMTRContentLauncherClusterLaunchURLParams: Sized + std::ops::Deref {
    unsafe fn contentURL(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, contentURL)
    }
    unsafe fn setContentURL_(&self, contentURL: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setContentURL : contentURL)
    }
    unsafe fn displayString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, displayString)
    }
    unsafe fn setDisplayString_(&self, displayString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDisplayString : displayString)
    }
    unsafe fn brandingInformation(&self) -> MTRContentLauncherClusterBrandingInformationStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, brandingInformation)
    }
    unsafe fn setBrandingInformation_(
        &self,
        brandingInformation: MTRContentLauncherClusterBrandingInformationStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBrandingInformation : brandingInformation)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentLauncherClusterLauncherResponseParams(pub id);
impl std::ops::Deref for MTRContentLauncherClusterLauncherResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentLauncherClusterLauncherResponseParams {}
impl MTRContentLauncherClusterLauncherResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterLauncherResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRContentLauncherClusterLauncherResponseParams {}
impl INSObject for MTRContentLauncherClusterLauncherResponseParams {}
impl PNSObject for MTRContentLauncherClusterLauncherResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRContentLauncherClusterLauncherResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRContentLauncherClusterLauncherResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterLauncherResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentLauncherClusterLauncherResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRContentLauncherClusterLauncherResponseParams" ,)
        }
    }
}
impl IMTRContentLauncherClusterLauncherResponseParams
    for MTRContentLauncherClusterLauncherResponseParams
{
}
pub trait IMTRContentLauncherClusterLauncherResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn data(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn setData_(&self, data: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setData : data)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentLauncherClusterLaunchResponseParams(pub id);
impl std::ops::Deref for MTRContentLauncherClusterLaunchResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentLauncherClusterLaunchResponseParams {}
impl MTRContentLauncherClusterLaunchResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterLaunchResponseParams").unwrap(), alloc) })
    }
}
impl IMTRContentLauncherClusterLauncherResponseParams
    for MTRContentLauncherClusterLaunchResponseParams
{
}
impl PNSCopying for MTRContentLauncherClusterLaunchResponseParams {}
impl From<MTRContentLauncherClusterLaunchResponseParams>
    for MTRContentLauncherClusterLauncherResponseParams
{
    fn from(
        child: MTRContentLauncherClusterLaunchResponseParams,
    ) -> MTRContentLauncherClusterLauncherResponseParams {
        MTRContentLauncherClusterLauncherResponseParams(child.0)
    }
}
impl std::convert::TryFrom<MTRContentLauncherClusterLauncherResponseParams>
    for MTRContentLauncherClusterLaunchResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRContentLauncherClusterLauncherResponseParams,
    ) -> Result<MTRContentLauncherClusterLaunchResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentLauncherClusterLaunchResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentLauncherClusterLaunchResponseParams(parent.0))
        } else {
            Err ("This MTRContentLauncherClusterLauncherResponseParams cannot be downcasted to MTRContentLauncherClusterLaunchResponseParams" ,)
        }
    }
}
impl INSObject for MTRContentLauncherClusterLaunchResponseParams {}
impl PNSObject for MTRContentLauncherClusterLaunchResponseParams {}
impl IMTRContentLauncherClusterLaunchResponseParams
    for MTRContentLauncherClusterLaunchResponseParams
{
}
pub trait IMTRContentLauncherClusterLaunchResponseParams: Sized + std::ops::Deref {
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn data(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn setData_(&self, data: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setData : data)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAudioOutputClusterSelectOutputParams(pub id);
impl std::ops::Deref for MTRAudioOutputClusterSelectOutputParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAudioOutputClusterSelectOutputParams {}
impl MTRAudioOutputClusterSelectOutputParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAudioOutputClusterSelectOutputParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRAudioOutputClusterSelectOutputParams {}
impl INSObject for MTRAudioOutputClusterSelectOutputParams {}
impl PNSObject for MTRAudioOutputClusterSelectOutputParams {}
impl std::convert::TryFrom<NSObject> for MTRAudioOutputClusterSelectOutputParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRAudioOutputClusterSelectOutputParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAudioOutputClusterSelectOutputParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRAudioOutputClusterSelectOutputParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRAudioOutputClusterSelectOutputParams")
        }
    }
}
impl IMTRAudioOutputClusterSelectOutputParams for MTRAudioOutputClusterSelectOutputParams {}
pub trait IMTRAudioOutputClusterSelectOutputParams: Sized + std::ops::Deref {
    unsafe fn index(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, index)
    }
    unsafe fn setIndex_(&self, index: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIndex : index)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAudioOutputClusterRenameOutputParams(pub id);
impl std::ops::Deref for MTRAudioOutputClusterRenameOutputParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAudioOutputClusterRenameOutputParams {}
impl MTRAudioOutputClusterRenameOutputParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAudioOutputClusterRenameOutputParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRAudioOutputClusterRenameOutputParams {}
impl INSObject for MTRAudioOutputClusterRenameOutputParams {}
impl PNSObject for MTRAudioOutputClusterRenameOutputParams {}
impl std::convert::TryFrom<NSObject> for MTRAudioOutputClusterRenameOutputParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRAudioOutputClusterRenameOutputParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAudioOutputClusterRenameOutputParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRAudioOutputClusterRenameOutputParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRAudioOutputClusterRenameOutputParams")
        }
    }
}
impl IMTRAudioOutputClusterRenameOutputParams for MTRAudioOutputClusterRenameOutputParams {}
pub trait IMTRAudioOutputClusterRenameOutputParams: Sized + std::ops::Deref {
    unsafe fn index(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, index)
    }
    unsafe fn setIndex_(&self, index: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIndex : index)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRApplicationLauncherClusterLaunchAppParams(pub id);
impl std::ops::Deref for MTRApplicationLauncherClusterLaunchAppParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRApplicationLauncherClusterLaunchAppParams {}
impl MTRApplicationLauncherClusterLaunchAppParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRApplicationLauncherClusterLaunchAppParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRApplicationLauncherClusterLaunchAppParams {}
impl INSObject for MTRApplicationLauncherClusterLaunchAppParams {}
impl PNSObject for MTRApplicationLauncherClusterLaunchAppParams {}
impl std::convert::TryFrom<NSObject> for MTRApplicationLauncherClusterLaunchAppParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRApplicationLauncherClusterLaunchAppParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRApplicationLauncherClusterLaunchAppParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRApplicationLauncherClusterLaunchAppParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRApplicationLauncherClusterLaunchAppParams" ,)
        }
    }
}
impl IMTRApplicationLauncherClusterLaunchAppParams
    for MTRApplicationLauncherClusterLaunchAppParams
{
}
pub trait IMTRApplicationLauncherClusterLaunchAppParams: Sized + std::ops::Deref {
    unsafe fn application(&self) -> MTRApplicationLauncherClusterApplicationStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, application)
    }
    unsafe fn setApplication_(&self, application: MTRApplicationLauncherClusterApplicationStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setApplication : application)
    }
    unsafe fn data(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn setData_(&self, data: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setData : data)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRApplicationLauncherClusterStopAppParams(pub id);
impl std::ops::Deref for MTRApplicationLauncherClusterStopAppParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRApplicationLauncherClusterStopAppParams {}
impl MTRApplicationLauncherClusterStopAppParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRApplicationLauncherClusterStopAppParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRApplicationLauncherClusterStopAppParams {}
impl INSObject for MTRApplicationLauncherClusterStopAppParams {}
impl PNSObject for MTRApplicationLauncherClusterStopAppParams {}
impl std::convert::TryFrom<NSObject> for MTRApplicationLauncherClusterStopAppParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRApplicationLauncherClusterStopAppParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRApplicationLauncherClusterStopAppParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRApplicationLauncherClusterStopAppParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRApplicationLauncherClusterStopAppParams")
        }
    }
}
impl IMTRApplicationLauncherClusterStopAppParams for MTRApplicationLauncherClusterStopAppParams {}
pub trait IMTRApplicationLauncherClusterStopAppParams: Sized + std::ops::Deref {
    unsafe fn application(&self) -> MTRApplicationLauncherClusterApplicationStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, application)
    }
    unsafe fn setApplication_(&self, application: MTRApplicationLauncherClusterApplicationStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setApplication : application)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRApplicationLauncherClusterHideAppParams(pub id);
impl std::ops::Deref for MTRApplicationLauncherClusterHideAppParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRApplicationLauncherClusterHideAppParams {}
impl MTRApplicationLauncherClusterHideAppParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRApplicationLauncherClusterHideAppParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRApplicationLauncherClusterHideAppParams {}
impl INSObject for MTRApplicationLauncherClusterHideAppParams {}
impl PNSObject for MTRApplicationLauncherClusterHideAppParams {}
impl std::convert::TryFrom<NSObject> for MTRApplicationLauncherClusterHideAppParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRApplicationLauncherClusterHideAppParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRApplicationLauncherClusterHideAppParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRApplicationLauncherClusterHideAppParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRApplicationLauncherClusterHideAppParams")
        }
    }
}
impl IMTRApplicationLauncherClusterHideAppParams for MTRApplicationLauncherClusterHideAppParams {}
pub trait IMTRApplicationLauncherClusterHideAppParams: Sized + std::ops::Deref {
    unsafe fn application(&self) -> MTRApplicationLauncherClusterApplicationStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, application)
    }
    unsafe fn setApplication_(&self, application: MTRApplicationLauncherClusterApplicationStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setApplication : application)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRApplicationLauncherClusterLauncherResponseParams(pub id);
impl std::ops::Deref for MTRApplicationLauncherClusterLauncherResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRApplicationLauncherClusterLauncherResponseParams {}
impl MTRApplicationLauncherClusterLauncherResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRApplicationLauncherClusterLauncherResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRApplicationLauncherClusterLauncherResponseParams {}
impl INSObject for MTRApplicationLauncherClusterLauncherResponseParams {}
impl PNSObject for MTRApplicationLauncherClusterLauncherResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRApplicationLauncherClusterLauncherResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRApplicationLauncherClusterLauncherResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRApplicationLauncherClusterLauncherResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRApplicationLauncherClusterLauncherResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRApplicationLauncherClusterLauncherResponseParams" ,)
        }
    }
}
impl IMTRApplicationLauncherClusterLauncherResponseParams
    for MTRApplicationLauncherClusterLauncherResponseParams
{
}
pub trait IMTRApplicationLauncherClusterLauncherResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn data(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn setData_(&self, data: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setData : data)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAccountLoginClusterGetSetupPINParams(pub id);
impl std::ops::Deref for MTRAccountLoginClusterGetSetupPINParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAccountLoginClusterGetSetupPINParams {}
impl MTRAccountLoginClusterGetSetupPINParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccountLoginClusterGetSetupPINParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRAccountLoginClusterGetSetupPINParams {}
impl INSObject for MTRAccountLoginClusterGetSetupPINParams {}
impl PNSObject for MTRAccountLoginClusterGetSetupPINParams {}
impl std::convert::TryFrom<NSObject> for MTRAccountLoginClusterGetSetupPINParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRAccountLoginClusterGetSetupPINParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAccountLoginClusterGetSetupPINParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRAccountLoginClusterGetSetupPINParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRAccountLoginClusterGetSetupPINParams")
        }
    }
}
impl IMTRAccountLoginClusterGetSetupPINParams for MTRAccountLoginClusterGetSetupPINParams {}
pub trait IMTRAccountLoginClusterGetSetupPINParams: Sized + std::ops::Deref {
    unsafe fn tempAccountIdentifier(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tempAccountIdentifier)
    }
    unsafe fn setTempAccountIdentifier_(&self, tempAccountIdentifier: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTempAccountIdentifier : tempAccountIdentifier)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAccountLoginClusterGetSetupPINResponseParams(pub id);
impl std::ops::Deref for MTRAccountLoginClusterGetSetupPINResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAccountLoginClusterGetSetupPINResponseParams {}
impl MTRAccountLoginClusterGetSetupPINResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccountLoginClusterGetSetupPINResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRAccountLoginClusterGetSetupPINResponseParams {}
impl INSObject for MTRAccountLoginClusterGetSetupPINResponseParams {}
impl PNSObject for MTRAccountLoginClusterGetSetupPINResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRAccountLoginClusterGetSetupPINResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRAccountLoginClusterGetSetupPINResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAccountLoginClusterGetSetupPINResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRAccountLoginClusterGetSetupPINResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRAccountLoginClusterGetSetupPINResponseParams" ,)
        }
    }
}
impl IMTRAccountLoginClusterGetSetupPINResponseParams
    for MTRAccountLoginClusterGetSetupPINResponseParams
{
}
pub trait IMTRAccountLoginClusterGetSetupPINResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn setupPIN(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, setupPIN)
    }
    unsafe fn setSetupPIN_(&self, setupPIN: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSetupPIN : setupPIN)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAccountLoginClusterLoginParams(pub id);
impl std::ops::Deref for MTRAccountLoginClusterLoginParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAccountLoginClusterLoginParams {}
impl MTRAccountLoginClusterLoginParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccountLoginClusterLoginParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRAccountLoginClusterLoginParams {}
impl INSObject for MTRAccountLoginClusterLoginParams {}
impl PNSObject for MTRAccountLoginClusterLoginParams {}
impl std::convert::TryFrom<NSObject> for MTRAccountLoginClusterLoginParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRAccountLoginClusterLoginParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAccountLoginClusterLoginParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRAccountLoginClusterLoginParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRAccountLoginClusterLoginParams")
        }
    }
}
impl IMTRAccountLoginClusterLoginParams for MTRAccountLoginClusterLoginParams {}
pub trait IMTRAccountLoginClusterLoginParams: Sized + std::ops::Deref {
    unsafe fn tempAccountIdentifier(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tempAccountIdentifier)
    }
    unsafe fn setTempAccountIdentifier_(&self, tempAccountIdentifier: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTempAccountIdentifier : tempAccountIdentifier)
    }
    unsafe fn setupPIN(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, setupPIN)
    }
    unsafe fn setSetupPIN_(&self, setupPIN: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSetupPIN : setupPIN)
    }
    unsafe fn node(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, node)
    }
    unsafe fn setNode_(&self, node: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNode : node)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAccountLoginClusterLogoutParams(pub id);
impl std::ops::Deref for MTRAccountLoginClusterLogoutParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAccountLoginClusterLogoutParams {}
impl MTRAccountLoginClusterLogoutParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccountLoginClusterLogoutParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRAccountLoginClusterLogoutParams {}
impl INSObject for MTRAccountLoginClusterLogoutParams {}
impl PNSObject for MTRAccountLoginClusterLogoutParams {}
impl std::convert::TryFrom<NSObject> for MTRAccountLoginClusterLogoutParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRAccountLoginClusterLogoutParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAccountLoginClusterLogoutParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRAccountLoginClusterLogoutParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRAccountLoginClusterLogoutParams")
        }
    }
}
impl IMTRAccountLoginClusterLogoutParams for MTRAccountLoginClusterLogoutParams {}
pub trait IMTRAccountLoginClusterLogoutParams: Sized + std::ops::Deref {
    unsafe fn node(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, node)
    }
    unsafe fn setNode_(&self, node: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNode : node)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentControlClusterUpdatePINParams(pub id);
impl std::ops::Deref for MTRContentControlClusterUpdatePINParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentControlClusterUpdatePINParams {}
impl MTRContentControlClusterUpdatePINParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentControlClusterUpdatePINParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRContentControlClusterUpdatePINParams {}
impl INSObject for MTRContentControlClusterUpdatePINParams {}
impl PNSObject for MTRContentControlClusterUpdatePINParams {}
impl std::convert::TryFrom<NSObject> for MTRContentControlClusterUpdatePINParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRContentControlClusterUpdatePINParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentControlClusterUpdatePINParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentControlClusterUpdatePINParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRContentControlClusterUpdatePINParams")
        }
    }
}
impl IMTRContentControlClusterUpdatePINParams for MTRContentControlClusterUpdatePINParams {}
pub trait IMTRContentControlClusterUpdatePINParams: Sized + std::ops::Deref {
    unsafe fn oldPIN(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, oldPIN)
    }
    unsafe fn setOldPIN_(&self, oldPIN: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOldPIN : oldPIN)
    }
    unsafe fn getNewPIN(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getNewPIN)
    }
    unsafe fn setNewPIN_(&self, newPIN: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNewPIN : newPIN)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentControlClusterResetPINParams(pub id);
impl std::ops::Deref for MTRContentControlClusterResetPINParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentControlClusterResetPINParams {}
impl MTRContentControlClusterResetPINParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentControlClusterResetPINParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRContentControlClusterResetPINParams {}
impl INSObject for MTRContentControlClusterResetPINParams {}
impl PNSObject for MTRContentControlClusterResetPINParams {}
impl std::convert::TryFrom<NSObject> for MTRContentControlClusterResetPINParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRContentControlClusterResetPINParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentControlClusterResetPINParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentControlClusterResetPINParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRContentControlClusterResetPINParams")
        }
    }
}
impl IMTRContentControlClusterResetPINParams for MTRContentControlClusterResetPINParams {}
pub trait IMTRContentControlClusterResetPINParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentControlClusterResetPINResponseParams(pub id);
impl std::ops::Deref for MTRContentControlClusterResetPINResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentControlClusterResetPINResponseParams {}
impl MTRContentControlClusterResetPINResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentControlClusterResetPINResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRContentControlClusterResetPINResponseParams {}
impl INSObject for MTRContentControlClusterResetPINResponseParams {}
impl PNSObject for MTRContentControlClusterResetPINResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRContentControlClusterResetPINResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRContentControlClusterResetPINResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentControlClusterResetPINResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentControlClusterResetPINResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRContentControlClusterResetPINResponseParams" ,)
        }
    }
}
impl IMTRContentControlClusterResetPINResponseParams
    for MTRContentControlClusterResetPINResponseParams
{
}
pub trait IMTRContentControlClusterResetPINResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn pinCode(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pinCode)
    }
    unsafe fn setPinCode_(&self, pinCode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPinCode : pinCode)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentControlClusterEnableParams(pub id);
impl std::ops::Deref for MTRContentControlClusterEnableParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentControlClusterEnableParams {}
impl MTRContentControlClusterEnableParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentControlClusterEnableParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRContentControlClusterEnableParams {}
impl INSObject for MTRContentControlClusterEnableParams {}
impl PNSObject for MTRContentControlClusterEnableParams {}
impl std::convert::TryFrom<NSObject> for MTRContentControlClusterEnableParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRContentControlClusterEnableParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentControlClusterEnableParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentControlClusterEnableParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRContentControlClusterEnableParams")
        }
    }
}
impl IMTRContentControlClusterEnableParams for MTRContentControlClusterEnableParams {}
pub trait IMTRContentControlClusterEnableParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentControlClusterDisableParams(pub id);
impl std::ops::Deref for MTRContentControlClusterDisableParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentControlClusterDisableParams {}
impl MTRContentControlClusterDisableParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentControlClusterDisableParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRContentControlClusterDisableParams {}
impl INSObject for MTRContentControlClusterDisableParams {}
impl PNSObject for MTRContentControlClusterDisableParams {}
impl std::convert::TryFrom<NSObject> for MTRContentControlClusterDisableParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRContentControlClusterDisableParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentControlClusterDisableParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentControlClusterDisableParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRContentControlClusterDisableParams")
        }
    }
}
impl IMTRContentControlClusterDisableParams for MTRContentControlClusterDisableParams {}
pub trait IMTRContentControlClusterDisableParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentControlClusterAddBonusTimeParams(pub id);
impl std::ops::Deref for MTRContentControlClusterAddBonusTimeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentControlClusterAddBonusTimeParams {}
impl MTRContentControlClusterAddBonusTimeParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentControlClusterAddBonusTimeParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRContentControlClusterAddBonusTimeParams {}
impl INSObject for MTRContentControlClusterAddBonusTimeParams {}
impl PNSObject for MTRContentControlClusterAddBonusTimeParams {}
impl std::convert::TryFrom<NSObject> for MTRContentControlClusterAddBonusTimeParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRContentControlClusterAddBonusTimeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentControlClusterAddBonusTimeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentControlClusterAddBonusTimeParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRContentControlClusterAddBonusTimeParams")
        }
    }
}
impl IMTRContentControlClusterAddBonusTimeParams for MTRContentControlClusterAddBonusTimeParams {}
pub trait IMTRContentControlClusterAddBonusTimeParams: Sized + std::ops::Deref {
    unsafe fn pinCode(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pinCode)
    }
    unsafe fn setPinCode_(&self, pinCode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPinCode : pinCode)
    }
    unsafe fn bonusTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, bonusTime)
    }
    unsafe fn setBonusTime_(&self, bonusTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBonusTime : bonusTime)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentControlClusterSetScreenDailyTimeParams(pub id);
impl std::ops::Deref for MTRContentControlClusterSetScreenDailyTimeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentControlClusterSetScreenDailyTimeParams {}
impl MTRContentControlClusterSetScreenDailyTimeParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentControlClusterSetScreenDailyTimeParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRContentControlClusterSetScreenDailyTimeParams {}
impl INSObject for MTRContentControlClusterSetScreenDailyTimeParams {}
impl PNSObject for MTRContentControlClusterSetScreenDailyTimeParams {}
impl std::convert::TryFrom<NSObject> for MTRContentControlClusterSetScreenDailyTimeParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRContentControlClusterSetScreenDailyTimeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentControlClusterSetScreenDailyTimeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentControlClusterSetScreenDailyTimeParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRContentControlClusterSetScreenDailyTimeParams" ,)
        }
    }
}
impl IMTRContentControlClusterSetScreenDailyTimeParams
    for MTRContentControlClusterSetScreenDailyTimeParams
{
}
pub trait IMTRContentControlClusterSetScreenDailyTimeParams: Sized + std::ops::Deref {
    unsafe fn screenTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, screenTime)
    }
    unsafe fn setScreenTime_(&self, screenTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setScreenTime : screenTime)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentControlClusterBlockUnratedContentParams(pub id);
impl std::ops::Deref for MTRContentControlClusterBlockUnratedContentParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentControlClusterBlockUnratedContentParams {}
impl MTRContentControlClusterBlockUnratedContentParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentControlClusterBlockUnratedContentParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRContentControlClusterBlockUnratedContentParams {}
impl INSObject for MTRContentControlClusterBlockUnratedContentParams {}
impl PNSObject for MTRContentControlClusterBlockUnratedContentParams {}
impl std::convert::TryFrom<NSObject> for MTRContentControlClusterBlockUnratedContentParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRContentControlClusterBlockUnratedContentParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentControlClusterBlockUnratedContentParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentControlClusterBlockUnratedContentParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRContentControlClusterBlockUnratedContentParams" ,)
        }
    }
}
impl IMTRContentControlClusterBlockUnratedContentParams
    for MTRContentControlClusterBlockUnratedContentParams
{
}
pub trait IMTRContentControlClusterBlockUnratedContentParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentControlClusterUnblockUnratedContentParams(pub id);
impl std::ops::Deref for MTRContentControlClusterUnblockUnratedContentParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentControlClusterUnblockUnratedContentParams {}
impl MTRContentControlClusterUnblockUnratedContentParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentControlClusterUnblockUnratedContentParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRContentControlClusterUnblockUnratedContentParams {}
impl INSObject for MTRContentControlClusterUnblockUnratedContentParams {}
impl PNSObject for MTRContentControlClusterUnblockUnratedContentParams {}
impl std::convert::TryFrom<NSObject> for MTRContentControlClusterUnblockUnratedContentParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRContentControlClusterUnblockUnratedContentParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentControlClusterUnblockUnratedContentParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentControlClusterUnblockUnratedContentParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRContentControlClusterUnblockUnratedContentParams" ,)
        }
    }
}
impl IMTRContentControlClusterUnblockUnratedContentParams
    for MTRContentControlClusterUnblockUnratedContentParams
{
}
pub trait IMTRContentControlClusterUnblockUnratedContentParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentControlClusterSetOnDemandRatingThresholdParams(pub id);
impl std::ops::Deref for MTRContentControlClusterSetOnDemandRatingThresholdParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentControlClusterSetOnDemandRatingThresholdParams {}
impl MTRContentControlClusterSetOnDemandRatingThresholdParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentControlClusterSetOnDemandRatingThresholdParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRContentControlClusterSetOnDemandRatingThresholdParams {}
impl INSObject for MTRContentControlClusterSetOnDemandRatingThresholdParams {}
impl PNSObject for MTRContentControlClusterSetOnDemandRatingThresholdParams {}
impl std::convert::TryFrom<NSObject> for MTRContentControlClusterSetOnDemandRatingThresholdParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRContentControlClusterSetOnDemandRatingThresholdParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentControlClusterSetOnDemandRatingThresholdParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentControlClusterSetOnDemandRatingThresholdParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRContentControlClusterSetOnDemandRatingThresholdParams" ,)
        }
    }
}
impl IMTRContentControlClusterSetOnDemandRatingThresholdParams
    for MTRContentControlClusterSetOnDemandRatingThresholdParams
{
}
pub trait IMTRContentControlClusterSetOnDemandRatingThresholdParams:
    Sized + std::ops::Deref
{
    unsafe fn rating(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rating)
    }
    unsafe fn setRating_(&self, rating: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRating : rating)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentControlClusterSetScheduledContentRatingThresholdParams(pub id);
impl std::ops::Deref for MTRContentControlClusterSetScheduledContentRatingThresholdParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentControlClusterSetScheduledContentRatingThresholdParams {}
impl MTRContentControlClusterSetScheduledContentRatingThresholdParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentControlClusterSetScheduledContentRatingThresholdParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRContentControlClusterSetScheduledContentRatingThresholdParams {}
impl INSObject for MTRContentControlClusterSetScheduledContentRatingThresholdParams {}
impl PNSObject for MTRContentControlClusterSetScheduledContentRatingThresholdParams {}
impl std::convert::TryFrom<NSObject>
    for MTRContentControlClusterSetScheduledContentRatingThresholdParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRContentControlClusterSetScheduledContentRatingThresholdParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentControlClusterSetScheduledContentRatingThresholdParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentControlClusterSetScheduledContentRatingThresholdParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRContentControlClusterSetScheduledContentRatingThresholdParams" ,)
        }
    }
}
impl IMTRContentControlClusterSetScheduledContentRatingThresholdParams
    for MTRContentControlClusterSetScheduledContentRatingThresholdParams
{
}
pub trait IMTRContentControlClusterSetScheduledContentRatingThresholdParams:
    Sized + std::ops::Deref
{
    unsafe fn rating(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rating)
    }
    unsafe fn setRating_(&self, rating: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRating : rating)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentAppObserverClusterContentAppMessageParams(pub id);
impl std::ops::Deref for MTRContentAppObserverClusterContentAppMessageParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentAppObserverClusterContentAppMessageParams {}
impl MTRContentAppObserverClusterContentAppMessageParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentAppObserverClusterContentAppMessageParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRContentAppObserverClusterContentAppMessageParams {}
impl INSObject for MTRContentAppObserverClusterContentAppMessageParams {}
impl PNSObject for MTRContentAppObserverClusterContentAppMessageParams {}
impl std::convert::TryFrom<NSObject> for MTRContentAppObserverClusterContentAppMessageParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRContentAppObserverClusterContentAppMessageParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentAppObserverClusterContentAppMessageParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentAppObserverClusterContentAppMessageParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRContentAppObserverClusterContentAppMessageParams" ,)
        }
    }
}
impl IMTRContentAppObserverClusterContentAppMessageParams
    for MTRContentAppObserverClusterContentAppMessageParams
{
}
pub trait IMTRContentAppObserverClusterContentAppMessageParams: Sized + std::ops::Deref {
    unsafe fn data(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn setData_(&self, data: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setData : data)
    }
    unsafe fn encodingHint(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, encodingHint)
    }
    unsafe fn setEncodingHint_(&self, encodingHint: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEncodingHint : encodingHint)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRContentAppObserverClusterContentAppMessageResponseParams(pub id);
impl std::ops::Deref for MTRContentAppObserverClusterContentAppMessageResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRContentAppObserverClusterContentAppMessageResponseParams {}
impl MTRContentAppObserverClusterContentAppMessageResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRContentAppObserverClusterContentAppMessageResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRContentAppObserverClusterContentAppMessageResponseParams {}
impl INSObject for MTRContentAppObserverClusterContentAppMessageResponseParams {}
impl PNSObject for MTRContentAppObserverClusterContentAppMessageResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRContentAppObserverClusterContentAppMessageResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRContentAppObserverClusterContentAppMessageResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRContentAppObserverClusterContentAppMessageResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRContentAppObserverClusterContentAppMessageResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRContentAppObserverClusterContentAppMessageResponseParams" ,)
        }
    }
}
impl IMTRContentAppObserverClusterContentAppMessageResponseParams
    for MTRContentAppObserverClusterContentAppMessageResponseParams
{
}
pub trait IMTRContentAppObserverClusterContentAppMessageResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn data(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn setData_(&self, data: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setData : data)
    }
    unsafe fn encodingHint(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, encodingHint)
    }
    unsafe fn setEncodingHint_(&self, encodingHint: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEncodingHint : encodingHint)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRZoneManagementClusterCreateTwoDCartesianZoneParams(pub id);
impl std::ops::Deref for MTRZoneManagementClusterCreateTwoDCartesianZoneParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRZoneManagementClusterCreateTwoDCartesianZoneParams {}
impl MTRZoneManagementClusterCreateTwoDCartesianZoneParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterCreateTwoDCartesianZoneParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRZoneManagementClusterCreateTwoDCartesianZoneParams {}
impl INSObject for MTRZoneManagementClusterCreateTwoDCartesianZoneParams {}
impl PNSObject for MTRZoneManagementClusterCreateTwoDCartesianZoneParams {}
impl std::convert::TryFrom<NSObject> for MTRZoneManagementClusterCreateTwoDCartesianZoneParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRZoneManagementClusterCreateTwoDCartesianZoneParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterCreateTwoDCartesianZoneParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRZoneManagementClusterCreateTwoDCartesianZoneParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRZoneManagementClusterCreateTwoDCartesianZoneParams" ,)
        }
    }
}
impl IMTRZoneManagementClusterCreateTwoDCartesianZoneParams
    for MTRZoneManagementClusterCreateTwoDCartesianZoneParams
{
}
pub trait IMTRZoneManagementClusterCreateTwoDCartesianZoneParams: Sized + std::ops::Deref {
    unsafe fn zone(&self) -> MTRZoneManagementClusterTwoDCartesianZoneStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, zone)
    }
    unsafe fn setZone_(&self, zone: MTRZoneManagementClusterTwoDCartesianZoneStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setZone : zone)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRZoneManagementClusterCreateTwoDCartesianZoneResponseParams(pub id);
impl std::ops::Deref for MTRZoneManagementClusterCreateTwoDCartesianZoneResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRZoneManagementClusterCreateTwoDCartesianZoneResponseParams {}
impl MTRZoneManagementClusterCreateTwoDCartesianZoneResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterCreateTwoDCartesianZoneResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRZoneManagementClusterCreateTwoDCartesianZoneResponseParams {}
impl INSObject for MTRZoneManagementClusterCreateTwoDCartesianZoneResponseParams {}
impl PNSObject for MTRZoneManagementClusterCreateTwoDCartesianZoneResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRZoneManagementClusterCreateTwoDCartesianZoneResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRZoneManagementClusterCreateTwoDCartesianZoneResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterCreateTwoDCartesianZoneResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRZoneManagementClusterCreateTwoDCartesianZoneResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRZoneManagementClusterCreateTwoDCartesianZoneResponseParams" ,)
        }
    }
}
impl IMTRZoneManagementClusterCreateTwoDCartesianZoneResponseParams
    for MTRZoneManagementClusterCreateTwoDCartesianZoneResponseParams
{
}
pub trait IMTRZoneManagementClusterCreateTwoDCartesianZoneResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn zoneID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, zoneID)
    }
    unsafe fn setZoneID_(&self, zoneID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setZoneID : zoneID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRZoneManagementClusterUpdateTwoDCartesianZoneParams(pub id);
impl std::ops::Deref for MTRZoneManagementClusterUpdateTwoDCartesianZoneParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRZoneManagementClusterUpdateTwoDCartesianZoneParams {}
impl MTRZoneManagementClusterUpdateTwoDCartesianZoneParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterUpdateTwoDCartesianZoneParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRZoneManagementClusterUpdateTwoDCartesianZoneParams {}
impl INSObject for MTRZoneManagementClusterUpdateTwoDCartesianZoneParams {}
impl PNSObject for MTRZoneManagementClusterUpdateTwoDCartesianZoneParams {}
impl std::convert::TryFrom<NSObject> for MTRZoneManagementClusterUpdateTwoDCartesianZoneParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRZoneManagementClusterUpdateTwoDCartesianZoneParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterUpdateTwoDCartesianZoneParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRZoneManagementClusterUpdateTwoDCartesianZoneParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRZoneManagementClusterUpdateTwoDCartesianZoneParams" ,)
        }
    }
}
impl IMTRZoneManagementClusterUpdateTwoDCartesianZoneParams
    for MTRZoneManagementClusterUpdateTwoDCartesianZoneParams
{
}
pub trait IMTRZoneManagementClusterUpdateTwoDCartesianZoneParams: Sized + std::ops::Deref {
    unsafe fn zoneID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, zoneID)
    }
    unsafe fn setZoneID_(&self, zoneID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setZoneID : zoneID)
    }
    unsafe fn zone(&self) -> MTRZoneManagementClusterTwoDCartesianZoneStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, zone)
    }
    unsafe fn setZone_(&self, zone: MTRZoneManagementClusterTwoDCartesianZoneStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setZone : zone)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRZoneManagementClusterRemoveZoneParams(pub id);
impl std::ops::Deref for MTRZoneManagementClusterRemoveZoneParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRZoneManagementClusterRemoveZoneParams {}
impl MTRZoneManagementClusterRemoveZoneParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterRemoveZoneParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRZoneManagementClusterRemoveZoneParams {}
impl INSObject for MTRZoneManagementClusterRemoveZoneParams {}
impl PNSObject for MTRZoneManagementClusterRemoveZoneParams {}
impl std::convert::TryFrom<NSObject> for MTRZoneManagementClusterRemoveZoneParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRZoneManagementClusterRemoveZoneParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterRemoveZoneParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRZoneManagementClusterRemoveZoneParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRZoneManagementClusterRemoveZoneParams")
        }
    }
}
impl IMTRZoneManagementClusterRemoveZoneParams for MTRZoneManagementClusterRemoveZoneParams {}
pub trait IMTRZoneManagementClusterRemoveZoneParams: Sized + std::ops::Deref {
    unsafe fn zoneID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, zoneID)
    }
    unsafe fn setZoneID_(&self, zoneID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setZoneID : zoneID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRZoneManagementClusterCreateOrUpdateTriggerParams(pub id);
impl std::ops::Deref for MTRZoneManagementClusterCreateOrUpdateTriggerParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRZoneManagementClusterCreateOrUpdateTriggerParams {}
impl MTRZoneManagementClusterCreateOrUpdateTriggerParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterCreateOrUpdateTriggerParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRZoneManagementClusterCreateOrUpdateTriggerParams {}
impl INSObject for MTRZoneManagementClusterCreateOrUpdateTriggerParams {}
impl PNSObject for MTRZoneManagementClusterCreateOrUpdateTriggerParams {}
impl std::convert::TryFrom<NSObject> for MTRZoneManagementClusterCreateOrUpdateTriggerParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRZoneManagementClusterCreateOrUpdateTriggerParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterCreateOrUpdateTriggerParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRZoneManagementClusterCreateOrUpdateTriggerParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRZoneManagementClusterCreateOrUpdateTriggerParams" ,)
        }
    }
}
impl IMTRZoneManagementClusterCreateOrUpdateTriggerParams
    for MTRZoneManagementClusterCreateOrUpdateTriggerParams
{
}
pub trait IMTRZoneManagementClusterCreateOrUpdateTriggerParams: Sized + std::ops::Deref {
    unsafe fn trigger(&self) -> MTRZoneManagementClusterZoneTriggerControlStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, trigger)
    }
    unsafe fn setTrigger_(&self, trigger: MTRZoneManagementClusterZoneTriggerControlStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTrigger : trigger)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRZoneManagementClusterRemoveTriggerParams(pub id);
impl std::ops::Deref for MTRZoneManagementClusterRemoveTriggerParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRZoneManagementClusterRemoveTriggerParams {}
impl MTRZoneManagementClusterRemoveTriggerParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterRemoveTriggerParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRZoneManagementClusterRemoveTriggerParams {}
impl INSObject for MTRZoneManagementClusterRemoveTriggerParams {}
impl PNSObject for MTRZoneManagementClusterRemoveTriggerParams {}
impl std::convert::TryFrom<NSObject> for MTRZoneManagementClusterRemoveTriggerParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRZoneManagementClusterRemoveTriggerParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRZoneManagementClusterRemoveTriggerParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRZoneManagementClusterRemoveTriggerParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRZoneManagementClusterRemoveTriggerParams")
        }
    }
}
impl IMTRZoneManagementClusterRemoveTriggerParams for MTRZoneManagementClusterRemoveTriggerParams {}
pub trait IMTRZoneManagementClusterRemoveTriggerParams: Sized + std::ops::Deref {
    unsafe fn zoneID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, zoneID)
    }
    unsafe fn setZoneID_(&self, zoneID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setZoneID : zoneID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterAudioStreamAllocateParams(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterAudioStreamAllocateParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVStreamManagementClusterAudioStreamAllocateParams {}
impl MTRCameraAVStreamManagementClusterAudioStreamAllocateParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterAudioStreamAllocateParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterAudioStreamAllocateParams {}
impl INSObject for MTRCameraAVStreamManagementClusterAudioStreamAllocateParams {}
impl PNSObject for MTRCameraAVStreamManagementClusterAudioStreamAllocateParams {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVStreamManagementClusterAudioStreamAllocateParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterAudioStreamAllocateParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterAudioStreamAllocateParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterAudioStreamAllocateParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterAudioStreamAllocateParams" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterAudioStreamAllocateParams
    for MTRCameraAVStreamManagementClusterAudioStreamAllocateParams
{
}
pub trait IMTRCameraAVStreamManagementClusterAudioStreamAllocateParams:
    Sized + std::ops::Deref
{
    unsafe fn streamUsage(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, streamUsage)
    }
    unsafe fn setStreamUsage_(&self, streamUsage: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStreamUsage : streamUsage)
    }
    unsafe fn audioCodec(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, audioCodec)
    }
    unsafe fn setAudioCodec_(&self, audioCodec: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAudioCodec : audioCodec)
    }
    unsafe fn channelCount(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, channelCount)
    }
    unsafe fn setChannelCount_(&self, channelCount: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChannelCount : channelCount)
    }
    unsafe fn sampleRate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sampleRate)
    }
    unsafe fn setSampleRate_(&self, sampleRate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSampleRate : sampleRate)
    }
    unsafe fn bitRate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, bitRate)
    }
    unsafe fn setBitRate_(&self, bitRate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBitRate : bitRate)
    }
    unsafe fn bitDepth(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, bitDepth)
    }
    unsafe fn setBitDepth_(&self, bitDepth: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBitDepth : bitDepth)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterAudioStreamAllocateResponseParams(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterAudioStreamAllocateResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVStreamManagementClusterAudioStreamAllocateResponseParams {}
impl MTRCameraAVStreamManagementClusterAudioStreamAllocateResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterAudioStreamAllocateResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterAudioStreamAllocateResponseParams {}
impl INSObject for MTRCameraAVStreamManagementClusterAudioStreamAllocateResponseParams {}
impl PNSObject for MTRCameraAVStreamManagementClusterAudioStreamAllocateResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVStreamManagementClusterAudioStreamAllocateResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterAudioStreamAllocateResponseParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterAudioStreamAllocateResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterAudioStreamAllocateResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterAudioStreamAllocateResponseParams" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterAudioStreamAllocateResponseParams
    for MTRCameraAVStreamManagementClusterAudioStreamAllocateResponseParams
{
}
pub trait IMTRCameraAVStreamManagementClusterAudioStreamAllocateResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn audioStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, audioStreamID)
    }
    unsafe fn setAudioStreamID_(&self, audioStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAudioStreamID : audioStreamID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterAudioStreamDeallocateParams(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterAudioStreamDeallocateParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVStreamManagementClusterAudioStreamDeallocateParams {}
impl MTRCameraAVStreamManagementClusterAudioStreamDeallocateParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterAudioStreamDeallocateParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterAudioStreamDeallocateParams {}
impl INSObject for MTRCameraAVStreamManagementClusterAudioStreamDeallocateParams {}
impl PNSObject for MTRCameraAVStreamManagementClusterAudioStreamDeallocateParams {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVStreamManagementClusterAudioStreamDeallocateParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterAudioStreamDeallocateParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterAudioStreamDeallocateParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterAudioStreamDeallocateParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterAudioStreamDeallocateParams" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterAudioStreamDeallocateParams
    for MTRCameraAVStreamManagementClusterAudioStreamDeallocateParams
{
}
pub trait IMTRCameraAVStreamManagementClusterAudioStreamDeallocateParams:
    Sized + std::ops::Deref
{
    unsafe fn audioStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, audioStreamID)
    }
    unsafe fn setAudioStreamID_(&self, audioStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAudioStreamID : audioStreamID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterVideoStreamAllocateParams(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterVideoStreamAllocateParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVStreamManagementClusterVideoStreamAllocateParams {}
impl MTRCameraAVStreamManagementClusterVideoStreamAllocateParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterVideoStreamAllocateParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterVideoStreamAllocateParams {}
impl INSObject for MTRCameraAVStreamManagementClusterVideoStreamAllocateParams {}
impl PNSObject for MTRCameraAVStreamManagementClusterVideoStreamAllocateParams {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVStreamManagementClusterVideoStreamAllocateParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterVideoStreamAllocateParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterVideoStreamAllocateParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterVideoStreamAllocateParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterVideoStreamAllocateParams" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterVideoStreamAllocateParams
    for MTRCameraAVStreamManagementClusterVideoStreamAllocateParams
{
}
pub trait IMTRCameraAVStreamManagementClusterVideoStreamAllocateParams:
    Sized + std::ops::Deref
{
    unsafe fn streamUsage(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, streamUsage)
    }
    unsafe fn setStreamUsage_(&self, streamUsage: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStreamUsage : streamUsage)
    }
    unsafe fn videoCodec(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, videoCodec)
    }
    unsafe fn setVideoCodec_(&self, videoCodec: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVideoCodec : videoCodec)
    }
    unsafe fn minFrameRate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minFrameRate)
    }
    unsafe fn setMinFrameRate_(&self, minFrameRate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinFrameRate : minFrameRate)
    }
    unsafe fn maxFrameRate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxFrameRate)
    }
    unsafe fn setMaxFrameRate_(&self, maxFrameRate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxFrameRate : maxFrameRate)
    }
    unsafe fn minResolution(&self) -> MTRCameraAVStreamManagementClusterVideoResolutionStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minResolution)
    }
    unsafe fn setMinResolution_(
        &self,
        minResolution: MTRCameraAVStreamManagementClusterVideoResolutionStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinResolution : minResolution)
    }
    unsafe fn maxResolution(&self) -> MTRCameraAVStreamManagementClusterVideoResolutionStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxResolution)
    }
    unsafe fn setMaxResolution_(
        &self,
        maxResolution: MTRCameraAVStreamManagementClusterVideoResolutionStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxResolution : maxResolution)
    }
    unsafe fn minBitRate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minBitRate)
    }
    unsafe fn setMinBitRate_(&self, minBitRate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinBitRate : minBitRate)
    }
    unsafe fn maxBitRate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxBitRate)
    }
    unsafe fn setMaxBitRate_(&self, maxBitRate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxBitRate : maxBitRate)
    }
    unsafe fn keyFrameInterval(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, keyFrameInterval)
    }
    unsafe fn setKeyFrameInterval_(&self, keyFrameInterval: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setKeyFrameInterval : keyFrameInterval)
    }
    unsafe fn watermarkEnabled(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, watermarkEnabled)
    }
    unsafe fn setWatermarkEnabled_(&self, watermarkEnabled: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWatermarkEnabled : watermarkEnabled)
    }
    unsafe fn osdEnabled(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, osdEnabled)
    }
    unsafe fn setOsdEnabled_(&self, osdEnabled: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOsdEnabled : osdEnabled)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterVideoStreamAllocateResponseParams(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterVideoStreamAllocateResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVStreamManagementClusterVideoStreamAllocateResponseParams {}
impl MTRCameraAVStreamManagementClusterVideoStreamAllocateResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterVideoStreamAllocateResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterVideoStreamAllocateResponseParams {}
impl INSObject for MTRCameraAVStreamManagementClusterVideoStreamAllocateResponseParams {}
impl PNSObject for MTRCameraAVStreamManagementClusterVideoStreamAllocateResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVStreamManagementClusterVideoStreamAllocateResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterVideoStreamAllocateResponseParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterVideoStreamAllocateResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterVideoStreamAllocateResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterVideoStreamAllocateResponseParams" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterVideoStreamAllocateResponseParams
    for MTRCameraAVStreamManagementClusterVideoStreamAllocateResponseParams
{
}
pub trait IMTRCameraAVStreamManagementClusterVideoStreamAllocateResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn videoStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, videoStreamID)
    }
    unsafe fn setVideoStreamID_(&self, videoStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVideoStreamID : videoStreamID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterVideoStreamModifyParams(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterVideoStreamModifyParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVStreamManagementClusterVideoStreamModifyParams {}
impl MTRCameraAVStreamManagementClusterVideoStreamModifyParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterVideoStreamModifyParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterVideoStreamModifyParams {}
impl INSObject for MTRCameraAVStreamManagementClusterVideoStreamModifyParams {}
impl PNSObject for MTRCameraAVStreamManagementClusterVideoStreamModifyParams {}
impl std::convert::TryFrom<NSObject> for MTRCameraAVStreamManagementClusterVideoStreamModifyParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterVideoStreamModifyParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterVideoStreamModifyParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterVideoStreamModifyParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterVideoStreamModifyParams" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterVideoStreamModifyParams
    for MTRCameraAVStreamManagementClusterVideoStreamModifyParams
{
}
pub trait IMTRCameraAVStreamManagementClusterVideoStreamModifyParams:
    Sized + std::ops::Deref
{
    unsafe fn videoStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, videoStreamID)
    }
    unsafe fn setVideoStreamID_(&self, videoStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVideoStreamID : videoStreamID)
    }
    unsafe fn watermarkEnabled(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, watermarkEnabled)
    }
    unsafe fn setWatermarkEnabled_(&self, watermarkEnabled: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWatermarkEnabled : watermarkEnabled)
    }
    unsafe fn osdEnabled(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, osdEnabled)
    }
    unsafe fn setOsdEnabled_(&self, osdEnabled: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOsdEnabled : osdEnabled)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterVideoStreamDeallocateParams(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterVideoStreamDeallocateParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVStreamManagementClusterVideoStreamDeallocateParams {}
impl MTRCameraAVStreamManagementClusterVideoStreamDeallocateParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterVideoStreamDeallocateParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterVideoStreamDeallocateParams {}
impl INSObject for MTRCameraAVStreamManagementClusterVideoStreamDeallocateParams {}
impl PNSObject for MTRCameraAVStreamManagementClusterVideoStreamDeallocateParams {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVStreamManagementClusterVideoStreamDeallocateParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterVideoStreamDeallocateParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterVideoStreamDeallocateParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterVideoStreamDeallocateParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterVideoStreamDeallocateParams" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterVideoStreamDeallocateParams
    for MTRCameraAVStreamManagementClusterVideoStreamDeallocateParams
{
}
pub trait IMTRCameraAVStreamManagementClusterVideoStreamDeallocateParams:
    Sized + std::ops::Deref
{
    unsafe fn videoStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, videoStreamID)
    }
    unsafe fn setVideoStreamID_(&self, videoStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVideoStreamID : videoStreamID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterSnapshotStreamAllocateParams(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterSnapshotStreamAllocateParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVStreamManagementClusterSnapshotStreamAllocateParams {}
impl MTRCameraAVStreamManagementClusterSnapshotStreamAllocateParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterSnapshotStreamAllocateParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterSnapshotStreamAllocateParams {}
impl INSObject for MTRCameraAVStreamManagementClusterSnapshotStreamAllocateParams {}
impl PNSObject for MTRCameraAVStreamManagementClusterSnapshotStreamAllocateParams {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVStreamManagementClusterSnapshotStreamAllocateParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterSnapshotStreamAllocateParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterSnapshotStreamAllocateParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterSnapshotStreamAllocateParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterSnapshotStreamAllocateParams" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterSnapshotStreamAllocateParams
    for MTRCameraAVStreamManagementClusterSnapshotStreamAllocateParams
{
}
pub trait IMTRCameraAVStreamManagementClusterSnapshotStreamAllocateParams:
    Sized + std::ops::Deref
{
    unsafe fn imageCodec(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, imageCodec)
    }
    unsafe fn setImageCodec_(&self, imageCodec: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setImageCodec : imageCodec)
    }
    unsafe fn maxFrameRate(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxFrameRate)
    }
    unsafe fn setMaxFrameRate_(&self, maxFrameRate: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxFrameRate : maxFrameRate)
    }
    unsafe fn minResolution(&self) -> MTRCameraAVStreamManagementClusterVideoResolutionStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minResolution)
    }
    unsafe fn setMinResolution_(
        &self,
        minResolution: MTRCameraAVStreamManagementClusterVideoResolutionStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinResolution : minResolution)
    }
    unsafe fn maxResolution(&self) -> MTRCameraAVStreamManagementClusterVideoResolutionStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxResolution)
    }
    unsafe fn setMaxResolution_(
        &self,
        maxResolution: MTRCameraAVStreamManagementClusterVideoResolutionStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxResolution : maxResolution)
    }
    unsafe fn quality(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, quality)
    }
    unsafe fn setQuality_(&self, quality: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setQuality : quality)
    }
    unsafe fn watermarkEnabled(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, watermarkEnabled)
    }
    unsafe fn setWatermarkEnabled_(&self, watermarkEnabled: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWatermarkEnabled : watermarkEnabled)
    }
    unsafe fn osdEnabled(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, osdEnabled)
    }
    unsafe fn setOsdEnabled_(&self, osdEnabled: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOsdEnabled : osdEnabled)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterSnapshotStreamAllocateResponseParams(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterSnapshotStreamAllocateResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message
    for MTRCameraAVStreamManagementClusterSnapshotStreamAllocateResponseParams
{
}
impl MTRCameraAVStreamManagementClusterSnapshotStreamAllocateResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterSnapshotStreamAllocateResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterSnapshotStreamAllocateResponseParams {}
impl INSObject for MTRCameraAVStreamManagementClusterSnapshotStreamAllocateResponseParams {}
impl PNSObject for MTRCameraAVStreamManagementClusterSnapshotStreamAllocateResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVStreamManagementClusterSnapshotStreamAllocateResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterSnapshotStreamAllocateResponseParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterSnapshotStreamAllocateResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterSnapshotStreamAllocateResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterSnapshotStreamAllocateResponseParams" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterSnapshotStreamAllocateResponseParams
    for MTRCameraAVStreamManagementClusterSnapshotStreamAllocateResponseParams
{
}
pub trait IMTRCameraAVStreamManagementClusterSnapshotStreamAllocateResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn snapshotStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, snapshotStreamID)
    }
    unsafe fn setSnapshotStreamID_(&self, snapshotStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSnapshotStreamID : snapshotStreamID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterSnapshotStreamModifyParams(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterSnapshotStreamModifyParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVStreamManagementClusterSnapshotStreamModifyParams {}
impl MTRCameraAVStreamManagementClusterSnapshotStreamModifyParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterSnapshotStreamModifyParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterSnapshotStreamModifyParams {}
impl INSObject for MTRCameraAVStreamManagementClusterSnapshotStreamModifyParams {}
impl PNSObject for MTRCameraAVStreamManagementClusterSnapshotStreamModifyParams {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVStreamManagementClusterSnapshotStreamModifyParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterSnapshotStreamModifyParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterSnapshotStreamModifyParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterSnapshotStreamModifyParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterSnapshotStreamModifyParams" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterSnapshotStreamModifyParams
    for MTRCameraAVStreamManagementClusterSnapshotStreamModifyParams
{
}
pub trait IMTRCameraAVStreamManagementClusterSnapshotStreamModifyParams:
    Sized + std::ops::Deref
{
    unsafe fn snapshotStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, snapshotStreamID)
    }
    unsafe fn setSnapshotStreamID_(&self, snapshotStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSnapshotStreamID : snapshotStreamID)
    }
    unsafe fn watermarkEnabled(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, watermarkEnabled)
    }
    unsafe fn setWatermarkEnabled_(&self, watermarkEnabled: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWatermarkEnabled : watermarkEnabled)
    }
    unsafe fn osdEnabled(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, osdEnabled)
    }
    unsafe fn setOsdEnabled_(&self, osdEnabled: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOsdEnabled : osdEnabled)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterSnapshotStreamDeallocateParams(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterSnapshotStreamDeallocateParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVStreamManagementClusterSnapshotStreamDeallocateParams {}
impl MTRCameraAVStreamManagementClusterSnapshotStreamDeallocateParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterSnapshotStreamDeallocateParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterSnapshotStreamDeallocateParams {}
impl INSObject for MTRCameraAVStreamManagementClusterSnapshotStreamDeallocateParams {}
impl PNSObject for MTRCameraAVStreamManagementClusterSnapshotStreamDeallocateParams {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVStreamManagementClusterSnapshotStreamDeallocateParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterSnapshotStreamDeallocateParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterSnapshotStreamDeallocateParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterSnapshotStreamDeallocateParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterSnapshotStreamDeallocateParams" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterSnapshotStreamDeallocateParams
    for MTRCameraAVStreamManagementClusterSnapshotStreamDeallocateParams
{
}
pub trait IMTRCameraAVStreamManagementClusterSnapshotStreamDeallocateParams:
    Sized + std::ops::Deref
{
    unsafe fn snapshotStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, snapshotStreamID)
    }
    unsafe fn setSnapshotStreamID_(&self, snapshotStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSnapshotStreamID : snapshotStreamID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterSetStreamPrioritiesParams(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterSetStreamPrioritiesParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVStreamManagementClusterSetStreamPrioritiesParams {}
impl MTRCameraAVStreamManagementClusterSetStreamPrioritiesParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterSetStreamPrioritiesParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterSetStreamPrioritiesParams {}
impl INSObject for MTRCameraAVStreamManagementClusterSetStreamPrioritiesParams {}
impl PNSObject for MTRCameraAVStreamManagementClusterSetStreamPrioritiesParams {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVStreamManagementClusterSetStreamPrioritiesParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterSetStreamPrioritiesParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterSetStreamPrioritiesParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterSetStreamPrioritiesParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterSetStreamPrioritiesParams" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterSetStreamPrioritiesParams
    for MTRCameraAVStreamManagementClusterSetStreamPrioritiesParams
{
}
pub trait IMTRCameraAVStreamManagementClusterSetStreamPrioritiesParams:
    Sized + std::ops::Deref
{
    unsafe fn streamPriorities(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, streamPriorities)
    }
    unsafe fn setStreamPriorities_(&self, streamPriorities: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStreamPriorities : streamPriorities)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterCaptureSnapshotParams(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterCaptureSnapshotParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVStreamManagementClusterCaptureSnapshotParams {}
impl MTRCameraAVStreamManagementClusterCaptureSnapshotParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterCaptureSnapshotParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterCaptureSnapshotParams {}
impl INSObject for MTRCameraAVStreamManagementClusterCaptureSnapshotParams {}
impl PNSObject for MTRCameraAVStreamManagementClusterCaptureSnapshotParams {}
impl std::convert::TryFrom<NSObject> for MTRCameraAVStreamManagementClusterCaptureSnapshotParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterCaptureSnapshotParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterCaptureSnapshotParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterCaptureSnapshotParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterCaptureSnapshotParams" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterCaptureSnapshotParams
    for MTRCameraAVStreamManagementClusterCaptureSnapshotParams
{
}
pub trait IMTRCameraAVStreamManagementClusterCaptureSnapshotParams:
    Sized + std::ops::Deref
{
    unsafe fn snapshotStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, snapshotStreamID)
    }
    unsafe fn setSnapshotStreamID_(&self, snapshotStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSnapshotStreamID : snapshotStreamID)
    }
    unsafe fn requestedResolution(&self) -> MTRCameraAVStreamManagementClusterVideoResolutionStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requestedResolution)
    }
    unsafe fn setRequestedResolution_(
        &self,
        requestedResolution: MTRCameraAVStreamManagementClusterVideoResolutionStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRequestedResolution : requestedResolution)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVStreamManagementClusterCaptureSnapshotResponseParams(pub id);
impl std::ops::Deref for MTRCameraAVStreamManagementClusterCaptureSnapshotResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVStreamManagementClusterCaptureSnapshotResponseParams {}
impl MTRCameraAVStreamManagementClusterCaptureSnapshotResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterCaptureSnapshotResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVStreamManagementClusterCaptureSnapshotResponseParams {}
impl INSObject for MTRCameraAVStreamManagementClusterCaptureSnapshotResponseParams {}
impl PNSObject for MTRCameraAVStreamManagementClusterCaptureSnapshotResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVStreamManagementClusterCaptureSnapshotResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVStreamManagementClusterCaptureSnapshotResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVStreamManagementClusterCaptureSnapshotResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVStreamManagementClusterCaptureSnapshotResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVStreamManagementClusterCaptureSnapshotResponseParams" ,)
        }
    }
}
impl IMTRCameraAVStreamManagementClusterCaptureSnapshotResponseParams
    for MTRCameraAVStreamManagementClusterCaptureSnapshotResponseParams
{
}
pub trait IMTRCameraAVStreamManagementClusterCaptureSnapshotResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn data(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn setData_(&self, data: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setData : data)
    }
    unsafe fn imageCodec(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, imageCodec)
    }
    unsafe fn setImageCodec_(&self, imageCodec: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setImageCodec : imageCodec)
    }
    unsafe fn resolution(&self) -> MTRCameraAVStreamManagementClusterVideoResolutionStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resolution)
    }
    unsafe fn setResolution_(
        &self,
        resolution: MTRCameraAVStreamManagementClusterVideoResolutionStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setResolution : resolution)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVSettingsUserLevelManagementClusterMPTZSetPositionParams(pub id);
impl std::ops::Deref for MTRCameraAVSettingsUserLevelManagementClusterMPTZSetPositionParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVSettingsUserLevelManagementClusterMPTZSetPositionParams {}
impl MTRCameraAVSettingsUserLevelManagementClusterMPTZSetPositionParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVSettingsUserLevelManagementClusterMPTZSetPositionParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVSettingsUserLevelManagementClusterMPTZSetPositionParams {}
impl INSObject for MTRCameraAVSettingsUserLevelManagementClusterMPTZSetPositionParams {}
impl PNSObject for MTRCameraAVSettingsUserLevelManagementClusterMPTZSetPositionParams {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVSettingsUserLevelManagementClusterMPTZSetPositionParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVSettingsUserLevelManagementClusterMPTZSetPositionParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVSettingsUserLevelManagementClusterMPTZSetPositionParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVSettingsUserLevelManagementClusterMPTZSetPositionParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVSettingsUserLevelManagementClusterMPTZSetPositionParams" ,)
        }
    }
}
impl IMTRCameraAVSettingsUserLevelManagementClusterMPTZSetPositionParams
    for MTRCameraAVSettingsUserLevelManagementClusterMPTZSetPositionParams
{
}
pub trait IMTRCameraAVSettingsUserLevelManagementClusterMPTZSetPositionParams:
    Sized + std::ops::Deref
{
    unsafe fn pan(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pan)
    }
    unsafe fn setPan_(&self, pan: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPan : pan)
    }
    unsafe fn tilt(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tilt)
    }
    unsafe fn setTilt_(&self, tilt: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTilt : tilt)
    }
    unsafe fn zoom(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, zoom)
    }
    unsafe fn setZoom_(&self, zoom: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setZoom : zoom)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVSettingsUserLevelManagementClusterMPTZRelativeMoveParams(pub id);
impl std::ops::Deref for MTRCameraAVSettingsUserLevelManagementClusterMPTZRelativeMoveParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVSettingsUserLevelManagementClusterMPTZRelativeMoveParams {}
impl MTRCameraAVSettingsUserLevelManagementClusterMPTZRelativeMoveParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVSettingsUserLevelManagementClusterMPTZRelativeMoveParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVSettingsUserLevelManagementClusterMPTZRelativeMoveParams {}
impl INSObject for MTRCameraAVSettingsUserLevelManagementClusterMPTZRelativeMoveParams {}
impl PNSObject for MTRCameraAVSettingsUserLevelManagementClusterMPTZRelativeMoveParams {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVSettingsUserLevelManagementClusterMPTZRelativeMoveParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVSettingsUserLevelManagementClusterMPTZRelativeMoveParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVSettingsUserLevelManagementClusterMPTZRelativeMoveParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVSettingsUserLevelManagementClusterMPTZRelativeMoveParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVSettingsUserLevelManagementClusterMPTZRelativeMoveParams" ,)
        }
    }
}
impl IMTRCameraAVSettingsUserLevelManagementClusterMPTZRelativeMoveParams
    for MTRCameraAVSettingsUserLevelManagementClusterMPTZRelativeMoveParams
{
}
pub trait IMTRCameraAVSettingsUserLevelManagementClusterMPTZRelativeMoveParams:
    Sized + std::ops::Deref
{
    unsafe fn panDelta(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, panDelta)
    }
    unsafe fn setPanDelta_(&self, panDelta: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPanDelta : panDelta)
    }
    unsafe fn tiltDelta(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tiltDelta)
    }
    unsafe fn setTiltDelta_(&self, tiltDelta: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTiltDelta : tiltDelta)
    }
    unsafe fn zoomDelta(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, zoomDelta)
    }
    unsafe fn setZoomDelta_(&self, zoomDelta: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setZoomDelta : zoomDelta)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVSettingsUserLevelManagementClusterMPTZMoveToPresetParams(pub id);
impl std::ops::Deref for MTRCameraAVSettingsUserLevelManagementClusterMPTZMoveToPresetParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVSettingsUserLevelManagementClusterMPTZMoveToPresetParams {}
impl MTRCameraAVSettingsUserLevelManagementClusterMPTZMoveToPresetParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVSettingsUserLevelManagementClusterMPTZMoveToPresetParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVSettingsUserLevelManagementClusterMPTZMoveToPresetParams {}
impl INSObject for MTRCameraAVSettingsUserLevelManagementClusterMPTZMoveToPresetParams {}
impl PNSObject for MTRCameraAVSettingsUserLevelManagementClusterMPTZMoveToPresetParams {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVSettingsUserLevelManagementClusterMPTZMoveToPresetParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVSettingsUserLevelManagementClusterMPTZMoveToPresetParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVSettingsUserLevelManagementClusterMPTZMoveToPresetParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVSettingsUserLevelManagementClusterMPTZMoveToPresetParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVSettingsUserLevelManagementClusterMPTZMoveToPresetParams" ,)
        }
    }
}
impl IMTRCameraAVSettingsUserLevelManagementClusterMPTZMoveToPresetParams
    for MTRCameraAVSettingsUserLevelManagementClusterMPTZMoveToPresetParams
{
}
pub trait IMTRCameraAVSettingsUserLevelManagementClusterMPTZMoveToPresetParams:
    Sized + std::ops::Deref
{
    unsafe fn presetID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, presetID)
    }
    unsafe fn setPresetID_(&self, presetID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPresetID : presetID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVSettingsUserLevelManagementClusterMPTZSavePresetParams(pub id);
impl std::ops::Deref for MTRCameraAVSettingsUserLevelManagementClusterMPTZSavePresetParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVSettingsUserLevelManagementClusterMPTZSavePresetParams {}
impl MTRCameraAVSettingsUserLevelManagementClusterMPTZSavePresetParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVSettingsUserLevelManagementClusterMPTZSavePresetParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVSettingsUserLevelManagementClusterMPTZSavePresetParams {}
impl INSObject for MTRCameraAVSettingsUserLevelManagementClusterMPTZSavePresetParams {}
impl PNSObject for MTRCameraAVSettingsUserLevelManagementClusterMPTZSavePresetParams {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVSettingsUserLevelManagementClusterMPTZSavePresetParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVSettingsUserLevelManagementClusterMPTZSavePresetParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVSettingsUserLevelManagementClusterMPTZSavePresetParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVSettingsUserLevelManagementClusterMPTZSavePresetParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVSettingsUserLevelManagementClusterMPTZSavePresetParams" ,)
        }
    }
}
impl IMTRCameraAVSettingsUserLevelManagementClusterMPTZSavePresetParams
    for MTRCameraAVSettingsUserLevelManagementClusterMPTZSavePresetParams
{
}
pub trait IMTRCameraAVSettingsUserLevelManagementClusterMPTZSavePresetParams:
    Sized + std::ops::Deref
{
    unsafe fn presetID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, presetID)
    }
    unsafe fn setPresetID_(&self, presetID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPresetID : presetID)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn setName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setName : name)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVSettingsUserLevelManagementClusterMPTZRemovePresetParams(pub id);
impl std::ops::Deref for MTRCameraAVSettingsUserLevelManagementClusterMPTZRemovePresetParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVSettingsUserLevelManagementClusterMPTZRemovePresetParams {}
impl MTRCameraAVSettingsUserLevelManagementClusterMPTZRemovePresetParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVSettingsUserLevelManagementClusterMPTZRemovePresetParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVSettingsUserLevelManagementClusterMPTZRemovePresetParams {}
impl INSObject for MTRCameraAVSettingsUserLevelManagementClusterMPTZRemovePresetParams {}
impl PNSObject for MTRCameraAVSettingsUserLevelManagementClusterMPTZRemovePresetParams {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVSettingsUserLevelManagementClusterMPTZRemovePresetParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVSettingsUserLevelManagementClusterMPTZRemovePresetParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVSettingsUserLevelManagementClusterMPTZRemovePresetParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVSettingsUserLevelManagementClusterMPTZRemovePresetParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVSettingsUserLevelManagementClusterMPTZRemovePresetParams" ,)
        }
    }
}
impl IMTRCameraAVSettingsUserLevelManagementClusterMPTZRemovePresetParams
    for MTRCameraAVSettingsUserLevelManagementClusterMPTZRemovePresetParams
{
}
pub trait IMTRCameraAVSettingsUserLevelManagementClusterMPTZRemovePresetParams:
    Sized + std::ops::Deref
{
    unsafe fn presetID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, presetID)
    }
    unsafe fn setPresetID_(&self, presetID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPresetID : presetID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVSettingsUserLevelManagementClusterDPTZSetViewportParams(pub id);
impl std::ops::Deref for MTRCameraAVSettingsUserLevelManagementClusterDPTZSetViewportParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVSettingsUserLevelManagementClusterDPTZSetViewportParams {}
impl MTRCameraAVSettingsUserLevelManagementClusterDPTZSetViewportParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVSettingsUserLevelManagementClusterDPTZSetViewportParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVSettingsUserLevelManagementClusterDPTZSetViewportParams {}
impl INSObject for MTRCameraAVSettingsUserLevelManagementClusterDPTZSetViewportParams {}
impl PNSObject for MTRCameraAVSettingsUserLevelManagementClusterDPTZSetViewportParams {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVSettingsUserLevelManagementClusterDPTZSetViewportParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVSettingsUserLevelManagementClusterDPTZSetViewportParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVSettingsUserLevelManagementClusterDPTZSetViewportParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVSettingsUserLevelManagementClusterDPTZSetViewportParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVSettingsUserLevelManagementClusterDPTZSetViewportParams" ,)
        }
    }
}
impl IMTRCameraAVSettingsUserLevelManagementClusterDPTZSetViewportParams
    for MTRCameraAVSettingsUserLevelManagementClusterDPTZSetViewportParams
{
}
pub trait IMTRCameraAVSettingsUserLevelManagementClusterDPTZSetViewportParams:
    Sized + std::ops::Deref
{
    unsafe fn videoStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, videoStreamID)
    }
    unsafe fn setVideoStreamID_(&self, videoStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVideoStreamID : videoStreamID)
    }
    unsafe fn viewport(&self) -> MTRDataTypeViewportStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, viewport)
    }
    unsafe fn setViewport_(&self, viewport: MTRDataTypeViewportStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setViewport : viewport)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCameraAVSettingsUserLevelManagementClusterDPTZRelativeMoveParams(pub id);
impl std::ops::Deref for MTRCameraAVSettingsUserLevelManagementClusterDPTZRelativeMoveParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCameraAVSettingsUserLevelManagementClusterDPTZRelativeMoveParams {}
impl MTRCameraAVSettingsUserLevelManagementClusterDPTZRelativeMoveParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCameraAVSettingsUserLevelManagementClusterDPTZRelativeMoveParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCameraAVSettingsUserLevelManagementClusterDPTZRelativeMoveParams {}
impl INSObject for MTRCameraAVSettingsUserLevelManagementClusterDPTZRelativeMoveParams {}
impl PNSObject for MTRCameraAVSettingsUserLevelManagementClusterDPTZRelativeMoveParams {}
impl std::convert::TryFrom<NSObject>
    for MTRCameraAVSettingsUserLevelManagementClusterDPTZRelativeMoveParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCameraAVSettingsUserLevelManagementClusterDPTZRelativeMoveParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCameraAVSettingsUserLevelManagementClusterDPTZRelativeMoveParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCameraAVSettingsUserLevelManagementClusterDPTZRelativeMoveParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCameraAVSettingsUserLevelManagementClusterDPTZRelativeMoveParams" ,)
        }
    }
}
impl IMTRCameraAVSettingsUserLevelManagementClusterDPTZRelativeMoveParams
    for MTRCameraAVSettingsUserLevelManagementClusterDPTZRelativeMoveParams
{
}
pub trait IMTRCameraAVSettingsUserLevelManagementClusterDPTZRelativeMoveParams:
    Sized + std::ops::Deref
{
    unsafe fn videoStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, videoStreamID)
    }
    unsafe fn setVideoStreamID_(&self, videoStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVideoStreamID : videoStreamID)
    }
    unsafe fn deltaX(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deltaX)
    }
    unsafe fn setDeltaX_(&self, deltaX: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDeltaX : deltaX)
    }
    unsafe fn deltaY(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deltaY)
    }
    unsafe fn setDeltaY_(&self, deltaY: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDeltaY : deltaY)
    }
    unsafe fn zoomDelta(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, zoomDelta)
    }
    unsafe fn setZoomDelta_(&self, zoomDelta: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setZoomDelta : zoomDelta)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWebRTCTransportProviderClusterSolicitOfferParams(pub id);
impl std::ops::Deref for MTRWebRTCTransportProviderClusterSolicitOfferParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWebRTCTransportProviderClusterSolicitOfferParams {}
impl MTRWebRTCTransportProviderClusterSolicitOfferParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWebRTCTransportProviderClusterSolicitOfferParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWebRTCTransportProviderClusterSolicitOfferParams {}
impl INSObject for MTRWebRTCTransportProviderClusterSolicitOfferParams {}
impl PNSObject for MTRWebRTCTransportProviderClusterSolicitOfferParams {}
impl std::convert::TryFrom<NSObject> for MTRWebRTCTransportProviderClusterSolicitOfferParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWebRTCTransportProviderClusterSolicitOfferParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWebRTCTransportProviderClusterSolicitOfferParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWebRTCTransportProviderClusterSolicitOfferParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWebRTCTransportProviderClusterSolicitOfferParams" ,)
        }
    }
}
impl IMTRWebRTCTransportProviderClusterSolicitOfferParams
    for MTRWebRTCTransportProviderClusterSolicitOfferParams
{
}
pub trait IMTRWebRTCTransportProviderClusterSolicitOfferParams: Sized + std::ops::Deref {
    unsafe fn streamUsage(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, streamUsage)
    }
    unsafe fn setStreamUsage_(&self, streamUsage: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStreamUsage : streamUsage)
    }
    unsafe fn originatingEndpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, originatingEndpointID)
    }
    unsafe fn setOriginatingEndpointID_(&self, originatingEndpointID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOriginatingEndpointID : originatingEndpointID)
    }
    unsafe fn videoStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, videoStreamID)
    }
    unsafe fn setVideoStreamID_(&self, videoStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVideoStreamID : videoStreamID)
    }
    unsafe fn audioStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, audioStreamID)
    }
    unsafe fn setAudioStreamID_(&self, audioStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAudioStreamID : audioStreamID)
    }
    unsafe fn iceServers(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, iceServers)
    }
    unsafe fn setIceServers_(&self, iceServers: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIceServers : iceServers)
    }
    unsafe fn iceTransportPolicy(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, iceTransportPolicy)
    }
    unsafe fn setIceTransportPolicy_(&self, iceTransportPolicy: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIceTransportPolicy : iceTransportPolicy)
    }
    unsafe fn metadataEnabled(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, metadataEnabled)
    }
    unsafe fn setMetadataEnabled_(&self, metadataEnabled: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMetadataEnabled : metadataEnabled)
    }
    unsafe fn sFrameConfig(&self) -> MTRWebRTCTransportProviderClusterSFrameStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sFrameConfig)
    }
    unsafe fn setSFrameConfig_(&self, sFrameConfig: MTRWebRTCTransportProviderClusterSFrameStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSFrameConfig : sFrameConfig)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWebRTCTransportProviderClusterSolicitOfferResponseParams(pub id);
impl std::ops::Deref for MTRWebRTCTransportProviderClusterSolicitOfferResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWebRTCTransportProviderClusterSolicitOfferResponseParams {}
impl MTRWebRTCTransportProviderClusterSolicitOfferResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWebRTCTransportProviderClusterSolicitOfferResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWebRTCTransportProviderClusterSolicitOfferResponseParams {}
impl INSObject for MTRWebRTCTransportProviderClusterSolicitOfferResponseParams {}
impl PNSObject for MTRWebRTCTransportProviderClusterSolicitOfferResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRWebRTCTransportProviderClusterSolicitOfferResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWebRTCTransportProviderClusterSolicitOfferResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWebRTCTransportProviderClusterSolicitOfferResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWebRTCTransportProviderClusterSolicitOfferResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWebRTCTransportProviderClusterSolicitOfferResponseParams" ,)
        }
    }
}
impl IMTRWebRTCTransportProviderClusterSolicitOfferResponseParams
    for MTRWebRTCTransportProviderClusterSolicitOfferResponseParams
{
}
pub trait IMTRWebRTCTransportProviderClusterSolicitOfferResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn webRTCSessionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, webRTCSessionID)
    }
    unsafe fn setWebRTCSessionID_(&self, webRTCSessionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWebRTCSessionID : webRTCSessionID)
    }
    unsafe fn deferredOffer(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deferredOffer)
    }
    unsafe fn setDeferredOffer_(&self, deferredOffer: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDeferredOffer : deferredOffer)
    }
    unsafe fn videoStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, videoStreamID)
    }
    unsafe fn setVideoStreamID_(&self, videoStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVideoStreamID : videoStreamID)
    }
    unsafe fn audioStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, audioStreamID)
    }
    unsafe fn setAudioStreamID_(&self, audioStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAudioStreamID : audioStreamID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWebRTCTransportProviderClusterProvideOfferParams(pub id);
impl std::ops::Deref for MTRWebRTCTransportProviderClusterProvideOfferParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWebRTCTransportProviderClusterProvideOfferParams {}
impl MTRWebRTCTransportProviderClusterProvideOfferParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWebRTCTransportProviderClusterProvideOfferParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWebRTCTransportProviderClusterProvideOfferParams {}
impl INSObject for MTRWebRTCTransportProviderClusterProvideOfferParams {}
impl PNSObject for MTRWebRTCTransportProviderClusterProvideOfferParams {}
impl std::convert::TryFrom<NSObject> for MTRWebRTCTransportProviderClusterProvideOfferParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWebRTCTransportProviderClusterProvideOfferParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWebRTCTransportProviderClusterProvideOfferParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWebRTCTransportProviderClusterProvideOfferParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWebRTCTransportProviderClusterProvideOfferParams" ,)
        }
    }
}
impl IMTRWebRTCTransportProviderClusterProvideOfferParams
    for MTRWebRTCTransportProviderClusterProvideOfferParams
{
}
pub trait IMTRWebRTCTransportProviderClusterProvideOfferParams: Sized + std::ops::Deref {
    unsafe fn webRTCSessionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, webRTCSessionID)
    }
    unsafe fn setWebRTCSessionID_(&self, webRTCSessionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWebRTCSessionID : webRTCSessionID)
    }
    unsafe fn sdp(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sdp)
    }
    unsafe fn setSdp_(&self, sdp: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSdp : sdp)
    }
    unsafe fn streamUsage(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, streamUsage)
    }
    unsafe fn setStreamUsage_(&self, streamUsage: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStreamUsage : streamUsage)
    }
    unsafe fn originatingEndpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, originatingEndpointID)
    }
    unsafe fn setOriginatingEndpointID_(&self, originatingEndpointID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOriginatingEndpointID : originatingEndpointID)
    }
    unsafe fn videoStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, videoStreamID)
    }
    unsafe fn setVideoStreamID_(&self, videoStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVideoStreamID : videoStreamID)
    }
    unsafe fn audioStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, audioStreamID)
    }
    unsafe fn setAudioStreamID_(&self, audioStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAudioStreamID : audioStreamID)
    }
    unsafe fn iceServers(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, iceServers)
    }
    unsafe fn setIceServers_(&self, iceServers: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIceServers : iceServers)
    }
    unsafe fn iceTransportPolicy(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, iceTransportPolicy)
    }
    unsafe fn setIceTransportPolicy_(&self, iceTransportPolicy: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIceTransportPolicy : iceTransportPolicy)
    }
    unsafe fn metadataEnabled(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, metadataEnabled)
    }
    unsafe fn setMetadataEnabled_(&self, metadataEnabled: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMetadataEnabled : metadataEnabled)
    }
    unsafe fn sFrameConfig(&self) -> MTRWebRTCTransportProviderClusterSFrameStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sFrameConfig)
    }
    unsafe fn setSFrameConfig_(&self, sFrameConfig: MTRWebRTCTransportProviderClusterSFrameStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSFrameConfig : sFrameConfig)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWebRTCTransportProviderClusterProvideOfferResponseParams(pub id);
impl std::ops::Deref for MTRWebRTCTransportProviderClusterProvideOfferResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWebRTCTransportProviderClusterProvideOfferResponseParams {}
impl MTRWebRTCTransportProviderClusterProvideOfferResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWebRTCTransportProviderClusterProvideOfferResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWebRTCTransportProviderClusterProvideOfferResponseParams {}
impl INSObject for MTRWebRTCTransportProviderClusterProvideOfferResponseParams {}
impl PNSObject for MTRWebRTCTransportProviderClusterProvideOfferResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRWebRTCTransportProviderClusterProvideOfferResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWebRTCTransportProviderClusterProvideOfferResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWebRTCTransportProviderClusterProvideOfferResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWebRTCTransportProviderClusterProvideOfferResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWebRTCTransportProviderClusterProvideOfferResponseParams" ,)
        }
    }
}
impl IMTRWebRTCTransportProviderClusterProvideOfferResponseParams
    for MTRWebRTCTransportProviderClusterProvideOfferResponseParams
{
}
pub trait IMTRWebRTCTransportProviderClusterProvideOfferResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn webRTCSessionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, webRTCSessionID)
    }
    unsafe fn setWebRTCSessionID_(&self, webRTCSessionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWebRTCSessionID : webRTCSessionID)
    }
    unsafe fn videoStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, videoStreamID)
    }
    unsafe fn setVideoStreamID_(&self, videoStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVideoStreamID : videoStreamID)
    }
    unsafe fn audioStreamID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, audioStreamID)
    }
    unsafe fn setAudioStreamID_(&self, audioStreamID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAudioStreamID : audioStreamID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWebRTCTransportProviderClusterProvideAnswerParams(pub id);
impl std::ops::Deref for MTRWebRTCTransportProviderClusterProvideAnswerParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWebRTCTransportProviderClusterProvideAnswerParams {}
impl MTRWebRTCTransportProviderClusterProvideAnswerParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWebRTCTransportProviderClusterProvideAnswerParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWebRTCTransportProviderClusterProvideAnswerParams {}
impl INSObject for MTRWebRTCTransportProviderClusterProvideAnswerParams {}
impl PNSObject for MTRWebRTCTransportProviderClusterProvideAnswerParams {}
impl std::convert::TryFrom<NSObject> for MTRWebRTCTransportProviderClusterProvideAnswerParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWebRTCTransportProviderClusterProvideAnswerParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWebRTCTransportProviderClusterProvideAnswerParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWebRTCTransportProviderClusterProvideAnswerParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWebRTCTransportProviderClusterProvideAnswerParams" ,)
        }
    }
}
impl IMTRWebRTCTransportProviderClusterProvideAnswerParams
    for MTRWebRTCTransportProviderClusterProvideAnswerParams
{
}
pub trait IMTRWebRTCTransportProviderClusterProvideAnswerParams: Sized + std::ops::Deref {
    unsafe fn webRTCSessionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, webRTCSessionID)
    }
    unsafe fn setWebRTCSessionID_(&self, webRTCSessionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWebRTCSessionID : webRTCSessionID)
    }
    unsafe fn sdp(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sdp)
    }
    unsafe fn setSdp_(&self, sdp: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSdp : sdp)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWebRTCTransportProviderClusterProvideICECandidatesParams(pub id);
impl std::ops::Deref for MTRWebRTCTransportProviderClusterProvideICECandidatesParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWebRTCTransportProviderClusterProvideICECandidatesParams {}
impl MTRWebRTCTransportProviderClusterProvideICECandidatesParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWebRTCTransportProviderClusterProvideICECandidatesParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWebRTCTransportProviderClusterProvideICECandidatesParams {}
impl INSObject for MTRWebRTCTransportProviderClusterProvideICECandidatesParams {}
impl PNSObject for MTRWebRTCTransportProviderClusterProvideICECandidatesParams {}
impl std::convert::TryFrom<NSObject>
    for MTRWebRTCTransportProviderClusterProvideICECandidatesParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWebRTCTransportProviderClusterProvideICECandidatesParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWebRTCTransportProviderClusterProvideICECandidatesParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWebRTCTransportProviderClusterProvideICECandidatesParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWebRTCTransportProviderClusterProvideICECandidatesParams" ,)
        }
    }
}
impl IMTRWebRTCTransportProviderClusterProvideICECandidatesParams
    for MTRWebRTCTransportProviderClusterProvideICECandidatesParams
{
}
pub trait IMTRWebRTCTransportProviderClusterProvideICECandidatesParams:
    Sized + std::ops::Deref
{
    unsafe fn webRTCSessionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, webRTCSessionID)
    }
    unsafe fn setWebRTCSessionID_(&self, webRTCSessionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWebRTCSessionID : webRTCSessionID)
    }
    unsafe fn iceCandidates(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, iceCandidates)
    }
    unsafe fn setIceCandidates_(&self, iceCandidates: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIceCandidates : iceCandidates)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWebRTCTransportProviderClusterEndSessionParams(pub id);
impl std::ops::Deref for MTRWebRTCTransportProviderClusterEndSessionParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWebRTCTransportProviderClusterEndSessionParams {}
impl MTRWebRTCTransportProviderClusterEndSessionParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWebRTCTransportProviderClusterEndSessionParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWebRTCTransportProviderClusterEndSessionParams {}
impl INSObject for MTRWebRTCTransportProviderClusterEndSessionParams {}
impl PNSObject for MTRWebRTCTransportProviderClusterEndSessionParams {}
impl std::convert::TryFrom<NSObject> for MTRWebRTCTransportProviderClusterEndSessionParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWebRTCTransportProviderClusterEndSessionParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWebRTCTransportProviderClusterEndSessionParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWebRTCTransportProviderClusterEndSessionParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWebRTCTransportProviderClusterEndSessionParams" ,)
        }
    }
}
impl IMTRWebRTCTransportProviderClusterEndSessionParams
    for MTRWebRTCTransportProviderClusterEndSessionParams
{
}
pub trait IMTRWebRTCTransportProviderClusterEndSessionParams: Sized + std::ops::Deref {
    unsafe fn webRTCSessionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, webRTCSessionID)
    }
    unsafe fn setWebRTCSessionID_(&self, webRTCSessionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWebRTCSessionID : webRTCSessionID)
    }
    unsafe fn reason(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reason)
    }
    unsafe fn setReason_(&self, reason: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReason : reason)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWebRTCTransportRequestorClusterOfferParams(pub id);
impl std::ops::Deref for MTRWebRTCTransportRequestorClusterOfferParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWebRTCTransportRequestorClusterOfferParams {}
impl MTRWebRTCTransportRequestorClusterOfferParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWebRTCTransportRequestorClusterOfferParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRWebRTCTransportRequestorClusterOfferParams {}
impl INSObject for MTRWebRTCTransportRequestorClusterOfferParams {}
impl PNSObject for MTRWebRTCTransportRequestorClusterOfferParams {}
impl std::convert::TryFrom<NSObject> for MTRWebRTCTransportRequestorClusterOfferParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWebRTCTransportRequestorClusterOfferParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWebRTCTransportRequestorClusterOfferParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWebRTCTransportRequestorClusterOfferParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWebRTCTransportRequestorClusterOfferParams" ,)
        }
    }
}
impl IMTRWebRTCTransportRequestorClusterOfferParams
    for MTRWebRTCTransportRequestorClusterOfferParams
{
}
pub trait IMTRWebRTCTransportRequestorClusterOfferParams: Sized + std::ops::Deref {
    unsafe fn webRTCSessionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, webRTCSessionID)
    }
    unsafe fn setWebRTCSessionID_(&self, webRTCSessionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWebRTCSessionID : webRTCSessionID)
    }
    unsafe fn sdp(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sdp)
    }
    unsafe fn setSdp_(&self, sdp: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSdp : sdp)
    }
    unsafe fn iceServers(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, iceServers)
    }
    unsafe fn setIceServers_(&self, iceServers: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIceServers : iceServers)
    }
    unsafe fn iceTransportPolicy(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, iceTransportPolicy)
    }
    unsafe fn setIceTransportPolicy_(&self, iceTransportPolicy: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIceTransportPolicy : iceTransportPolicy)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWebRTCTransportRequestorClusterAnswerParams(pub id);
impl std::ops::Deref for MTRWebRTCTransportRequestorClusterAnswerParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWebRTCTransportRequestorClusterAnswerParams {}
impl MTRWebRTCTransportRequestorClusterAnswerParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWebRTCTransportRequestorClusterAnswerParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWebRTCTransportRequestorClusterAnswerParams {}
impl INSObject for MTRWebRTCTransportRequestorClusterAnswerParams {}
impl PNSObject for MTRWebRTCTransportRequestorClusterAnswerParams {}
impl std::convert::TryFrom<NSObject> for MTRWebRTCTransportRequestorClusterAnswerParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWebRTCTransportRequestorClusterAnswerParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWebRTCTransportRequestorClusterAnswerParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWebRTCTransportRequestorClusterAnswerParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWebRTCTransportRequestorClusterAnswerParams" ,)
        }
    }
}
impl IMTRWebRTCTransportRequestorClusterAnswerParams
    for MTRWebRTCTransportRequestorClusterAnswerParams
{
}
pub trait IMTRWebRTCTransportRequestorClusterAnswerParams: Sized + std::ops::Deref {
    unsafe fn webRTCSessionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, webRTCSessionID)
    }
    unsafe fn setWebRTCSessionID_(&self, webRTCSessionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWebRTCSessionID : webRTCSessionID)
    }
    unsafe fn sdp(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sdp)
    }
    unsafe fn setSdp_(&self, sdp: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSdp : sdp)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWebRTCTransportRequestorClusterICECandidatesParams(pub id);
impl std::ops::Deref for MTRWebRTCTransportRequestorClusterICECandidatesParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWebRTCTransportRequestorClusterICECandidatesParams {}
impl MTRWebRTCTransportRequestorClusterICECandidatesParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWebRTCTransportRequestorClusterICECandidatesParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRWebRTCTransportRequestorClusterICECandidatesParams {}
impl INSObject for MTRWebRTCTransportRequestorClusterICECandidatesParams {}
impl PNSObject for MTRWebRTCTransportRequestorClusterICECandidatesParams {}
impl std::convert::TryFrom<NSObject> for MTRWebRTCTransportRequestorClusterICECandidatesParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWebRTCTransportRequestorClusterICECandidatesParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWebRTCTransportRequestorClusterICECandidatesParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWebRTCTransportRequestorClusterICECandidatesParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRWebRTCTransportRequestorClusterICECandidatesParams" ,)
        }
    }
}
impl IMTRWebRTCTransportRequestorClusterICECandidatesParams
    for MTRWebRTCTransportRequestorClusterICECandidatesParams
{
}
pub trait IMTRWebRTCTransportRequestorClusterICECandidatesParams: Sized + std::ops::Deref {
    unsafe fn webRTCSessionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, webRTCSessionID)
    }
    unsafe fn setWebRTCSessionID_(&self, webRTCSessionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWebRTCSessionID : webRTCSessionID)
    }
    unsafe fn iceCandidates(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, iceCandidates)
    }
    unsafe fn setIceCandidates_(&self, iceCandidates: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIceCandidates : iceCandidates)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRWebRTCTransportRequestorClusterEndParams(pub id);
impl std::ops::Deref for MTRWebRTCTransportRequestorClusterEndParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRWebRTCTransportRequestorClusterEndParams {}
impl MTRWebRTCTransportRequestorClusterEndParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRWebRTCTransportRequestorClusterEndParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRWebRTCTransportRequestorClusterEndParams {}
impl INSObject for MTRWebRTCTransportRequestorClusterEndParams {}
impl PNSObject for MTRWebRTCTransportRequestorClusterEndParams {}
impl std::convert::TryFrom<NSObject> for MTRWebRTCTransportRequestorClusterEndParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRWebRTCTransportRequestorClusterEndParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRWebRTCTransportRequestorClusterEndParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRWebRTCTransportRequestorClusterEndParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRWebRTCTransportRequestorClusterEndParams")
        }
    }
}
impl IMTRWebRTCTransportRequestorClusterEndParams for MTRWebRTCTransportRequestorClusterEndParams {}
pub trait IMTRWebRTCTransportRequestorClusterEndParams: Sized + std::ops::Deref {
    unsafe fn webRTCSessionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, webRTCSessionID)
    }
    unsafe fn setWebRTCSessionID_(&self, webRTCSessionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWebRTCSessionID : webRTCSessionID)
    }
    unsafe fn reason(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reason)
    }
    unsafe fn setReason_(&self, reason: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReason : reason)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPushAVStreamTransportClusterAllocatePushTransportParams(pub id);
impl std::ops::Deref for MTRPushAVStreamTransportClusterAllocatePushTransportParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPushAVStreamTransportClusterAllocatePushTransportParams {}
impl MTRPushAVStreamTransportClusterAllocatePushTransportParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterAllocatePushTransportParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPushAVStreamTransportClusterAllocatePushTransportParams {}
impl INSObject for MTRPushAVStreamTransportClusterAllocatePushTransportParams {}
impl PNSObject for MTRPushAVStreamTransportClusterAllocatePushTransportParams {}
impl std::convert::TryFrom<NSObject>
    for MTRPushAVStreamTransportClusterAllocatePushTransportParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPushAVStreamTransportClusterAllocatePushTransportParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterAllocatePushTransportParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRPushAVStreamTransportClusterAllocatePushTransportParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPushAVStreamTransportClusterAllocatePushTransportParams" ,)
        }
    }
}
impl IMTRPushAVStreamTransportClusterAllocatePushTransportParams
    for MTRPushAVStreamTransportClusterAllocatePushTransportParams
{
}
pub trait IMTRPushAVStreamTransportClusterAllocatePushTransportParams:
    Sized + std::ops::Deref
{
    unsafe fn transportOptions(&self) -> MTRPushAVStreamTransportClusterTransportOptionsStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transportOptions)
    }
    unsafe fn setTransportOptions_(
        &self,
        transportOptions: MTRPushAVStreamTransportClusterTransportOptionsStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransportOptions : transportOptions)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPushAVStreamTransportClusterAllocatePushTransportResponseParams(pub id);
impl std::ops::Deref for MTRPushAVStreamTransportClusterAllocatePushTransportResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPushAVStreamTransportClusterAllocatePushTransportResponseParams {}
impl MTRPushAVStreamTransportClusterAllocatePushTransportResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterAllocatePushTransportResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPushAVStreamTransportClusterAllocatePushTransportResponseParams {}
impl INSObject for MTRPushAVStreamTransportClusterAllocatePushTransportResponseParams {}
impl PNSObject for MTRPushAVStreamTransportClusterAllocatePushTransportResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRPushAVStreamTransportClusterAllocatePushTransportResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPushAVStreamTransportClusterAllocatePushTransportResponseParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterAllocatePushTransportResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRPushAVStreamTransportClusterAllocatePushTransportResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPushAVStreamTransportClusterAllocatePushTransportResponseParams" ,)
        }
    }
}
impl IMTRPushAVStreamTransportClusterAllocatePushTransportResponseParams
    for MTRPushAVStreamTransportClusterAllocatePushTransportResponseParams
{
}
pub trait IMTRPushAVStreamTransportClusterAllocatePushTransportResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn transportConfiguration(
        &self,
    ) -> MTRPushAVStreamTransportClusterTransportConfigurationStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transportConfiguration)
    }
    unsafe fn setTransportConfiguration_(
        &self,
        transportConfiguration: MTRPushAVStreamTransportClusterTransportConfigurationStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransportConfiguration : transportConfiguration)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPushAVStreamTransportClusterDeallocatePushTransportParams(pub id);
impl std::ops::Deref for MTRPushAVStreamTransportClusterDeallocatePushTransportParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPushAVStreamTransportClusterDeallocatePushTransportParams {}
impl MTRPushAVStreamTransportClusterDeallocatePushTransportParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterDeallocatePushTransportParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPushAVStreamTransportClusterDeallocatePushTransportParams {}
impl INSObject for MTRPushAVStreamTransportClusterDeallocatePushTransportParams {}
impl PNSObject for MTRPushAVStreamTransportClusterDeallocatePushTransportParams {}
impl std::convert::TryFrom<NSObject>
    for MTRPushAVStreamTransportClusterDeallocatePushTransportParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPushAVStreamTransportClusterDeallocatePushTransportParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterDeallocatePushTransportParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRPushAVStreamTransportClusterDeallocatePushTransportParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPushAVStreamTransportClusterDeallocatePushTransportParams" ,)
        }
    }
}
impl IMTRPushAVStreamTransportClusterDeallocatePushTransportParams
    for MTRPushAVStreamTransportClusterDeallocatePushTransportParams
{
}
pub trait IMTRPushAVStreamTransportClusterDeallocatePushTransportParams:
    Sized + std::ops::Deref
{
    unsafe fn connectionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, connectionID)
    }
    unsafe fn setConnectionID_(&self, connectionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setConnectionID : connectionID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPushAVStreamTransportClusterModifyPushTransportParams(pub id);
impl std::ops::Deref for MTRPushAVStreamTransportClusterModifyPushTransportParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPushAVStreamTransportClusterModifyPushTransportParams {}
impl MTRPushAVStreamTransportClusterModifyPushTransportParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterModifyPushTransportParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPushAVStreamTransportClusterModifyPushTransportParams {}
impl INSObject for MTRPushAVStreamTransportClusterModifyPushTransportParams {}
impl PNSObject for MTRPushAVStreamTransportClusterModifyPushTransportParams {}
impl std::convert::TryFrom<NSObject> for MTRPushAVStreamTransportClusterModifyPushTransportParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPushAVStreamTransportClusterModifyPushTransportParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterModifyPushTransportParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRPushAVStreamTransportClusterModifyPushTransportParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPushAVStreamTransportClusterModifyPushTransportParams" ,)
        }
    }
}
impl IMTRPushAVStreamTransportClusterModifyPushTransportParams
    for MTRPushAVStreamTransportClusterModifyPushTransportParams
{
}
pub trait IMTRPushAVStreamTransportClusterModifyPushTransportParams:
    Sized + std::ops::Deref
{
    unsafe fn connectionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, connectionID)
    }
    unsafe fn setConnectionID_(&self, connectionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setConnectionID : connectionID)
    }
    unsafe fn transportOptions(&self) -> MTRPushAVStreamTransportClusterTransportOptionsStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transportOptions)
    }
    unsafe fn setTransportOptions_(
        &self,
        transportOptions: MTRPushAVStreamTransportClusterTransportOptionsStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransportOptions : transportOptions)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPushAVStreamTransportClusterSetTransportStatusParams(pub id);
impl std::ops::Deref for MTRPushAVStreamTransportClusterSetTransportStatusParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPushAVStreamTransportClusterSetTransportStatusParams {}
impl MTRPushAVStreamTransportClusterSetTransportStatusParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterSetTransportStatusParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPushAVStreamTransportClusterSetTransportStatusParams {}
impl INSObject for MTRPushAVStreamTransportClusterSetTransportStatusParams {}
impl PNSObject for MTRPushAVStreamTransportClusterSetTransportStatusParams {}
impl std::convert::TryFrom<NSObject> for MTRPushAVStreamTransportClusterSetTransportStatusParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPushAVStreamTransportClusterSetTransportStatusParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterSetTransportStatusParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRPushAVStreamTransportClusterSetTransportStatusParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPushAVStreamTransportClusterSetTransportStatusParams" ,)
        }
    }
}
impl IMTRPushAVStreamTransportClusterSetTransportStatusParams
    for MTRPushAVStreamTransportClusterSetTransportStatusParams
{
}
pub trait IMTRPushAVStreamTransportClusterSetTransportStatusParams:
    Sized + std::ops::Deref
{
    unsafe fn connectionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, connectionID)
    }
    unsafe fn setConnectionID_(&self, connectionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setConnectionID : connectionID)
    }
    unsafe fn transportStatus(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transportStatus)
    }
    unsafe fn setTransportStatus_(&self, transportStatus: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransportStatus : transportStatus)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPushAVStreamTransportClusterManuallyTriggerTransportParams(pub id);
impl std::ops::Deref for MTRPushAVStreamTransportClusterManuallyTriggerTransportParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPushAVStreamTransportClusterManuallyTriggerTransportParams {}
impl MTRPushAVStreamTransportClusterManuallyTriggerTransportParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterManuallyTriggerTransportParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPushAVStreamTransportClusterManuallyTriggerTransportParams {}
impl INSObject for MTRPushAVStreamTransportClusterManuallyTriggerTransportParams {}
impl PNSObject for MTRPushAVStreamTransportClusterManuallyTriggerTransportParams {}
impl std::convert::TryFrom<NSObject>
    for MTRPushAVStreamTransportClusterManuallyTriggerTransportParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPushAVStreamTransportClusterManuallyTriggerTransportParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterManuallyTriggerTransportParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRPushAVStreamTransportClusterManuallyTriggerTransportParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPushAVStreamTransportClusterManuallyTriggerTransportParams" ,)
        }
    }
}
impl IMTRPushAVStreamTransportClusterManuallyTriggerTransportParams
    for MTRPushAVStreamTransportClusterManuallyTriggerTransportParams
{
}
pub trait IMTRPushAVStreamTransportClusterManuallyTriggerTransportParams:
    Sized + std::ops::Deref
{
    unsafe fn connectionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, connectionID)
    }
    unsafe fn setConnectionID_(&self, connectionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setConnectionID : connectionID)
    }
    unsafe fn activationReason(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, activationReason)
    }
    unsafe fn setActivationReason_(&self, activationReason: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActivationReason : activationReason)
    }
    unsafe fn timeControl(
        &self,
    ) -> MTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeControl)
    }
    unsafe fn setTimeControl_(
        &self,
        timeControl: MTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeControl : timeControl)
    }
    unsafe fn userDefined(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userDefined)
    }
    unsafe fn setUserDefined_(&self, userDefined: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserDefined : userDefined)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPushAVStreamTransportClusterFindTransportParams(pub id);
impl std::ops::Deref for MTRPushAVStreamTransportClusterFindTransportParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPushAVStreamTransportClusterFindTransportParams {}
impl MTRPushAVStreamTransportClusterFindTransportParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterFindTransportParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPushAVStreamTransportClusterFindTransportParams {}
impl INSObject for MTRPushAVStreamTransportClusterFindTransportParams {}
impl PNSObject for MTRPushAVStreamTransportClusterFindTransportParams {}
impl std::convert::TryFrom<NSObject> for MTRPushAVStreamTransportClusterFindTransportParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPushAVStreamTransportClusterFindTransportParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterFindTransportParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRPushAVStreamTransportClusterFindTransportParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPushAVStreamTransportClusterFindTransportParams" ,)
        }
    }
}
impl IMTRPushAVStreamTransportClusterFindTransportParams
    for MTRPushAVStreamTransportClusterFindTransportParams
{
}
pub trait IMTRPushAVStreamTransportClusterFindTransportParams: Sized + std::ops::Deref {
    unsafe fn connectionID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, connectionID)
    }
    unsafe fn setConnectionID_(&self, connectionID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setConnectionID : connectionID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRPushAVStreamTransportClusterFindTransportResponseParams(pub id);
impl std::ops::Deref for MTRPushAVStreamTransportClusterFindTransportResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRPushAVStreamTransportClusterFindTransportResponseParams {}
impl MTRPushAVStreamTransportClusterFindTransportResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterFindTransportResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRPushAVStreamTransportClusterFindTransportResponseParams {}
impl INSObject for MTRPushAVStreamTransportClusterFindTransportResponseParams {}
impl PNSObject for MTRPushAVStreamTransportClusterFindTransportResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRPushAVStreamTransportClusterFindTransportResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRPushAVStreamTransportClusterFindTransportResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRPushAVStreamTransportClusterFindTransportResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRPushAVStreamTransportClusterFindTransportResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRPushAVStreamTransportClusterFindTransportResponseParams" ,)
        }
    }
}
impl IMTRPushAVStreamTransportClusterFindTransportResponseParams
    for MTRPushAVStreamTransportClusterFindTransportResponseParams
{
}
pub trait IMTRPushAVStreamTransportClusterFindTransportResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn transportConfigurations(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transportConfigurations)
    }
    unsafe fn setTransportConfigurations_(&self, transportConfigurations: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransportConfigurations : transportConfigurations)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRChimeClusterPlayChimeSoundParams(pub id);
impl std::ops::Deref for MTRChimeClusterPlayChimeSoundParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRChimeClusterPlayChimeSoundParams {}
impl MTRChimeClusterPlayChimeSoundParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRChimeClusterPlayChimeSoundParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRChimeClusterPlayChimeSoundParams {}
impl INSObject for MTRChimeClusterPlayChimeSoundParams {}
impl PNSObject for MTRChimeClusterPlayChimeSoundParams {}
impl std::convert::TryFrom<NSObject> for MTRChimeClusterPlayChimeSoundParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRChimeClusterPlayChimeSoundParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRChimeClusterPlayChimeSoundParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRChimeClusterPlayChimeSoundParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRChimeClusterPlayChimeSoundParams")
        }
    }
}
impl IMTRChimeClusterPlayChimeSoundParams for MTRChimeClusterPlayChimeSoundParams {}
pub trait IMTRChimeClusterPlayChimeSoundParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityTariffClusterGetTariffComponentParams(pub id);
impl std::ops::Deref for MTRCommodityTariffClusterGetTariffComponentParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityTariffClusterGetTariffComponentParams {}
impl MTRCommodityTariffClusterGetTariffComponentParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterGetTariffComponentParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCommodityTariffClusterGetTariffComponentParams {}
impl INSObject for MTRCommodityTariffClusterGetTariffComponentParams {}
impl PNSObject for MTRCommodityTariffClusterGetTariffComponentParams {}
impl std::convert::TryFrom<NSObject> for MTRCommodityTariffClusterGetTariffComponentParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommodityTariffClusterGetTariffComponentParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterGetTariffComponentParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityTariffClusterGetTariffComponentParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCommodityTariffClusterGetTariffComponentParams" ,)
        }
    }
}
impl IMTRCommodityTariffClusterGetTariffComponentParams
    for MTRCommodityTariffClusterGetTariffComponentParams
{
}
pub trait IMTRCommodityTariffClusterGetTariffComponentParams: Sized + std::ops::Deref {
    unsafe fn tariffComponentID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tariffComponentID)
    }
    unsafe fn setTariffComponentID_(&self, tariffComponentID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTariffComponentID : tariffComponentID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityTariffClusterGetTariffComponentResponseParams(pub id);
impl std::ops::Deref for MTRCommodityTariffClusterGetTariffComponentResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityTariffClusterGetTariffComponentResponseParams {}
impl MTRCommodityTariffClusterGetTariffComponentResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterGetTariffComponentResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCommodityTariffClusterGetTariffComponentResponseParams {}
impl INSObject for MTRCommodityTariffClusterGetTariffComponentResponseParams {}
impl PNSObject for MTRCommodityTariffClusterGetTariffComponentResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRCommodityTariffClusterGetTariffComponentResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommodityTariffClusterGetTariffComponentResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterGetTariffComponentResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityTariffClusterGetTariffComponentResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCommodityTariffClusterGetTariffComponentResponseParams" ,)
        }
    }
}
impl IMTRCommodityTariffClusterGetTariffComponentResponseParams
    for MTRCommodityTariffClusterGetTariffComponentResponseParams
{
}
pub trait IMTRCommodityTariffClusterGetTariffComponentResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
    unsafe fn dayEntryIDs(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dayEntryIDs)
    }
    unsafe fn setDayEntryIDs_(&self, dayEntryIDs: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDayEntryIDs : dayEntryIDs)
    }
    unsafe fn tariffComponent(&self) -> MTRCommodityTariffClusterTariffComponentStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tariffComponent)
    }
    unsafe fn setTariffComponent_(
        &self,
        tariffComponent: MTRCommodityTariffClusterTariffComponentStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTariffComponent : tariffComponent)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityTariffClusterGetDayEntryParams(pub id);
impl std::ops::Deref for MTRCommodityTariffClusterGetDayEntryParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityTariffClusterGetDayEntryParams {}
impl MTRCommodityTariffClusterGetDayEntryParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterGetDayEntryParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRCommodityTariffClusterGetDayEntryParams {}
impl INSObject for MTRCommodityTariffClusterGetDayEntryParams {}
impl PNSObject for MTRCommodityTariffClusterGetDayEntryParams {}
impl std::convert::TryFrom<NSObject> for MTRCommodityTariffClusterGetDayEntryParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommodityTariffClusterGetDayEntryParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterGetDayEntryParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityTariffClusterGetDayEntryParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRCommodityTariffClusterGetDayEntryParams")
        }
    }
}
impl IMTRCommodityTariffClusterGetDayEntryParams for MTRCommodityTariffClusterGetDayEntryParams {}
pub trait IMTRCommodityTariffClusterGetDayEntryParams: Sized + std::ops::Deref {
    unsafe fn dayEntryID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dayEntryID)
    }
    unsafe fn setDayEntryID_(&self, dayEntryID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDayEntryID : dayEntryID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommodityTariffClusterGetDayEntryResponseParams(pub id);
impl std::ops::Deref for MTRCommodityTariffClusterGetDayEntryResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommodityTariffClusterGetDayEntryResponseParams {}
impl MTRCommodityTariffClusterGetDayEntryResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterGetDayEntryResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCommodityTariffClusterGetDayEntryResponseParams {}
impl INSObject for MTRCommodityTariffClusterGetDayEntryResponseParams {}
impl PNSObject for MTRCommodityTariffClusterGetDayEntryResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRCommodityTariffClusterGetDayEntryResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommodityTariffClusterGetDayEntryResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommodityTariffClusterGetDayEntryResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommodityTariffClusterGetDayEntryResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCommodityTariffClusterGetDayEntryResponseParams" ,)
        }
    }
}
impl IMTRCommodityTariffClusterGetDayEntryResponseParams
    for MTRCommodityTariffClusterGetDayEntryResponseParams
{
}
pub trait IMTRCommodityTariffClusterGetDayEntryResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn dayEntry(&self) -> MTRCommodityTariffClusterDayEntryStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dayEntry)
    }
    unsafe fn setDayEntry_(&self, dayEntry: MTRCommodityTariffClusterDayEntryStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDayEntry : dayEntry)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommissionerControlClusterRequestCommissioningApprovalParams(pub id);
impl std::ops::Deref for MTRCommissionerControlClusterRequestCommissioningApprovalParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommissionerControlClusterRequestCommissioningApprovalParams {}
impl MTRCommissionerControlClusterRequestCommissioningApprovalParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommissionerControlClusterRequestCommissioningApprovalParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCommissionerControlClusterRequestCommissioningApprovalParams {}
impl INSObject for MTRCommissionerControlClusterRequestCommissioningApprovalParams {}
impl PNSObject for MTRCommissionerControlClusterRequestCommissioningApprovalParams {}
impl std::convert::TryFrom<NSObject>
    for MTRCommissionerControlClusterRequestCommissioningApprovalParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommissionerControlClusterRequestCommissioningApprovalParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommissionerControlClusterRequestCommissioningApprovalParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommissionerControlClusterRequestCommissioningApprovalParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCommissionerControlClusterRequestCommissioningApprovalParams" ,)
        }
    }
}
impl IMTRCommissionerControlClusterRequestCommissioningApprovalParams
    for MTRCommissionerControlClusterRequestCommissioningApprovalParams
{
}
pub trait IMTRCommissionerControlClusterRequestCommissioningApprovalParams:
    Sized + std::ops::Deref
{
    unsafe fn requestID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requestID)
    }
    unsafe fn setRequestID_(&self, requestID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRequestID : requestID)
    }
    unsafe fn vendorID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vendorID)
    }
    unsafe fn setVendorID_(&self, vendorID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVendorID : vendorID)
    }
    unsafe fn productID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, productID)
    }
    unsafe fn setProductID_(&self, productID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProductID : productID)
    }
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn setLabel_(&self, label: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLabel : label)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommissionerControlClusterCommissionNodeParams(pub id);
impl std::ops::Deref for MTRCommissionerControlClusterCommissionNodeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommissionerControlClusterCommissionNodeParams {}
impl MTRCommissionerControlClusterCommissionNodeParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommissionerControlClusterCommissionNodeParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCommissionerControlClusterCommissionNodeParams {}
impl INSObject for MTRCommissionerControlClusterCommissionNodeParams {}
impl PNSObject for MTRCommissionerControlClusterCommissionNodeParams {}
impl std::convert::TryFrom<NSObject> for MTRCommissionerControlClusterCommissionNodeParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommissionerControlClusterCommissionNodeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommissionerControlClusterCommissionNodeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommissionerControlClusterCommissionNodeParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCommissionerControlClusterCommissionNodeParams" ,)
        }
    }
}
impl IMTRCommissionerControlClusterCommissionNodeParams
    for MTRCommissionerControlClusterCommissionNodeParams
{
}
pub trait IMTRCommissionerControlClusterCommissionNodeParams: Sized + std::ops::Deref {
    unsafe fn requestID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requestID)
    }
    unsafe fn setRequestID_(&self, requestID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRequestID : requestID)
    }
    unsafe fn responseTimeoutSeconds(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, responseTimeoutSeconds)
    }
    unsafe fn setResponseTimeoutSeconds_(&self, responseTimeoutSeconds: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setResponseTimeoutSeconds : responseTimeoutSeconds)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommissionerControlClusterReverseOpenCommissioningWindowParams(pub id);
impl std::ops::Deref for MTRCommissionerControlClusterReverseOpenCommissioningWindowParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommissionerControlClusterReverseOpenCommissioningWindowParams {}
impl MTRCommissionerControlClusterReverseOpenCommissioningWindowParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommissionerControlClusterReverseOpenCommissioningWindowParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRCommissionerControlClusterReverseOpenCommissioningWindowParams {}
impl INSObject for MTRCommissionerControlClusterReverseOpenCommissioningWindowParams {}
impl PNSObject for MTRCommissionerControlClusterReverseOpenCommissioningWindowParams {}
impl std::convert::TryFrom<NSObject>
    for MTRCommissionerControlClusterReverseOpenCommissioningWindowParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRCommissionerControlClusterReverseOpenCommissioningWindowParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommissionerControlClusterReverseOpenCommissioningWindowParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommissionerControlClusterReverseOpenCommissioningWindowParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRCommissionerControlClusterReverseOpenCommissioningWindowParams" ,)
        }
    }
}
impl IMTRCommissionerControlClusterReverseOpenCommissioningWindowParams
    for MTRCommissionerControlClusterReverseOpenCommissioningWindowParams
{
}
pub trait IMTRCommissionerControlClusterReverseOpenCommissioningWindowParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn commissioningTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, commissioningTimeout)
    }
    unsafe fn setCommissioningTimeout_(&self, commissioningTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCommissioningTimeout : commissioningTimeout)
    }
    unsafe fn pakePasscodeVerifier(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pakePasscodeVerifier)
    }
    unsafe fn setPakePasscodeVerifier_(&self, pakePasscodeVerifier: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPakePasscodeVerifier : pakePasscodeVerifier)
    }
    unsafe fn discriminator(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, discriminator)
    }
    unsafe fn setDiscriminator_(&self, discriminator: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDiscriminator : discriminator)
    }
    unsafe fn iterations(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, iterations)
    }
    unsafe fn setIterations_(&self, iterations: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIterations : iterations)
    }
    unsafe fn salt(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, salt)
    }
    unsafe fn setSalt_(&self, salt: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSalt : salt)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterAddKeySetParams(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterAddKeySetParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterAddKeySetParams {}
impl MTRJointFabricDatastoreClusterAddKeySetParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterAddKeySetParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterAddKeySetParams {}
impl INSObject for MTRJointFabricDatastoreClusterAddKeySetParams {}
impl PNSObject for MTRJointFabricDatastoreClusterAddKeySetParams {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricDatastoreClusterAddKeySetParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterAddKeySetParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterAddKeySetParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterAddKeySetParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterAddKeySetParams" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterAddKeySetParams
    for MTRJointFabricDatastoreClusterAddKeySetParams
{
}
pub trait IMTRJointFabricDatastoreClusterAddKeySetParams: Sized + std::ops::Deref {
    unsafe fn groupKeySet(&self) -> MTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupKeySet)
    }
    unsafe fn setGroupKeySet_(
        &self,
        groupKeySet: MTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupKeySet : groupKeySet)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterUpdateKeySetParams(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterUpdateKeySetParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterUpdateKeySetParams {}
impl MTRJointFabricDatastoreClusterUpdateKeySetParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterUpdateKeySetParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterUpdateKeySetParams {}
impl INSObject for MTRJointFabricDatastoreClusterUpdateKeySetParams {}
impl PNSObject for MTRJointFabricDatastoreClusterUpdateKeySetParams {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricDatastoreClusterUpdateKeySetParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterUpdateKeySetParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterUpdateKeySetParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterUpdateKeySetParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterUpdateKeySetParams" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterUpdateKeySetParams
    for MTRJointFabricDatastoreClusterUpdateKeySetParams
{
}
pub trait IMTRJointFabricDatastoreClusterUpdateKeySetParams: Sized + std::ops::Deref {
    unsafe fn groupKeySet(&self) -> MTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupKeySet)
    }
    unsafe fn setGroupKeySet_(
        &self,
        groupKeySet: MTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupKeySet : groupKeySet)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterRemoveKeySetParams(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterRemoveKeySetParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterRemoveKeySetParams {}
impl MTRJointFabricDatastoreClusterRemoveKeySetParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterRemoveKeySetParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterRemoveKeySetParams {}
impl INSObject for MTRJointFabricDatastoreClusterRemoveKeySetParams {}
impl PNSObject for MTRJointFabricDatastoreClusterRemoveKeySetParams {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricDatastoreClusterRemoveKeySetParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterRemoveKeySetParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterRemoveKeySetParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterRemoveKeySetParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterRemoveKeySetParams" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterRemoveKeySetParams
    for MTRJointFabricDatastoreClusterRemoveKeySetParams
{
}
pub trait IMTRJointFabricDatastoreClusterRemoveKeySetParams: Sized + std::ops::Deref {
    unsafe fn groupKeySetID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupKeySetID)
    }
    unsafe fn setGroupKeySetID_(&self, groupKeySetID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupKeySetID : groupKeySetID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterAddGroupParams(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterAddGroupParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterAddGroupParams {}
impl MTRJointFabricDatastoreClusterAddGroupParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterAddGroupParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterAddGroupParams {}
impl INSObject for MTRJointFabricDatastoreClusterAddGroupParams {}
impl PNSObject for MTRJointFabricDatastoreClusterAddGroupParams {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricDatastoreClusterAddGroupParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterAddGroupParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterAddGroupParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterAddGroupParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterAddGroupParams" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterAddGroupParams
    for MTRJointFabricDatastoreClusterAddGroupParams
{
}
pub trait IMTRJointFabricDatastoreClusterAddGroupParams: Sized + std::ops::Deref {
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn friendlyName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, friendlyName)
    }
    unsafe fn setFriendlyName_(&self, friendlyName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFriendlyName : friendlyName)
    }
    unsafe fn groupKeySetID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupKeySetID)
    }
    unsafe fn setGroupKeySetID_(&self, groupKeySetID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupKeySetID : groupKeySetID)
    }
    unsafe fn groupCAT(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupCAT)
    }
    unsafe fn setGroupCAT_(&self, groupCAT: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupCAT : groupCAT)
    }
    unsafe fn groupCATVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupCATVersion)
    }
    unsafe fn setGroupCATVersion_(&self, groupCATVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupCATVersion : groupCATVersion)
    }
    unsafe fn groupPermission(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupPermission)
    }
    unsafe fn setGroupPermission_(&self, groupPermission: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupPermission : groupPermission)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterUpdateGroupParams(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterUpdateGroupParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterUpdateGroupParams {}
impl MTRJointFabricDatastoreClusterUpdateGroupParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterUpdateGroupParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterUpdateGroupParams {}
impl INSObject for MTRJointFabricDatastoreClusterUpdateGroupParams {}
impl PNSObject for MTRJointFabricDatastoreClusterUpdateGroupParams {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricDatastoreClusterUpdateGroupParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterUpdateGroupParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterUpdateGroupParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterUpdateGroupParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterUpdateGroupParams" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterUpdateGroupParams
    for MTRJointFabricDatastoreClusterUpdateGroupParams
{
}
pub trait IMTRJointFabricDatastoreClusterUpdateGroupParams: Sized + std::ops::Deref {
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn friendlyName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, friendlyName)
    }
    unsafe fn setFriendlyName_(&self, friendlyName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFriendlyName : friendlyName)
    }
    unsafe fn groupKeySetID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupKeySetID)
    }
    unsafe fn setGroupKeySetID_(&self, groupKeySetID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupKeySetID : groupKeySetID)
    }
    unsafe fn groupCAT(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupCAT)
    }
    unsafe fn setGroupCAT_(&self, groupCAT: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupCAT : groupCAT)
    }
    unsafe fn groupCATVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupCATVersion)
    }
    unsafe fn setGroupCATVersion_(&self, groupCATVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupCATVersion : groupCATVersion)
    }
    unsafe fn groupPermission(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupPermission)
    }
    unsafe fn setGroupPermission_(&self, groupPermission: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupPermission : groupPermission)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterRemoveGroupParams(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterRemoveGroupParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterRemoveGroupParams {}
impl MTRJointFabricDatastoreClusterRemoveGroupParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterRemoveGroupParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterRemoveGroupParams {}
impl INSObject for MTRJointFabricDatastoreClusterRemoveGroupParams {}
impl PNSObject for MTRJointFabricDatastoreClusterRemoveGroupParams {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricDatastoreClusterRemoveGroupParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterRemoveGroupParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterRemoveGroupParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterRemoveGroupParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterRemoveGroupParams" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterRemoveGroupParams
    for MTRJointFabricDatastoreClusterRemoveGroupParams
{
}
pub trait IMTRJointFabricDatastoreClusterRemoveGroupParams: Sized + std::ops::Deref {
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterAddAdminParams(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterAddAdminParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterAddAdminParams {}
impl MTRJointFabricDatastoreClusterAddAdminParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterAddAdminParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterAddAdminParams {}
impl INSObject for MTRJointFabricDatastoreClusterAddAdminParams {}
impl PNSObject for MTRJointFabricDatastoreClusterAddAdminParams {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricDatastoreClusterAddAdminParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterAddAdminParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterAddAdminParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterAddAdminParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterAddAdminParams" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterAddAdminParams
    for MTRJointFabricDatastoreClusterAddAdminParams
{
}
pub trait IMTRJointFabricDatastoreClusterAddAdminParams: Sized + std::ops::Deref {
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn friendlyName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, friendlyName)
    }
    unsafe fn setFriendlyName_(&self, friendlyName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFriendlyName : friendlyName)
    }
    unsafe fn vendorID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vendorID)
    }
    unsafe fn setVendorID_(&self, vendorID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVendorID : vendorID)
    }
    unsafe fn icac(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, icac)
    }
    unsafe fn setIcac_(&self, icac: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIcac : icac)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterUpdateAdminParams(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterUpdateAdminParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterUpdateAdminParams {}
impl MTRJointFabricDatastoreClusterUpdateAdminParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterUpdateAdminParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterUpdateAdminParams {}
impl INSObject for MTRJointFabricDatastoreClusterUpdateAdminParams {}
impl PNSObject for MTRJointFabricDatastoreClusterUpdateAdminParams {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricDatastoreClusterUpdateAdminParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterUpdateAdminParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterUpdateAdminParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterUpdateAdminParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterUpdateAdminParams" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterUpdateAdminParams
    for MTRJointFabricDatastoreClusterUpdateAdminParams
{
}
pub trait IMTRJointFabricDatastoreClusterUpdateAdminParams: Sized + std::ops::Deref {
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn friendlyName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, friendlyName)
    }
    unsafe fn setFriendlyName_(&self, friendlyName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFriendlyName : friendlyName)
    }
    unsafe fn icac(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, icac)
    }
    unsafe fn setIcac_(&self, icac: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIcac : icac)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterRemoveAdminParams(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterRemoveAdminParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterRemoveAdminParams {}
impl MTRJointFabricDatastoreClusterRemoveAdminParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterRemoveAdminParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterRemoveAdminParams {}
impl INSObject for MTRJointFabricDatastoreClusterRemoveAdminParams {}
impl PNSObject for MTRJointFabricDatastoreClusterRemoveAdminParams {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricDatastoreClusterRemoveAdminParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterRemoveAdminParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterRemoveAdminParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterRemoveAdminParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterRemoveAdminParams" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterRemoveAdminParams
    for MTRJointFabricDatastoreClusterRemoveAdminParams
{
}
pub trait IMTRJointFabricDatastoreClusterRemoveAdminParams: Sized + std::ops::Deref {
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterAddPendingNodeParams(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterAddPendingNodeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterAddPendingNodeParams {}
impl MTRJointFabricDatastoreClusterAddPendingNodeParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterAddPendingNodeParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterAddPendingNodeParams {}
impl INSObject for MTRJointFabricDatastoreClusterAddPendingNodeParams {}
impl PNSObject for MTRJointFabricDatastoreClusterAddPendingNodeParams {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricDatastoreClusterAddPendingNodeParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterAddPendingNodeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterAddPendingNodeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterAddPendingNodeParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterAddPendingNodeParams" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterAddPendingNodeParams
    for MTRJointFabricDatastoreClusterAddPendingNodeParams
{
}
pub trait IMTRJointFabricDatastoreClusterAddPendingNodeParams: Sized + std::ops::Deref {
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn friendlyName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, friendlyName)
    }
    unsafe fn setFriendlyName_(&self, friendlyName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFriendlyName : friendlyName)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterRefreshNodeParams(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterRefreshNodeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterRefreshNodeParams {}
impl MTRJointFabricDatastoreClusterRefreshNodeParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterRefreshNodeParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterRefreshNodeParams {}
impl INSObject for MTRJointFabricDatastoreClusterRefreshNodeParams {}
impl PNSObject for MTRJointFabricDatastoreClusterRefreshNodeParams {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricDatastoreClusterRefreshNodeParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterRefreshNodeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterRefreshNodeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterRefreshNodeParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterRefreshNodeParams" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterRefreshNodeParams
    for MTRJointFabricDatastoreClusterRefreshNodeParams
{
}
pub trait IMTRJointFabricDatastoreClusterRefreshNodeParams: Sized + std::ops::Deref {
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterUpdateNodeParams(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterUpdateNodeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterUpdateNodeParams {}
impl MTRJointFabricDatastoreClusterUpdateNodeParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterUpdateNodeParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterUpdateNodeParams {}
impl INSObject for MTRJointFabricDatastoreClusterUpdateNodeParams {}
impl PNSObject for MTRJointFabricDatastoreClusterUpdateNodeParams {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricDatastoreClusterUpdateNodeParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterUpdateNodeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterUpdateNodeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterUpdateNodeParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterUpdateNodeParams" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterUpdateNodeParams
    for MTRJointFabricDatastoreClusterUpdateNodeParams
{
}
pub trait IMTRJointFabricDatastoreClusterUpdateNodeParams: Sized + std::ops::Deref {
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn friendlyName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, friendlyName)
    }
    unsafe fn setFriendlyName_(&self, friendlyName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFriendlyName : friendlyName)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterRemoveNodeParams(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterRemoveNodeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterRemoveNodeParams {}
impl MTRJointFabricDatastoreClusterRemoveNodeParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterRemoveNodeParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterRemoveNodeParams {}
impl INSObject for MTRJointFabricDatastoreClusterRemoveNodeParams {}
impl PNSObject for MTRJointFabricDatastoreClusterRemoveNodeParams {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricDatastoreClusterRemoveNodeParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterRemoveNodeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterRemoveNodeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterRemoveNodeParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterRemoveNodeParams" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterRemoveNodeParams
    for MTRJointFabricDatastoreClusterRemoveNodeParams
{
}
pub trait IMTRJointFabricDatastoreClusterRemoveNodeParams: Sized + std::ops::Deref {
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterUpdateEndpointForNodeParams(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterUpdateEndpointForNodeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterUpdateEndpointForNodeParams {}
impl MTRJointFabricDatastoreClusterUpdateEndpointForNodeParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterUpdateEndpointForNodeParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterUpdateEndpointForNodeParams {}
impl INSObject for MTRJointFabricDatastoreClusterUpdateEndpointForNodeParams {}
impl PNSObject for MTRJointFabricDatastoreClusterUpdateEndpointForNodeParams {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricDatastoreClusterUpdateEndpointForNodeParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterUpdateEndpointForNodeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterUpdateEndpointForNodeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterUpdateEndpointForNodeParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterUpdateEndpointForNodeParams" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterUpdateEndpointForNodeParams
    for MTRJointFabricDatastoreClusterUpdateEndpointForNodeParams
{
}
pub trait IMTRJointFabricDatastoreClusterUpdateEndpointForNodeParams:
    Sized + std::ops::Deref
{
    unsafe fn endpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpointID)
    }
    unsafe fn setEndpointID_(&self, endpointID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpointID : endpointID)
    }
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn friendlyName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, friendlyName)
    }
    unsafe fn setFriendlyName_(&self, friendlyName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFriendlyName : friendlyName)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterAddGroupIDToEndpointForNodeParams(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterAddGroupIDToEndpointForNodeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterAddGroupIDToEndpointForNodeParams {}
impl MTRJointFabricDatastoreClusterAddGroupIDToEndpointForNodeParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterAddGroupIDToEndpointForNodeParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterAddGroupIDToEndpointForNodeParams {}
impl INSObject for MTRJointFabricDatastoreClusterAddGroupIDToEndpointForNodeParams {}
impl PNSObject for MTRJointFabricDatastoreClusterAddGroupIDToEndpointForNodeParams {}
impl std::convert::TryFrom<NSObject>
    for MTRJointFabricDatastoreClusterAddGroupIDToEndpointForNodeParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterAddGroupIDToEndpointForNodeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterAddGroupIDToEndpointForNodeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterAddGroupIDToEndpointForNodeParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterAddGroupIDToEndpointForNodeParams" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterAddGroupIDToEndpointForNodeParams
    for MTRJointFabricDatastoreClusterAddGroupIDToEndpointForNodeParams
{
}
pub trait IMTRJointFabricDatastoreClusterAddGroupIDToEndpointForNodeParams:
    Sized + std::ops::Deref
{
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn endpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpointID)
    }
    unsafe fn setEndpointID_(&self, endpointID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpointID : endpointID)
    }
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterRemoveGroupIDFromEndpointForNodeParams(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterRemoveGroupIDFromEndpointForNodeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterRemoveGroupIDFromEndpointForNodeParams {}
impl MTRJointFabricDatastoreClusterRemoveGroupIDFromEndpointForNodeParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterRemoveGroupIDFromEndpointForNodeParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterRemoveGroupIDFromEndpointForNodeParams {}
impl INSObject for MTRJointFabricDatastoreClusterRemoveGroupIDFromEndpointForNodeParams {}
impl PNSObject for MTRJointFabricDatastoreClusterRemoveGroupIDFromEndpointForNodeParams {}
impl std::convert::TryFrom<NSObject>
    for MTRJointFabricDatastoreClusterRemoveGroupIDFromEndpointForNodeParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterRemoveGroupIDFromEndpointForNodeParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterRemoveGroupIDFromEndpointForNodeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterRemoveGroupIDFromEndpointForNodeParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterRemoveGroupIDFromEndpointForNodeParams" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterRemoveGroupIDFromEndpointForNodeParams
    for MTRJointFabricDatastoreClusterRemoveGroupIDFromEndpointForNodeParams
{
}
pub trait IMTRJointFabricDatastoreClusterRemoveGroupIDFromEndpointForNodeParams:
    Sized + std::ops::Deref
{
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn endpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpointID)
    }
    unsafe fn setEndpointID_(&self, endpointID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpointID : endpointID)
    }
    unsafe fn groupID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupID)
    }
    unsafe fn setGroupID_(&self, groupID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupID : groupID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterAddBindingToEndpointForNodeParams(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterAddBindingToEndpointForNodeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterAddBindingToEndpointForNodeParams {}
impl MTRJointFabricDatastoreClusterAddBindingToEndpointForNodeParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterAddBindingToEndpointForNodeParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterAddBindingToEndpointForNodeParams {}
impl INSObject for MTRJointFabricDatastoreClusterAddBindingToEndpointForNodeParams {}
impl PNSObject for MTRJointFabricDatastoreClusterAddBindingToEndpointForNodeParams {}
impl std::convert::TryFrom<NSObject>
    for MTRJointFabricDatastoreClusterAddBindingToEndpointForNodeParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterAddBindingToEndpointForNodeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterAddBindingToEndpointForNodeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterAddBindingToEndpointForNodeParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterAddBindingToEndpointForNodeParams" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterAddBindingToEndpointForNodeParams
    for MTRJointFabricDatastoreClusterAddBindingToEndpointForNodeParams
{
}
pub trait IMTRJointFabricDatastoreClusterAddBindingToEndpointForNodeParams:
    Sized + std::ops::Deref
{
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn endpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpointID)
    }
    unsafe fn setEndpointID_(&self, endpointID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpointID : endpointID)
    }
    unsafe fn binding(&self) -> MTRJointFabricDatastoreClusterDatastoreBindingTargetStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, binding)
    }
    unsafe fn setBinding_(
        &self,
        binding: MTRJointFabricDatastoreClusterDatastoreBindingTargetStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBinding : binding)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterRemoveBindingFromEndpointForNodeParams(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterRemoveBindingFromEndpointForNodeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterRemoveBindingFromEndpointForNodeParams {}
impl MTRJointFabricDatastoreClusterRemoveBindingFromEndpointForNodeParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterRemoveBindingFromEndpointForNodeParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterRemoveBindingFromEndpointForNodeParams {}
impl INSObject for MTRJointFabricDatastoreClusterRemoveBindingFromEndpointForNodeParams {}
impl PNSObject for MTRJointFabricDatastoreClusterRemoveBindingFromEndpointForNodeParams {}
impl std::convert::TryFrom<NSObject>
    for MTRJointFabricDatastoreClusterRemoveBindingFromEndpointForNodeParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterRemoveBindingFromEndpointForNodeParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterRemoveBindingFromEndpointForNodeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterRemoveBindingFromEndpointForNodeParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterRemoveBindingFromEndpointForNodeParams" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterRemoveBindingFromEndpointForNodeParams
    for MTRJointFabricDatastoreClusterRemoveBindingFromEndpointForNodeParams
{
}
pub trait IMTRJointFabricDatastoreClusterRemoveBindingFromEndpointForNodeParams:
    Sized + std::ops::Deref
{
    unsafe fn listID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, listID)
    }
    unsafe fn setListID_(&self, listID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setListID : listID)
    }
    unsafe fn endpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpointID)
    }
    unsafe fn setEndpointID_(&self, endpointID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpointID : endpointID)
    }
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterAddACLToNodeParams(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterAddACLToNodeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterAddACLToNodeParams {}
impl MTRJointFabricDatastoreClusterAddACLToNodeParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterAddACLToNodeParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterAddACLToNodeParams {}
impl INSObject for MTRJointFabricDatastoreClusterAddACLToNodeParams {}
impl PNSObject for MTRJointFabricDatastoreClusterAddACLToNodeParams {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricDatastoreClusterAddACLToNodeParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterAddACLToNodeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterAddACLToNodeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterAddACLToNodeParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterAddACLToNodeParams" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterAddACLToNodeParams
    for MTRJointFabricDatastoreClusterAddACLToNodeParams
{
}
pub trait IMTRJointFabricDatastoreClusterAddACLToNodeParams: Sized + std::ops::Deref {
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn aclEntry(&self) -> MTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, aclEntry)
    }
    unsafe fn setAclEntry_(
        &self,
        aclEntry: MTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAclEntry : aclEntry)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricDatastoreClusterRemoveACLFromNodeParams(pub id);
impl std::ops::Deref for MTRJointFabricDatastoreClusterRemoveACLFromNodeParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricDatastoreClusterRemoveACLFromNodeParams {}
impl MTRJointFabricDatastoreClusterRemoveACLFromNodeParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterRemoveACLFromNodeParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricDatastoreClusterRemoveACLFromNodeParams {}
impl INSObject for MTRJointFabricDatastoreClusterRemoveACLFromNodeParams {}
impl PNSObject for MTRJointFabricDatastoreClusterRemoveACLFromNodeParams {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricDatastoreClusterRemoveACLFromNodeParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricDatastoreClusterRemoveACLFromNodeParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricDatastoreClusterRemoveACLFromNodeParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricDatastoreClusterRemoveACLFromNodeParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricDatastoreClusterRemoveACLFromNodeParams" ,)
        }
    }
}
impl IMTRJointFabricDatastoreClusterRemoveACLFromNodeParams
    for MTRJointFabricDatastoreClusterRemoveACLFromNodeParams
{
}
pub trait IMTRJointFabricDatastoreClusterRemoveACLFromNodeParams: Sized + std::ops::Deref {
    unsafe fn listID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, listID)
    }
    unsafe fn setListID_(&self, listID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setListID : listID)
    }
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricAdministratorClusterICACCSRRequestParams(pub id);
impl std::ops::Deref for MTRJointFabricAdministratorClusterICACCSRRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricAdministratorClusterICACCSRRequestParams {}
impl MTRJointFabricAdministratorClusterICACCSRRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricAdministratorClusterICACCSRRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricAdministratorClusterICACCSRRequestParams {}
impl INSObject for MTRJointFabricAdministratorClusterICACCSRRequestParams {}
impl PNSObject for MTRJointFabricAdministratorClusterICACCSRRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricAdministratorClusterICACCSRRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricAdministratorClusterICACCSRRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricAdministratorClusterICACCSRRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricAdministratorClusterICACCSRRequestParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricAdministratorClusterICACCSRRequestParams" ,)
        }
    }
}
impl IMTRJointFabricAdministratorClusterICACCSRRequestParams
    for MTRJointFabricAdministratorClusterICACCSRRequestParams
{
}
pub trait IMTRJointFabricAdministratorClusterICACCSRRequestParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricAdministratorClusterICACCSRResponseParams(pub id);
impl std::ops::Deref for MTRJointFabricAdministratorClusterICACCSRResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricAdministratorClusterICACCSRResponseParams {}
impl MTRJointFabricAdministratorClusterICACCSRResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricAdministratorClusterICACCSRResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricAdministratorClusterICACCSRResponseParams {}
impl INSObject for MTRJointFabricAdministratorClusterICACCSRResponseParams {}
impl PNSObject for MTRJointFabricAdministratorClusterICACCSRResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricAdministratorClusterICACCSRResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricAdministratorClusterICACCSRResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricAdministratorClusterICACCSRResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricAdministratorClusterICACCSRResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricAdministratorClusterICACCSRResponseParams" ,)
        }
    }
}
impl IMTRJointFabricAdministratorClusterICACCSRResponseParams
    for MTRJointFabricAdministratorClusterICACCSRResponseParams
{
}
pub trait IMTRJointFabricAdministratorClusterICACCSRResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn icaccsr(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, icaccsr)
    }
    unsafe fn setIcaccsr_(&self, icaccsr: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIcaccsr : icaccsr)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricAdministratorClusterAddICACParams(pub id);
impl std::ops::Deref for MTRJointFabricAdministratorClusterAddICACParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricAdministratorClusterAddICACParams {}
impl MTRJointFabricAdministratorClusterAddICACParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricAdministratorClusterAddICACParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricAdministratorClusterAddICACParams {}
impl INSObject for MTRJointFabricAdministratorClusterAddICACParams {}
impl PNSObject for MTRJointFabricAdministratorClusterAddICACParams {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricAdministratorClusterAddICACParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricAdministratorClusterAddICACParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricAdministratorClusterAddICACParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricAdministratorClusterAddICACParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricAdministratorClusterAddICACParams" ,)
        }
    }
}
impl IMTRJointFabricAdministratorClusterAddICACParams
    for MTRJointFabricAdministratorClusterAddICACParams
{
}
pub trait IMTRJointFabricAdministratorClusterAddICACParams: Sized + std::ops::Deref {
    unsafe fn icacValue(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, icacValue)
    }
    unsafe fn setIcacValue_(&self, icacValue: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIcacValue : icacValue)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricAdministratorClusterICACResponseParams(pub id);
impl std::ops::Deref for MTRJointFabricAdministratorClusterICACResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricAdministratorClusterICACResponseParams {}
impl MTRJointFabricAdministratorClusterICACResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricAdministratorClusterICACResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricAdministratorClusterICACResponseParams {}
impl INSObject for MTRJointFabricAdministratorClusterICACResponseParams {}
impl PNSObject for MTRJointFabricAdministratorClusterICACResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRJointFabricAdministratorClusterICACResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricAdministratorClusterICACResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricAdministratorClusterICACResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricAdministratorClusterICACResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricAdministratorClusterICACResponseParams" ,)
        }
    }
}
impl IMTRJointFabricAdministratorClusterICACResponseParams
    for MTRJointFabricAdministratorClusterICACResponseParams
{
}
pub trait IMTRJointFabricAdministratorClusterICACResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn statusCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusCode)
    }
    unsafe fn setStatusCode_(&self, statusCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusCode : statusCode)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricAdministratorClusterOpenJointCommissioningWindowParams(pub id);
impl std::ops::Deref for MTRJointFabricAdministratorClusterOpenJointCommissioningWindowParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricAdministratorClusterOpenJointCommissioningWindowParams {}
impl MTRJointFabricAdministratorClusterOpenJointCommissioningWindowParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricAdministratorClusterOpenJointCommissioningWindowParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricAdministratorClusterOpenJointCommissioningWindowParams {}
impl INSObject for MTRJointFabricAdministratorClusterOpenJointCommissioningWindowParams {}
impl PNSObject for MTRJointFabricAdministratorClusterOpenJointCommissioningWindowParams {}
impl std::convert::TryFrom<NSObject>
    for MTRJointFabricAdministratorClusterOpenJointCommissioningWindowParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricAdministratorClusterOpenJointCommissioningWindowParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricAdministratorClusterOpenJointCommissioningWindowParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricAdministratorClusterOpenJointCommissioningWindowParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricAdministratorClusterOpenJointCommissioningWindowParams" ,)
        }
    }
}
impl IMTRJointFabricAdministratorClusterOpenJointCommissioningWindowParams
    for MTRJointFabricAdministratorClusterOpenJointCommissioningWindowParams
{
}
pub trait IMTRJointFabricAdministratorClusterOpenJointCommissioningWindowParams:
    Sized + std::ops::Deref
{
    unsafe fn commissioningTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, commissioningTimeout)
    }
    unsafe fn setCommissioningTimeout_(&self, commissioningTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCommissioningTimeout : commissioningTimeout)
    }
    unsafe fn pakePasscodeVerifier(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pakePasscodeVerifier)
    }
    unsafe fn setPakePasscodeVerifier_(&self, pakePasscodeVerifier: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPakePasscodeVerifier : pakePasscodeVerifier)
    }
    unsafe fn discriminator(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, discriminator)
    }
    unsafe fn setDiscriminator_(&self, discriminator: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDiscriminator : discriminator)
    }
    unsafe fn iterations(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, iterations)
    }
    unsafe fn setIterations_(&self, iterations: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIterations : iterations)
    }
    unsafe fn salt(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, salt)
    }
    unsafe fn setSalt_(&self, salt: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSalt : salt)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricAdministratorClusterTransferAnchorRequestParams(pub id);
impl std::ops::Deref for MTRJointFabricAdministratorClusterTransferAnchorRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricAdministratorClusterTransferAnchorRequestParams {}
impl MTRJointFabricAdministratorClusterTransferAnchorRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricAdministratorClusterTransferAnchorRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricAdministratorClusterTransferAnchorRequestParams {}
impl INSObject for MTRJointFabricAdministratorClusterTransferAnchorRequestParams {}
impl PNSObject for MTRJointFabricAdministratorClusterTransferAnchorRequestParams {}
impl std::convert::TryFrom<NSObject>
    for MTRJointFabricAdministratorClusterTransferAnchorRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricAdministratorClusterTransferAnchorRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricAdministratorClusterTransferAnchorRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricAdministratorClusterTransferAnchorRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricAdministratorClusterTransferAnchorRequestParams" ,)
        }
    }
}
impl IMTRJointFabricAdministratorClusterTransferAnchorRequestParams
    for MTRJointFabricAdministratorClusterTransferAnchorRequestParams
{
}
pub trait IMTRJointFabricAdministratorClusterTransferAnchorRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricAdministratorClusterTransferAnchorResponseParams(pub id);
impl std::ops::Deref for MTRJointFabricAdministratorClusterTransferAnchorResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricAdministratorClusterTransferAnchorResponseParams {}
impl MTRJointFabricAdministratorClusterTransferAnchorResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricAdministratorClusterTransferAnchorResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricAdministratorClusterTransferAnchorResponseParams {}
impl INSObject for MTRJointFabricAdministratorClusterTransferAnchorResponseParams {}
impl PNSObject for MTRJointFabricAdministratorClusterTransferAnchorResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRJointFabricAdministratorClusterTransferAnchorResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricAdministratorClusterTransferAnchorResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricAdministratorClusterTransferAnchorResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricAdministratorClusterTransferAnchorResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricAdministratorClusterTransferAnchorResponseParams" ,)
        }
    }
}
impl IMTRJointFabricAdministratorClusterTransferAnchorResponseParams
    for MTRJointFabricAdministratorClusterTransferAnchorResponseParams
{
}
pub trait IMTRJointFabricAdministratorClusterTransferAnchorResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn statusCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusCode)
    }
    unsafe fn setStatusCode_(&self, statusCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatusCode : statusCode)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricAdministratorClusterTransferAnchorCompleteParams(pub id);
impl std::ops::Deref for MTRJointFabricAdministratorClusterTransferAnchorCompleteParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRJointFabricAdministratorClusterTransferAnchorCompleteParams {}
impl MTRJointFabricAdministratorClusterTransferAnchorCompleteParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricAdministratorClusterTransferAnchorCompleteParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricAdministratorClusterTransferAnchorCompleteParams {}
impl INSObject for MTRJointFabricAdministratorClusterTransferAnchorCompleteParams {}
impl PNSObject for MTRJointFabricAdministratorClusterTransferAnchorCompleteParams {}
impl std::convert::TryFrom<NSObject>
    for MTRJointFabricAdministratorClusterTransferAnchorCompleteParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricAdministratorClusterTransferAnchorCompleteParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricAdministratorClusterTransferAnchorCompleteParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricAdministratorClusterTransferAnchorCompleteParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricAdministratorClusterTransferAnchorCompleteParams" ,)
        }
    }
}
impl IMTRJointFabricAdministratorClusterTransferAnchorCompleteParams
    for MTRJointFabricAdministratorClusterTransferAnchorCompleteParams
{
}
pub trait IMTRJointFabricAdministratorClusterTransferAnchorCompleteParams:
    Sized + std::ops::Deref
{
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRJointFabricAdministratorClusterAnnounceJointFabricAdministratorParams(pub id);
impl std::ops::Deref for MTRJointFabricAdministratorClusterAnnounceJointFabricAdministratorParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message
    for MTRJointFabricAdministratorClusterAnnounceJointFabricAdministratorParams
{
}
impl MTRJointFabricAdministratorClusterAnnounceJointFabricAdministratorParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRJointFabricAdministratorClusterAnnounceJointFabricAdministratorParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRJointFabricAdministratorClusterAnnounceJointFabricAdministratorParams {}
impl INSObject for MTRJointFabricAdministratorClusterAnnounceJointFabricAdministratorParams {}
impl PNSObject for MTRJointFabricAdministratorClusterAnnounceJointFabricAdministratorParams {}
impl std::convert::TryFrom<NSObject>
    for MTRJointFabricAdministratorClusterAnnounceJointFabricAdministratorParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRJointFabricAdministratorClusterAnnounceJointFabricAdministratorParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRJointFabricAdministratorClusterAnnounceJointFabricAdministratorParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRJointFabricAdministratorClusterAnnounceJointFabricAdministratorParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRJointFabricAdministratorClusterAnnounceJointFabricAdministratorParams" ,)
        }
    }
}
impl IMTRJointFabricAdministratorClusterAnnounceJointFabricAdministratorParams
    for MTRJointFabricAdministratorClusterAnnounceJointFabricAdministratorParams
{
}
pub trait IMTRJointFabricAdministratorClusterAnnounceJointFabricAdministratorParams:
    Sized + std::ops::Deref
{
    unsafe fn endpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpointID)
    }
    unsafe fn setEndpointID_(&self, endpointID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpointID : endpointID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSCertificateManagementClusterProvisionRootCertificateParams(pub id);
impl std::ops::Deref for MTRTLSCertificateManagementClusterProvisionRootCertificateParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTLSCertificateManagementClusterProvisionRootCertificateParams {}
impl MTRTLSCertificateManagementClusterProvisionRootCertificateParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterProvisionRootCertificateParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSCertificateManagementClusterProvisionRootCertificateParams {}
impl INSObject for MTRTLSCertificateManagementClusterProvisionRootCertificateParams {}
impl PNSObject for MTRTLSCertificateManagementClusterProvisionRootCertificateParams {}
impl std::convert::TryFrom<NSObject>
    for MTRTLSCertificateManagementClusterProvisionRootCertificateParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSCertificateManagementClusterProvisionRootCertificateParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterProvisionRootCertificateParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSCertificateManagementClusterProvisionRootCertificateParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSCertificateManagementClusterProvisionRootCertificateParams" ,)
        }
    }
}
impl IMTRTLSCertificateManagementClusterProvisionRootCertificateParams
    for MTRTLSCertificateManagementClusterProvisionRootCertificateParams
{
}
pub trait IMTRTLSCertificateManagementClusterProvisionRootCertificateParams:
    Sized + std::ops::Deref
{
    unsafe fn certificate(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, certificate)
    }
    unsafe fn setCertificate_(&self, certificate: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCertificate : certificate)
    }
    unsafe fn caid(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, caid)
    }
    unsafe fn setCaid_(&self, caid: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCaid : caid)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSCertificateManagementClusterProvisionRootCertificateResponseParams(pub id);
impl std::ops::Deref for MTRTLSCertificateManagementClusterProvisionRootCertificateResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message
    for MTRTLSCertificateManagementClusterProvisionRootCertificateResponseParams
{
}
impl MTRTLSCertificateManagementClusterProvisionRootCertificateResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterProvisionRootCertificateResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSCertificateManagementClusterProvisionRootCertificateResponseParams {}
impl INSObject for MTRTLSCertificateManagementClusterProvisionRootCertificateResponseParams {}
impl PNSObject for MTRTLSCertificateManagementClusterProvisionRootCertificateResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRTLSCertificateManagementClusterProvisionRootCertificateResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSCertificateManagementClusterProvisionRootCertificateResponseParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterProvisionRootCertificateResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSCertificateManagementClusterProvisionRootCertificateResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSCertificateManagementClusterProvisionRootCertificateResponseParams" ,)
        }
    }
}
impl IMTRTLSCertificateManagementClusterProvisionRootCertificateResponseParams
    for MTRTLSCertificateManagementClusterProvisionRootCertificateResponseParams
{
}
pub trait IMTRTLSCertificateManagementClusterProvisionRootCertificateResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn caid(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, caid)
    }
    unsafe fn setCaid_(&self, caid: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCaid : caid)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSCertificateManagementClusterFindRootCertificateParams(pub id);
impl std::ops::Deref for MTRTLSCertificateManagementClusterFindRootCertificateParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTLSCertificateManagementClusterFindRootCertificateParams {}
impl MTRTLSCertificateManagementClusterFindRootCertificateParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterFindRootCertificateParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSCertificateManagementClusterFindRootCertificateParams {}
impl INSObject for MTRTLSCertificateManagementClusterFindRootCertificateParams {}
impl PNSObject for MTRTLSCertificateManagementClusterFindRootCertificateParams {}
impl std::convert::TryFrom<NSObject>
    for MTRTLSCertificateManagementClusterFindRootCertificateParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSCertificateManagementClusterFindRootCertificateParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterFindRootCertificateParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSCertificateManagementClusterFindRootCertificateParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSCertificateManagementClusterFindRootCertificateParams" ,)
        }
    }
}
impl IMTRTLSCertificateManagementClusterFindRootCertificateParams
    for MTRTLSCertificateManagementClusterFindRootCertificateParams
{
}
pub trait IMTRTLSCertificateManagementClusterFindRootCertificateParams:
    Sized + std::ops::Deref
{
    unsafe fn caid(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, caid)
    }
    unsafe fn setCaid_(&self, caid: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCaid : caid)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSCertificateManagementClusterFindRootCertificateResponseParams(pub id);
impl std::ops::Deref for MTRTLSCertificateManagementClusterFindRootCertificateResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTLSCertificateManagementClusterFindRootCertificateResponseParams {}
impl MTRTLSCertificateManagementClusterFindRootCertificateResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterFindRootCertificateResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSCertificateManagementClusterFindRootCertificateResponseParams {}
impl INSObject for MTRTLSCertificateManagementClusterFindRootCertificateResponseParams {}
impl PNSObject for MTRTLSCertificateManagementClusterFindRootCertificateResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRTLSCertificateManagementClusterFindRootCertificateResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSCertificateManagementClusterFindRootCertificateResponseParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterFindRootCertificateResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSCertificateManagementClusterFindRootCertificateResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSCertificateManagementClusterFindRootCertificateResponseParams" ,)
        }
    }
}
impl IMTRTLSCertificateManagementClusterFindRootCertificateResponseParams
    for MTRTLSCertificateManagementClusterFindRootCertificateResponseParams
{
}
pub trait IMTRTLSCertificateManagementClusterFindRootCertificateResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn certificateDetails(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, certificateDetails)
    }
    unsafe fn setCertificateDetails_(&self, certificateDetails: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCertificateDetails : certificateDetails)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSCertificateManagementClusterLookupRootCertificateParams(pub id);
impl std::ops::Deref for MTRTLSCertificateManagementClusterLookupRootCertificateParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTLSCertificateManagementClusterLookupRootCertificateParams {}
impl MTRTLSCertificateManagementClusterLookupRootCertificateParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterLookupRootCertificateParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSCertificateManagementClusterLookupRootCertificateParams {}
impl INSObject for MTRTLSCertificateManagementClusterLookupRootCertificateParams {}
impl PNSObject for MTRTLSCertificateManagementClusterLookupRootCertificateParams {}
impl std::convert::TryFrom<NSObject>
    for MTRTLSCertificateManagementClusterLookupRootCertificateParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSCertificateManagementClusterLookupRootCertificateParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterLookupRootCertificateParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSCertificateManagementClusterLookupRootCertificateParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSCertificateManagementClusterLookupRootCertificateParams" ,)
        }
    }
}
impl IMTRTLSCertificateManagementClusterLookupRootCertificateParams
    for MTRTLSCertificateManagementClusterLookupRootCertificateParams
{
}
pub trait IMTRTLSCertificateManagementClusterLookupRootCertificateParams:
    Sized + std::ops::Deref
{
    unsafe fn fingerprint(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fingerprint)
    }
    unsafe fn setFingerprint_(&self, fingerprint: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFingerprint : fingerprint)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSCertificateManagementClusterLookupRootCertificateResponseParams(pub id);
impl std::ops::Deref for MTRTLSCertificateManagementClusterLookupRootCertificateResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message
    for MTRTLSCertificateManagementClusterLookupRootCertificateResponseParams
{
}
impl MTRTLSCertificateManagementClusterLookupRootCertificateResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterLookupRootCertificateResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSCertificateManagementClusterLookupRootCertificateResponseParams {}
impl INSObject for MTRTLSCertificateManagementClusterLookupRootCertificateResponseParams {}
impl PNSObject for MTRTLSCertificateManagementClusterLookupRootCertificateResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRTLSCertificateManagementClusterLookupRootCertificateResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSCertificateManagementClusterLookupRootCertificateResponseParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterLookupRootCertificateResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSCertificateManagementClusterLookupRootCertificateResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSCertificateManagementClusterLookupRootCertificateResponseParams" ,)
        }
    }
}
impl IMTRTLSCertificateManagementClusterLookupRootCertificateResponseParams
    for MTRTLSCertificateManagementClusterLookupRootCertificateResponseParams
{
}
pub trait IMTRTLSCertificateManagementClusterLookupRootCertificateResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn caid(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, caid)
    }
    unsafe fn setCaid_(&self, caid: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCaid : caid)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSCertificateManagementClusterRemoveRootCertificateParams(pub id);
impl std::ops::Deref for MTRTLSCertificateManagementClusterRemoveRootCertificateParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTLSCertificateManagementClusterRemoveRootCertificateParams {}
impl MTRTLSCertificateManagementClusterRemoveRootCertificateParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterRemoveRootCertificateParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSCertificateManagementClusterRemoveRootCertificateParams {}
impl INSObject for MTRTLSCertificateManagementClusterRemoveRootCertificateParams {}
impl PNSObject for MTRTLSCertificateManagementClusterRemoveRootCertificateParams {}
impl std::convert::TryFrom<NSObject>
    for MTRTLSCertificateManagementClusterRemoveRootCertificateParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSCertificateManagementClusterRemoveRootCertificateParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterRemoveRootCertificateParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSCertificateManagementClusterRemoveRootCertificateParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSCertificateManagementClusterRemoveRootCertificateParams" ,)
        }
    }
}
impl IMTRTLSCertificateManagementClusterRemoveRootCertificateParams
    for MTRTLSCertificateManagementClusterRemoveRootCertificateParams
{
}
pub trait IMTRTLSCertificateManagementClusterRemoveRootCertificateParams:
    Sized + std::ops::Deref
{
    unsafe fn caid(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, caid)
    }
    unsafe fn setCaid_(&self, caid: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCaid : caid)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSCertificateManagementClusterClientCSRParams(pub id);
impl std::ops::Deref for MTRTLSCertificateManagementClusterClientCSRParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTLSCertificateManagementClusterClientCSRParams {}
impl MTRTLSCertificateManagementClusterClientCSRParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterClientCSRParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSCertificateManagementClusterClientCSRParams {}
impl INSObject for MTRTLSCertificateManagementClusterClientCSRParams {}
impl PNSObject for MTRTLSCertificateManagementClusterClientCSRParams {}
impl std::convert::TryFrom<NSObject> for MTRTLSCertificateManagementClusterClientCSRParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSCertificateManagementClusterClientCSRParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterClientCSRParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSCertificateManagementClusterClientCSRParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSCertificateManagementClusterClientCSRParams" ,)
        }
    }
}
impl IMTRTLSCertificateManagementClusterClientCSRParams
    for MTRTLSCertificateManagementClusterClientCSRParams
{
}
pub trait IMTRTLSCertificateManagementClusterClientCSRParams: Sized + std::ops::Deref {
    unsafe fn nonce(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nonce)
    }
    unsafe fn setNonce_(&self, nonce: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNonce : nonce)
    }
    unsafe fn ccdid(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ccdid)
    }
    unsafe fn setCcdid_(&self, ccdid: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCcdid : ccdid)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSCertificateManagementClusterClientCSRResponseParams(pub id);
impl std::ops::Deref for MTRTLSCertificateManagementClusterClientCSRResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTLSCertificateManagementClusterClientCSRResponseParams {}
impl MTRTLSCertificateManagementClusterClientCSRResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterClientCSRResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSCertificateManagementClusterClientCSRResponseParams {}
impl INSObject for MTRTLSCertificateManagementClusterClientCSRResponseParams {}
impl PNSObject for MTRTLSCertificateManagementClusterClientCSRResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRTLSCertificateManagementClusterClientCSRResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSCertificateManagementClusterClientCSRResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterClientCSRResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSCertificateManagementClusterClientCSRResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSCertificateManagementClusterClientCSRResponseParams" ,)
        }
    }
}
impl IMTRTLSCertificateManagementClusterClientCSRResponseParams
    for MTRTLSCertificateManagementClusterClientCSRResponseParams
{
}
pub trait IMTRTLSCertificateManagementClusterClientCSRResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn ccdid(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ccdid)
    }
    unsafe fn setCcdid_(&self, ccdid: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCcdid : ccdid)
    }
    unsafe fn csr(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, csr)
    }
    unsafe fn setCsr_(&self, csr: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCsr : csr)
    }
    unsafe fn nonceSignature(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nonceSignature)
    }
    unsafe fn setNonceSignature_(&self, nonceSignature: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNonceSignature : nonceSignature)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSCertificateManagementClusterProvisionClientCertificateParams(pub id);
impl std::ops::Deref for MTRTLSCertificateManagementClusterProvisionClientCertificateParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTLSCertificateManagementClusterProvisionClientCertificateParams {}
impl MTRTLSCertificateManagementClusterProvisionClientCertificateParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterProvisionClientCertificateParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSCertificateManagementClusterProvisionClientCertificateParams {}
impl INSObject for MTRTLSCertificateManagementClusterProvisionClientCertificateParams {}
impl PNSObject for MTRTLSCertificateManagementClusterProvisionClientCertificateParams {}
impl std::convert::TryFrom<NSObject>
    for MTRTLSCertificateManagementClusterProvisionClientCertificateParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSCertificateManagementClusterProvisionClientCertificateParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterProvisionClientCertificateParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSCertificateManagementClusterProvisionClientCertificateParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSCertificateManagementClusterProvisionClientCertificateParams" ,)
        }
    }
}
impl IMTRTLSCertificateManagementClusterProvisionClientCertificateParams
    for MTRTLSCertificateManagementClusterProvisionClientCertificateParams
{
}
pub trait IMTRTLSCertificateManagementClusterProvisionClientCertificateParams:
    Sized + std::ops::Deref
{
    unsafe fn ccdid(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ccdid)
    }
    unsafe fn setCcdid_(&self, ccdid: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCcdid : ccdid)
    }
    unsafe fn clientCertificate(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, clientCertificate)
    }
    unsafe fn setClientCertificate_(&self, clientCertificate: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setClientCertificate : clientCertificate)
    }
    unsafe fn intermediateCertificates(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, intermediateCertificates)
    }
    unsafe fn setIntermediateCertificates_(&self, intermediateCertificates: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIntermediateCertificates : intermediateCertificates)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSCertificateManagementClusterFindClientCertificateParams(pub id);
impl std::ops::Deref for MTRTLSCertificateManagementClusterFindClientCertificateParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTLSCertificateManagementClusterFindClientCertificateParams {}
impl MTRTLSCertificateManagementClusterFindClientCertificateParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterFindClientCertificateParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSCertificateManagementClusterFindClientCertificateParams {}
impl INSObject for MTRTLSCertificateManagementClusterFindClientCertificateParams {}
impl PNSObject for MTRTLSCertificateManagementClusterFindClientCertificateParams {}
impl std::convert::TryFrom<NSObject>
    for MTRTLSCertificateManagementClusterFindClientCertificateParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSCertificateManagementClusterFindClientCertificateParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterFindClientCertificateParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSCertificateManagementClusterFindClientCertificateParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSCertificateManagementClusterFindClientCertificateParams" ,)
        }
    }
}
impl IMTRTLSCertificateManagementClusterFindClientCertificateParams
    for MTRTLSCertificateManagementClusterFindClientCertificateParams
{
}
pub trait IMTRTLSCertificateManagementClusterFindClientCertificateParams:
    Sized + std::ops::Deref
{
    unsafe fn ccdid(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ccdid)
    }
    unsafe fn setCcdid_(&self, ccdid: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCcdid : ccdid)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSCertificateManagementClusterFindClientCertificateResponseParams(pub id);
impl std::ops::Deref for MTRTLSCertificateManagementClusterFindClientCertificateResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message
    for MTRTLSCertificateManagementClusterFindClientCertificateResponseParams
{
}
impl MTRTLSCertificateManagementClusterFindClientCertificateResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterFindClientCertificateResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSCertificateManagementClusterFindClientCertificateResponseParams {}
impl INSObject for MTRTLSCertificateManagementClusterFindClientCertificateResponseParams {}
impl PNSObject for MTRTLSCertificateManagementClusterFindClientCertificateResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRTLSCertificateManagementClusterFindClientCertificateResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSCertificateManagementClusterFindClientCertificateResponseParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterFindClientCertificateResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSCertificateManagementClusterFindClientCertificateResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSCertificateManagementClusterFindClientCertificateResponseParams" ,)
        }
    }
}
impl IMTRTLSCertificateManagementClusterFindClientCertificateResponseParams
    for MTRTLSCertificateManagementClusterFindClientCertificateResponseParams
{
}
pub trait IMTRTLSCertificateManagementClusterFindClientCertificateResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn certificateDetails(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, certificateDetails)
    }
    unsafe fn setCertificateDetails_(&self, certificateDetails: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCertificateDetails : certificateDetails)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSCertificateManagementClusterLookupClientCertificateParams(pub id);
impl std::ops::Deref for MTRTLSCertificateManagementClusterLookupClientCertificateParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTLSCertificateManagementClusterLookupClientCertificateParams {}
impl MTRTLSCertificateManagementClusterLookupClientCertificateParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterLookupClientCertificateParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSCertificateManagementClusterLookupClientCertificateParams {}
impl INSObject for MTRTLSCertificateManagementClusterLookupClientCertificateParams {}
impl PNSObject for MTRTLSCertificateManagementClusterLookupClientCertificateParams {}
impl std::convert::TryFrom<NSObject>
    for MTRTLSCertificateManagementClusterLookupClientCertificateParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSCertificateManagementClusterLookupClientCertificateParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterLookupClientCertificateParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSCertificateManagementClusterLookupClientCertificateParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSCertificateManagementClusterLookupClientCertificateParams" ,)
        }
    }
}
impl IMTRTLSCertificateManagementClusterLookupClientCertificateParams
    for MTRTLSCertificateManagementClusterLookupClientCertificateParams
{
}
pub trait IMTRTLSCertificateManagementClusterLookupClientCertificateParams:
    Sized + std::ops::Deref
{
    unsafe fn fingerprint(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fingerprint)
    }
    unsafe fn setFingerprint_(&self, fingerprint: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFingerprint : fingerprint)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSCertificateManagementClusterLookupClientCertificateResponseParams(pub id);
impl std::ops::Deref for MTRTLSCertificateManagementClusterLookupClientCertificateResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message
    for MTRTLSCertificateManagementClusterLookupClientCertificateResponseParams
{
}
impl MTRTLSCertificateManagementClusterLookupClientCertificateResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterLookupClientCertificateResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSCertificateManagementClusterLookupClientCertificateResponseParams {}
impl INSObject for MTRTLSCertificateManagementClusterLookupClientCertificateResponseParams {}
impl PNSObject for MTRTLSCertificateManagementClusterLookupClientCertificateResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRTLSCertificateManagementClusterLookupClientCertificateResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSCertificateManagementClusterLookupClientCertificateResponseParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterLookupClientCertificateResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSCertificateManagementClusterLookupClientCertificateResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSCertificateManagementClusterLookupClientCertificateResponseParams" ,)
        }
    }
}
impl IMTRTLSCertificateManagementClusterLookupClientCertificateResponseParams
    for MTRTLSCertificateManagementClusterLookupClientCertificateResponseParams
{
}
pub trait IMTRTLSCertificateManagementClusterLookupClientCertificateResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn ccdid(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ccdid)
    }
    unsafe fn setCcdid_(&self, ccdid: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCcdid : ccdid)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSCertificateManagementClusterRemoveClientCertificateParams(pub id);
impl std::ops::Deref for MTRTLSCertificateManagementClusterRemoveClientCertificateParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTLSCertificateManagementClusterRemoveClientCertificateParams {}
impl MTRTLSCertificateManagementClusterRemoveClientCertificateParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterRemoveClientCertificateParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSCertificateManagementClusterRemoveClientCertificateParams {}
impl INSObject for MTRTLSCertificateManagementClusterRemoveClientCertificateParams {}
impl PNSObject for MTRTLSCertificateManagementClusterRemoveClientCertificateParams {}
impl std::convert::TryFrom<NSObject>
    for MTRTLSCertificateManagementClusterRemoveClientCertificateParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSCertificateManagementClusterRemoveClientCertificateParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSCertificateManagementClusterRemoveClientCertificateParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSCertificateManagementClusterRemoveClientCertificateParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSCertificateManagementClusterRemoveClientCertificateParams" ,)
        }
    }
}
impl IMTRTLSCertificateManagementClusterRemoveClientCertificateParams
    for MTRTLSCertificateManagementClusterRemoveClientCertificateParams
{
}
pub trait IMTRTLSCertificateManagementClusterRemoveClientCertificateParams:
    Sized + std::ops::Deref
{
    unsafe fn ccdid(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ccdid)
    }
    unsafe fn setCcdid_(&self, ccdid: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCcdid : ccdid)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSClientManagementClusterProvisionEndpointParams(pub id);
impl std::ops::Deref for MTRTLSClientManagementClusterProvisionEndpointParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTLSClientManagementClusterProvisionEndpointParams {}
impl MTRTLSClientManagementClusterProvisionEndpointParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSClientManagementClusterProvisionEndpointParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSClientManagementClusterProvisionEndpointParams {}
impl INSObject for MTRTLSClientManagementClusterProvisionEndpointParams {}
impl PNSObject for MTRTLSClientManagementClusterProvisionEndpointParams {}
impl std::convert::TryFrom<NSObject> for MTRTLSClientManagementClusterProvisionEndpointParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSClientManagementClusterProvisionEndpointParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSClientManagementClusterProvisionEndpointParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSClientManagementClusterProvisionEndpointParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSClientManagementClusterProvisionEndpointParams" ,)
        }
    }
}
impl IMTRTLSClientManagementClusterProvisionEndpointParams
    for MTRTLSClientManagementClusterProvisionEndpointParams
{
}
pub trait IMTRTLSClientManagementClusterProvisionEndpointParams: Sized + std::ops::Deref {
    unsafe fn hostname(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hostname)
    }
    unsafe fn setHostname_(&self, hostname: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHostname : hostname)
    }
    unsafe fn port(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, port)
    }
    unsafe fn setPort_(&self, port: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPort : port)
    }
    unsafe fn caid(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, caid)
    }
    unsafe fn setCaid_(&self, caid: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCaid : caid)
    }
    unsafe fn ccdid(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ccdid)
    }
    unsafe fn setCcdid_(&self, ccdid: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCcdid : ccdid)
    }
    unsafe fn endpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpointID)
    }
    unsafe fn setEndpointID_(&self, endpointID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpointID : endpointID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSClientManagementClusterProvisionEndpointResponseParams(pub id);
impl std::ops::Deref for MTRTLSClientManagementClusterProvisionEndpointResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTLSClientManagementClusterProvisionEndpointResponseParams {}
impl MTRTLSClientManagementClusterProvisionEndpointResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSClientManagementClusterProvisionEndpointResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSClientManagementClusterProvisionEndpointResponseParams {}
impl INSObject for MTRTLSClientManagementClusterProvisionEndpointResponseParams {}
impl PNSObject for MTRTLSClientManagementClusterProvisionEndpointResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRTLSClientManagementClusterProvisionEndpointResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSClientManagementClusterProvisionEndpointResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSClientManagementClusterProvisionEndpointResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSClientManagementClusterProvisionEndpointResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSClientManagementClusterProvisionEndpointResponseParams" ,)
        }
    }
}
impl IMTRTLSClientManagementClusterProvisionEndpointResponseParams
    for MTRTLSClientManagementClusterProvisionEndpointResponseParams
{
}
pub trait IMTRTLSClientManagementClusterProvisionEndpointResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn endpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpointID)
    }
    unsafe fn setEndpointID_(&self, endpointID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpointID : endpointID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSClientManagementClusterFindEndpointParams(pub id);
impl std::ops::Deref for MTRTLSClientManagementClusterFindEndpointParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTLSClientManagementClusterFindEndpointParams {}
impl MTRTLSClientManagementClusterFindEndpointParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSClientManagementClusterFindEndpointParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSClientManagementClusterFindEndpointParams {}
impl INSObject for MTRTLSClientManagementClusterFindEndpointParams {}
impl PNSObject for MTRTLSClientManagementClusterFindEndpointParams {}
impl std::convert::TryFrom<NSObject> for MTRTLSClientManagementClusterFindEndpointParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSClientManagementClusterFindEndpointParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSClientManagementClusterFindEndpointParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSClientManagementClusterFindEndpointParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSClientManagementClusterFindEndpointParams" ,)
        }
    }
}
impl IMTRTLSClientManagementClusterFindEndpointParams
    for MTRTLSClientManagementClusterFindEndpointParams
{
}
pub trait IMTRTLSClientManagementClusterFindEndpointParams: Sized + std::ops::Deref {
    unsafe fn endpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpointID)
    }
    unsafe fn setEndpointID_(&self, endpointID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpointID : endpointID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSClientManagementClusterFindEndpointResponseParams(pub id);
impl std::ops::Deref for MTRTLSClientManagementClusterFindEndpointResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTLSClientManagementClusterFindEndpointResponseParams {}
impl MTRTLSClientManagementClusterFindEndpointResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSClientManagementClusterFindEndpointResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSClientManagementClusterFindEndpointResponseParams {}
impl INSObject for MTRTLSClientManagementClusterFindEndpointResponseParams {}
impl PNSObject for MTRTLSClientManagementClusterFindEndpointResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRTLSClientManagementClusterFindEndpointResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSClientManagementClusterFindEndpointResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSClientManagementClusterFindEndpointResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSClientManagementClusterFindEndpointResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSClientManagementClusterFindEndpointResponseParams" ,)
        }
    }
}
impl IMTRTLSClientManagementClusterFindEndpointResponseParams
    for MTRTLSClientManagementClusterFindEndpointResponseParams
{
}
pub trait IMTRTLSClientManagementClusterFindEndpointResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn endpoint(&self) -> MTRTLSClientManagementClusterTLSEndpointStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn setEndpoint_(&self, endpoint: MTRTLSClientManagementClusterTLSEndpointStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpoint : endpoint)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTLSClientManagementClusterRemoveEndpointParams(pub id);
impl std::ops::Deref for MTRTLSClientManagementClusterRemoveEndpointParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTLSClientManagementClusterRemoveEndpointParams {}
impl MTRTLSClientManagementClusterRemoveEndpointParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTLSClientManagementClusterRemoveEndpointParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRTLSClientManagementClusterRemoveEndpointParams {}
impl INSObject for MTRTLSClientManagementClusterRemoveEndpointParams {}
impl PNSObject for MTRTLSClientManagementClusterRemoveEndpointParams {}
impl std::convert::TryFrom<NSObject> for MTRTLSClientManagementClusterRemoveEndpointParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRTLSClientManagementClusterRemoveEndpointParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTLSClientManagementClusterRemoveEndpointParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTLSClientManagementClusterRemoveEndpointParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRTLSClientManagementClusterRemoveEndpointParams" ,)
        }
    }
}
impl IMTRTLSClientManagementClusterRemoveEndpointParams
    for MTRTLSClientManagementClusterRemoveEndpointParams
{
}
pub trait IMTRTLSClientManagementClusterRemoveEndpointParams: Sized + std::ops::Deref {
    unsafe fn endpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpointID)
    }
    unsafe fn setEndpointID_(&self, endpointID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndpointID : endpointID)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestParams {}
impl MTRUnitTestingClusterTestParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestParams {}
impl INSObject for MTRUnitTestingClusterTestParams {}
impl PNSObject for MTRUnitTestingClusterTestParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRUnitTestingClusterTestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRUnitTestingClusterTestParams")
        }
    }
}
impl IMTRUnitTestingClusterTestParams for MTRUnitTestingClusterTestParams {}
pub trait IMTRUnitTestingClusterTestParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestParams {}
impl MTRTestClusterClusterTestParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestParams").unwrap(), alloc) })
    }
}
impl IMTRUnitTestingClusterTestParams for MTRTestClusterClusterTestParams {}
impl PNSCopying for MTRTestClusterClusterTestParams {}
impl From<MTRTestClusterClusterTestParams> for MTRUnitTestingClusterTestParams {
    fn from(child: MTRTestClusterClusterTestParams) -> MTRUnitTestingClusterTestParams {
        MTRUnitTestingClusterTestParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestParams> for MTRTestClusterClusterTestParams {
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestParams,
    ) -> Result<MTRTestClusterClusterTestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestParams(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterTestParams cannot be downcasted to MTRTestClusterClusterTestParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestParams {}
impl PNSObject for MTRTestClusterClusterTestParams {}
impl IMTRTestClusterClusterTestParams for MTRTestClusterClusterTestParams {}
pub trait IMTRTestClusterClusterTestParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestSpecificResponseParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestSpecificResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestSpecificResponseParams {}
impl MTRUnitTestingClusterTestSpecificResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestSpecificResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestSpecificResponseParams {}
impl INSObject for MTRUnitTestingClusterTestSpecificResponseParams {}
impl PNSObject for MTRUnitTestingClusterTestSpecificResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestSpecificResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestSpecificResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestSpecificResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestSpecificResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestSpecificResponseParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestSpecificResponseParams
    for MTRUnitTestingClusterTestSpecificResponseParams
{
}
pub trait IMTRUnitTestingClusterTestSpecificResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn returnValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, returnValue)
    }
    unsafe fn setReturnValue_(&self, returnValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReturnValue : returnValue)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestSpecificResponseParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestSpecificResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestSpecificResponseParams {}
impl MTRTestClusterClusterTestSpecificResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestSpecificResponseParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestSpecificResponseParams
    for MTRTestClusterClusterTestSpecificResponseParams
{
}
impl PNSCopying for MTRTestClusterClusterTestSpecificResponseParams {}
impl From<MTRTestClusterClusterTestSpecificResponseParams>
    for MTRUnitTestingClusterTestSpecificResponseParams
{
    fn from(
        child: MTRTestClusterClusterTestSpecificResponseParams,
    ) -> MTRUnitTestingClusterTestSpecificResponseParams {
        MTRUnitTestingClusterTestSpecificResponseParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestSpecificResponseParams>
    for MTRTestClusterClusterTestSpecificResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestSpecificResponseParams,
    ) -> Result<MTRTestClusterClusterTestSpecificResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestSpecificResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestSpecificResponseParams(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterTestSpecificResponseParams cannot be downcasted to MTRTestClusterClusterTestSpecificResponseParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestSpecificResponseParams {}
impl PNSObject for MTRTestClusterClusterTestSpecificResponseParams {}
impl IMTRTestClusterClusterTestSpecificResponseParams
    for MTRTestClusterClusterTestSpecificResponseParams
{
}
pub trait IMTRTestClusterClusterTestSpecificResponseParams: Sized + std::ops::Deref {
    unsafe fn returnValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, returnValue)
    }
    unsafe fn setReturnValue_(&self, returnValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReturnValue : returnValue)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestNotHandledParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestNotHandledParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestNotHandledParams {}
impl MTRUnitTestingClusterTestNotHandledParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestNotHandledParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestNotHandledParams {}
impl INSObject for MTRUnitTestingClusterTestNotHandledParams {}
impl PNSObject for MTRUnitTestingClusterTestNotHandledParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestNotHandledParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestNotHandledParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestNotHandledParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestNotHandledParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRUnitTestingClusterTestNotHandledParams")
        }
    }
}
impl IMTRUnitTestingClusterTestNotHandledParams for MTRUnitTestingClusterTestNotHandledParams {}
pub trait IMTRUnitTestingClusterTestNotHandledParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestNotHandledParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestNotHandledParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestNotHandledParams {}
impl MTRTestClusterClusterTestNotHandledParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestNotHandledParams").unwrap(), alloc) })
    }
}
impl IMTRUnitTestingClusterTestNotHandledParams for MTRTestClusterClusterTestNotHandledParams {}
impl PNSCopying for MTRTestClusterClusterTestNotHandledParams {}
impl From<MTRTestClusterClusterTestNotHandledParams> for MTRUnitTestingClusterTestNotHandledParams {
    fn from(
        child: MTRTestClusterClusterTestNotHandledParams,
    ) -> MTRUnitTestingClusterTestNotHandledParams {
        MTRUnitTestingClusterTestNotHandledParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestNotHandledParams>
    for MTRTestClusterClusterTestNotHandledParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestNotHandledParams,
    ) -> Result<MTRTestClusterClusterTestNotHandledParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestNotHandledParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestNotHandledParams(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterTestNotHandledParams cannot be downcasted to MTRTestClusterClusterTestNotHandledParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestNotHandledParams {}
impl PNSObject for MTRTestClusterClusterTestNotHandledParams {}
impl IMTRTestClusterClusterTestNotHandledParams for MTRTestClusterClusterTestNotHandledParams {}
pub trait IMTRTestClusterClusterTestNotHandledParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestAddArgumentsResponseParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestAddArgumentsResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestAddArgumentsResponseParams {}
impl MTRUnitTestingClusterTestAddArgumentsResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestAddArgumentsResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestAddArgumentsResponseParams {}
impl INSObject for MTRUnitTestingClusterTestAddArgumentsResponseParams {}
impl PNSObject for MTRUnitTestingClusterTestAddArgumentsResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestAddArgumentsResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestAddArgumentsResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestAddArgumentsResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestAddArgumentsResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestAddArgumentsResponseParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestAddArgumentsResponseParams
    for MTRUnitTestingClusterTestAddArgumentsResponseParams
{
}
pub trait IMTRUnitTestingClusterTestAddArgumentsResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn returnValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, returnValue)
    }
    unsafe fn setReturnValue_(&self, returnValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReturnValue : returnValue)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestAddArgumentsResponseParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestAddArgumentsResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestAddArgumentsResponseParams {}
impl MTRTestClusterClusterTestAddArgumentsResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestAddArgumentsResponseParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestAddArgumentsResponseParams
    for MTRTestClusterClusterTestAddArgumentsResponseParams
{
}
impl PNSCopying for MTRTestClusterClusterTestAddArgumentsResponseParams {}
impl From<MTRTestClusterClusterTestAddArgumentsResponseParams>
    for MTRUnitTestingClusterTestAddArgumentsResponseParams
{
    fn from(
        child: MTRTestClusterClusterTestAddArgumentsResponseParams,
    ) -> MTRUnitTestingClusterTestAddArgumentsResponseParams {
        MTRUnitTestingClusterTestAddArgumentsResponseParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestAddArgumentsResponseParams>
    for MTRTestClusterClusterTestAddArgumentsResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestAddArgumentsResponseParams,
    ) -> Result<MTRTestClusterClusterTestAddArgumentsResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestAddArgumentsResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestAddArgumentsResponseParams(
                parent.0,
            ))
        } else {
            Err ("This MTRUnitTestingClusterTestAddArgumentsResponseParams cannot be downcasted to MTRTestClusterClusterTestAddArgumentsResponseParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestAddArgumentsResponseParams {}
impl PNSObject for MTRTestClusterClusterTestAddArgumentsResponseParams {}
impl IMTRTestClusterClusterTestAddArgumentsResponseParams
    for MTRTestClusterClusterTestAddArgumentsResponseParams
{
}
pub trait IMTRTestClusterClusterTestAddArgumentsResponseParams: Sized + std::ops::Deref {
    unsafe fn returnValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, returnValue)
    }
    unsafe fn setReturnValue_(&self, returnValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReturnValue : returnValue)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestSpecificParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestSpecificParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestSpecificParams {}
impl MTRUnitTestingClusterTestSpecificParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestSpecificParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestSpecificParams {}
impl INSObject for MTRUnitTestingClusterTestSpecificParams {}
impl PNSObject for MTRUnitTestingClusterTestSpecificParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestSpecificParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRUnitTestingClusterTestSpecificParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestSpecificParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestSpecificParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRUnitTestingClusterTestSpecificParams")
        }
    }
}
impl IMTRUnitTestingClusterTestSpecificParams for MTRUnitTestingClusterTestSpecificParams {}
pub trait IMTRUnitTestingClusterTestSpecificParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestSpecificParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestSpecificParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestSpecificParams {}
impl MTRTestClusterClusterTestSpecificParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestSpecificParams").unwrap(), alloc) })
    }
}
impl IMTRUnitTestingClusterTestSpecificParams for MTRTestClusterClusterTestSpecificParams {}
impl PNSCopying for MTRTestClusterClusterTestSpecificParams {}
impl From<MTRTestClusterClusterTestSpecificParams> for MTRUnitTestingClusterTestSpecificParams {
    fn from(
        child: MTRTestClusterClusterTestSpecificParams,
    ) -> MTRUnitTestingClusterTestSpecificParams {
        MTRUnitTestingClusterTestSpecificParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestSpecificParams>
    for MTRTestClusterClusterTestSpecificParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestSpecificParams,
    ) -> Result<MTRTestClusterClusterTestSpecificParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestSpecificParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestSpecificParams(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterTestSpecificParams cannot be downcasted to MTRTestClusterClusterTestSpecificParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestSpecificParams {}
impl PNSObject for MTRTestClusterClusterTestSpecificParams {}
impl IMTRTestClusterClusterTestSpecificParams for MTRTestClusterClusterTestSpecificParams {}
pub trait IMTRTestClusterClusterTestSpecificParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestSimpleArgumentResponseParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestSimpleArgumentResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestSimpleArgumentResponseParams {}
impl MTRUnitTestingClusterTestSimpleArgumentResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestSimpleArgumentResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestSimpleArgumentResponseParams {}
impl INSObject for MTRUnitTestingClusterTestSimpleArgumentResponseParams {}
impl PNSObject for MTRUnitTestingClusterTestSimpleArgumentResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestSimpleArgumentResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestSimpleArgumentResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestSimpleArgumentResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestSimpleArgumentResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestSimpleArgumentResponseParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestSimpleArgumentResponseParams
    for MTRUnitTestingClusterTestSimpleArgumentResponseParams
{
}
pub trait IMTRUnitTestingClusterTestSimpleArgumentResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn returnValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, returnValue)
    }
    unsafe fn setReturnValue_(&self, returnValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReturnValue : returnValue)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestSimpleArgumentResponseParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestSimpleArgumentResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestSimpleArgumentResponseParams {}
impl MTRTestClusterClusterTestSimpleArgumentResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestSimpleArgumentResponseParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestSimpleArgumentResponseParams
    for MTRTestClusterClusterTestSimpleArgumentResponseParams
{
}
impl PNSCopying for MTRTestClusterClusterTestSimpleArgumentResponseParams {}
impl From<MTRTestClusterClusterTestSimpleArgumentResponseParams>
    for MTRUnitTestingClusterTestSimpleArgumentResponseParams
{
    fn from(
        child: MTRTestClusterClusterTestSimpleArgumentResponseParams,
    ) -> MTRUnitTestingClusterTestSimpleArgumentResponseParams {
        MTRUnitTestingClusterTestSimpleArgumentResponseParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestSimpleArgumentResponseParams>
    for MTRTestClusterClusterTestSimpleArgumentResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestSimpleArgumentResponseParams,
    ) -> Result<MTRTestClusterClusterTestSimpleArgumentResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestSimpleArgumentResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestSimpleArgumentResponseParams(
                parent.0,
            ))
        } else {
            Err ("This MTRUnitTestingClusterTestSimpleArgumentResponseParams cannot be downcasted to MTRTestClusterClusterTestSimpleArgumentResponseParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestSimpleArgumentResponseParams {}
impl PNSObject for MTRTestClusterClusterTestSimpleArgumentResponseParams {}
impl IMTRTestClusterClusterTestSimpleArgumentResponseParams
    for MTRTestClusterClusterTestSimpleArgumentResponseParams
{
}
pub trait IMTRTestClusterClusterTestSimpleArgumentResponseParams: Sized + std::ops::Deref {
    unsafe fn returnValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, returnValue)
    }
    unsafe fn setReturnValue_(&self, returnValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReturnValue : returnValue)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestUnknownCommandParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestUnknownCommandParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestUnknownCommandParams {}
impl MTRUnitTestingClusterTestUnknownCommandParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestUnknownCommandParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestUnknownCommandParams {}
impl INSObject for MTRUnitTestingClusterTestUnknownCommandParams {}
impl PNSObject for MTRUnitTestingClusterTestUnknownCommandParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestUnknownCommandParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestUnknownCommandParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestUnknownCommandParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestUnknownCommandParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestUnknownCommandParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestUnknownCommandParams
    for MTRUnitTestingClusterTestUnknownCommandParams
{
}
pub trait IMTRUnitTestingClusterTestUnknownCommandParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestUnknownCommandParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestUnknownCommandParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestUnknownCommandParams {}
impl MTRTestClusterClusterTestUnknownCommandParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestUnknownCommandParams").unwrap(), alloc) })
    }
}
impl IMTRUnitTestingClusterTestUnknownCommandParams
    for MTRTestClusterClusterTestUnknownCommandParams
{
}
impl PNSCopying for MTRTestClusterClusterTestUnknownCommandParams {}
impl From<MTRTestClusterClusterTestUnknownCommandParams>
    for MTRUnitTestingClusterTestUnknownCommandParams
{
    fn from(
        child: MTRTestClusterClusterTestUnknownCommandParams,
    ) -> MTRUnitTestingClusterTestUnknownCommandParams {
        MTRUnitTestingClusterTestUnknownCommandParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestUnknownCommandParams>
    for MTRTestClusterClusterTestUnknownCommandParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestUnknownCommandParams,
    ) -> Result<MTRTestClusterClusterTestUnknownCommandParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestUnknownCommandParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestUnknownCommandParams(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterTestUnknownCommandParams cannot be downcasted to MTRTestClusterClusterTestUnknownCommandParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestUnknownCommandParams {}
impl PNSObject for MTRTestClusterClusterTestUnknownCommandParams {}
impl IMTRTestClusterClusterTestUnknownCommandParams
    for MTRTestClusterClusterTestUnknownCommandParams
{
}
pub trait IMTRTestClusterClusterTestUnknownCommandParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestStructArrayArgumentResponseParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestStructArrayArgumentResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestStructArrayArgumentResponseParams {}
impl MTRUnitTestingClusterTestStructArrayArgumentResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestStructArrayArgumentResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestStructArrayArgumentResponseParams {}
impl INSObject for MTRUnitTestingClusterTestStructArrayArgumentResponseParams {}
impl PNSObject for MTRUnitTestingClusterTestStructArrayArgumentResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRUnitTestingClusterTestStructArrayArgumentResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestStructArrayArgumentResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestStructArrayArgumentResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestStructArrayArgumentResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestStructArrayArgumentResponseParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestStructArrayArgumentResponseParams
    for MTRUnitTestingClusterTestStructArrayArgumentResponseParams
{
}
pub trait IMTRUnitTestingClusterTestStructArrayArgumentResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn arg1(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn arg2(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg2)
    }
    unsafe fn setArg2_(&self, arg2: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg2 : arg2)
    }
    unsafe fn arg3(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg3)
    }
    unsafe fn setArg3_(&self, arg3: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg3 : arg3)
    }
    unsafe fn arg4(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg4)
    }
    unsafe fn setArg4_(&self, arg4: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg4 : arg4)
    }
    unsafe fn arg5(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg5)
    }
    unsafe fn setArg5_(&self, arg5: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg5 : arg5)
    }
    unsafe fn arg6(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg6)
    }
    unsafe fn setArg6_(&self, arg6: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg6 : arg6)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestStructArrayArgumentResponseParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestStructArrayArgumentResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestStructArrayArgumentResponseParams {}
impl MTRTestClusterClusterTestStructArrayArgumentResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestStructArrayArgumentResponseParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestStructArrayArgumentResponseParams
    for MTRTestClusterClusterTestStructArrayArgumentResponseParams
{
}
impl PNSCopying for MTRTestClusterClusterTestStructArrayArgumentResponseParams {}
impl From<MTRTestClusterClusterTestStructArrayArgumentResponseParams>
    for MTRUnitTestingClusterTestStructArrayArgumentResponseParams
{
    fn from(
        child: MTRTestClusterClusterTestStructArrayArgumentResponseParams,
    ) -> MTRUnitTestingClusterTestStructArrayArgumentResponseParams {
        MTRUnitTestingClusterTestStructArrayArgumentResponseParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestStructArrayArgumentResponseParams>
    for MTRTestClusterClusterTestStructArrayArgumentResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestStructArrayArgumentResponseParams,
    ) -> Result<MTRTestClusterClusterTestStructArrayArgumentResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestStructArrayArgumentResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestStructArrayArgumentResponseParams(
                parent.0,
            ))
        } else {
            Err ("This MTRUnitTestingClusterTestStructArrayArgumentResponseParams cannot be downcasted to MTRTestClusterClusterTestStructArrayArgumentResponseParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestStructArrayArgumentResponseParams {}
impl PNSObject for MTRTestClusterClusterTestStructArrayArgumentResponseParams {}
impl IMTRTestClusterClusterTestStructArrayArgumentResponseParams
    for MTRTestClusterClusterTestStructArrayArgumentResponseParams
{
}
pub trait IMTRTestClusterClusterTestStructArrayArgumentResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn arg1(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn arg2(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg2)
    }
    unsafe fn setArg2_(&self, arg2: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg2 : arg2)
    }
    unsafe fn arg3(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg3)
    }
    unsafe fn setArg3_(&self, arg3: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg3 : arg3)
    }
    unsafe fn arg4(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg4)
    }
    unsafe fn setArg4_(&self, arg4: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg4 : arg4)
    }
    unsafe fn arg5(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg5)
    }
    unsafe fn setArg5_(&self, arg5: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg5 : arg5)
    }
    unsafe fn arg6(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg6)
    }
    unsafe fn setArg6_(&self, arg6: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg6 : arg6)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestAddArgumentsParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestAddArgumentsParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestAddArgumentsParams {}
impl MTRUnitTestingClusterTestAddArgumentsParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestAddArgumentsParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestAddArgumentsParams {}
impl INSObject for MTRUnitTestingClusterTestAddArgumentsParams {}
impl PNSObject for MTRUnitTestingClusterTestAddArgumentsParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestAddArgumentsParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestAddArgumentsParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestAddArgumentsParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestAddArgumentsParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRUnitTestingClusterTestAddArgumentsParams")
        }
    }
}
impl IMTRUnitTestingClusterTestAddArgumentsParams for MTRUnitTestingClusterTestAddArgumentsParams {}
pub trait IMTRUnitTestingClusterTestAddArgumentsParams: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn arg2(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg2)
    }
    unsafe fn setArg2_(&self, arg2: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg2 : arg2)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestAddArgumentsParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestAddArgumentsParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestAddArgumentsParams {}
impl MTRTestClusterClusterTestAddArgumentsParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestAddArgumentsParams").unwrap(), alloc) })
    }
}
impl IMTRUnitTestingClusterTestAddArgumentsParams for MTRTestClusterClusterTestAddArgumentsParams {}
impl PNSCopying for MTRTestClusterClusterTestAddArgumentsParams {}
impl From<MTRTestClusterClusterTestAddArgumentsParams>
    for MTRUnitTestingClusterTestAddArgumentsParams
{
    fn from(
        child: MTRTestClusterClusterTestAddArgumentsParams,
    ) -> MTRUnitTestingClusterTestAddArgumentsParams {
        MTRUnitTestingClusterTestAddArgumentsParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestAddArgumentsParams>
    for MTRTestClusterClusterTestAddArgumentsParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestAddArgumentsParams,
    ) -> Result<MTRTestClusterClusterTestAddArgumentsParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestAddArgumentsParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestAddArgumentsParams(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterTestAddArgumentsParams cannot be downcasted to MTRTestClusterClusterTestAddArgumentsParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestAddArgumentsParams {}
impl PNSObject for MTRTestClusterClusterTestAddArgumentsParams {}
impl IMTRTestClusterClusterTestAddArgumentsParams for MTRTestClusterClusterTestAddArgumentsParams {}
pub trait IMTRTestClusterClusterTestAddArgumentsParams: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn arg2(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg2)
    }
    unsafe fn setArg2_(&self, arg2: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg2 : arg2)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestListInt8UReverseResponseParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestListInt8UReverseResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestListInt8UReverseResponseParams {}
impl MTRUnitTestingClusterTestListInt8UReverseResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestListInt8UReverseResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestListInt8UReverseResponseParams {}
impl INSObject for MTRUnitTestingClusterTestListInt8UReverseResponseParams {}
impl PNSObject for MTRUnitTestingClusterTestListInt8UReverseResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestListInt8UReverseResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestListInt8UReverseResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestListInt8UReverseResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestListInt8UReverseResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestListInt8UReverseResponseParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestListInt8UReverseResponseParams
    for MTRUnitTestingClusterTestListInt8UReverseResponseParams
{
}
pub trait IMTRUnitTestingClusterTestListInt8UReverseResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn arg1(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestListInt8UReverseResponseParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestListInt8UReverseResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestListInt8UReverseResponseParams {}
impl MTRTestClusterClusterTestListInt8UReverseResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestListInt8UReverseResponseParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestListInt8UReverseResponseParams
    for MTRTestClusterClusterTestListInt8UReverseResponseParams
{
}
impl PNSCopying for MTRTestClusterClusterTestListInt8UReverseResponseParams {}
impl From<MTRTestClusterClusterTestListInt8UReverseResponseParams>
    for MTRUnitTestingClusterTestListInt8UReverseResponseParams
{
    fn from(
        child: MTRTestClusterClusterTestListInt8UReverseResponseParams,
    ) -> MTRUnitTestingClusterTestListInt8UReverseResponseParams {
        MTRUnitTestingClusterTestListInt8UReverseResponseParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestListInt8UReverseResponseParams>
    for MTRTestClusterClusterTestListInt8UReverseResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestListInt8UReverseResponseParams,
    ) -> Result<MTRTestClusterClusterTestListInt8UReverseResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestListInt8UReverseResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestListInt8UReverseResponseParams(
                parent.0,
            ))
        } else {
            Err ("This MTRUnitTestingClusterTestListInt8UReverseResponseParams cannot be downcasted to MTRTestClusterClusterTestListInt8UReverseResponseParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestListInt8UReverseResponseParams {}
impl PNSObject for MTRTestClusterClusterTestListInt8UReverseResponseParams {}
impl IMTRTestClusterClusterTestListInt8UReverseResponseParams
    for MTRTestClusterClusterTestListInt8UReverseResponseParams
{
}
pub trait IMTRTestClusterClusterTestListInt8UReverseResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn arg1(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestSimpleArgumentRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestSimpleArgumentRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestSimpleArgumentRequestParams {}
impl MTRUnitTestingClusterTestSimpleArgumentRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestSimpleArgumentRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestSimpleArgumentRequestParams {}
impl INSObject for MTRUnitTestingClusterTestSimpleArgumentRequestParams {}
impl PNSObject for MTRUnitTestingClusterTestSimpleArgumentRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestSimpleArgumentRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestSimpleArgumentRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestSimpleArgumentRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestSimpleArgumentRequestParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestSimpleArgumentRequestParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestSimpleArgumentRequestParams
    for MTRUnitTestingClusterTestSimpleArgumentRequestParams
{
}
pub trait IMTRUnitTestingClusterTestSimpleArgumentRequestParams: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestSimpleArgumentRequestParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestSimpleArgumentRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestSimpleArgumentRequestParams {}
impl MTRTestClusterClusterTestSimpleArgumentRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestSimpleArgumentRequestParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestSimpleArgumentRequestParams
    for MTRTestClusterClusterTestSimpleArgumentRequestParams
{
}
impl PNSCopying for MTRTestClusterClusterTestSimpleArgumentRequestParams {}
impl From<MTRTestClusterClusterTestSimpleArgumentRequestParams>
    for MTRUnitTestingClusterTestSimpleArgumentRequestParams
{
    fn from(
        child: MTRTestClusterClusterTestSimpleArgumentRequestParams,
    ) -> MTRUnitTestingClusterTestSimpleArgumentRequestParams {
        MTRUnitTestingClusterTestSimpleArgumentRequestParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestSimpleArgumentRequestParams>
    for MTRTestClusterClusterTestSimpleArgumentRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestSimpleArgumentRequestParams,
    ) -> Result<MTRTestClusterClusterTestSimpleArgumentRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestSimpleArgumentRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestSimpleArgumentRequestParams(
                parent.0,
            ))
        } else {
            Err ("This MTRUnitTestingClusterTestSimpleArgumentRequestParams cannot be downcasted to MTRTestClusterClusterTestSimpleArgumentRequestParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestSimpleArgumentRequestParams {}
impl PNSObject for MTRTestClusterClusterTestSimpleArgumentRequestParams {}
impl IMTRTestClusterClusterTestSimpleArgumentRequestParams
    for MTRTestClusterClusterTestSimpleArgumentRequestParams
{
}
pub trait IMTRTestClusterClusterTestSimpleArgumentRequestParams: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestEnumsResponseParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestEnumsResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestEnumsResponseParams {}
impl MTRUnitTestingClusterTestEnumsResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestEnumsResponseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestEnumsResponseParams {}
impl INSObject for MTRUnitTestingClusterTestEnumsResponseParams {}
impl PNSObject for MTRUnitTestingClusterTestEnumsResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestEnumsResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestEnumsResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestEnumsResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestEnumsResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestEnumsResponseParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestEnumsResponseParams
    for MTRUnitTestingClusterTestEnumsResponseParams
{
}
pub trait IMTRUnitTestingClusterTestEnumsResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn arg2(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg2)
    }
    unsafe fn setArg2_(&self, arg2: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg2 : arg2)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestEnumsResponseParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestEnumsResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestEnumsResponseParams {}
impl MTRTestClusterClusterTestEnumsResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestEnumsResponseParams").unwrap(), alloc) })
    }
}
impl IMTRUnitTestingClusterTestEnumsResponseParams
    for MTRTestClusterClusterTestEnumsResponseParams
{
}
impl PNSCopying for MTRTestClusterClusterTestEnumsResponseParams {}
impl From<MTRTestClusterClusterTestEnumsResponseParams>
    for MTRUnitTestingClusterTestEnumsResponseParams
{
    fn from(
        child: MTRTestClusterClusterTestEnumsResponseParams,
    ) -> MTRUnitTestingClusterTestEnumsResponseParams {
        MTRUnitTestingClusterTestEnumsResponseParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestEnumsResponseParams>
    for MTRTestClusterClusterTestEnumsResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestEnumsResponseParams,
    ) -> Result<MTRTestClusterClusterTestEnumsResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestEnumsResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestEnumsResponseParams(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterTestEnumsResponseParams cannot be downcasted to MTRTestClusterClusterTestEnumsResponseParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestEnumsResponseParams {}
impl PNSObject for MTRTestClusterClusterTestEnumsResponseParams {}
impl IMTRTestClusterClusterTestEnumsResponseParams
    for MTRTestClusterClusterTestEnumsResponseParams
{
}
pub trait IMTRTestClusterClusterTestEnumsResponseParams: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn arg2(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg2)
    }
    unsafe fn setArg2_(&self, arg2: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg2 : arg2)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestStructArrayArgumentRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestStructArrayArgumentRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestStructArrayArgumentRequestParams {}
impl MTRUnitTestingClusterTestStructArrayArgumentRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestStructArrayArgumentRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestStructArrayArgumentRequestParams {}
impl INSObject for MTRUnitTestingClusterTestStructArrayArgumentRequestParams {}
impl PNSObject for MTRUnitTestingClusterTestStructArrayArgumentRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestStructArrayArgumentRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestStructArrayArgumentRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestStructArrayArgumentRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestStructArrayArgumentRequestParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestStructArrayArgumentRequestParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestStructArrayArgumentRequestParams
    for MTRUnitTestingClusterTestStructArrayArgumentRequestParams
{
}
pub trait IMTRUnitTestingClusterTestStructArrayArgumentRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn arg1(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn arg2(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg2)
    }
    unsafe fn setArg2_(&self, arg2: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg2 : arg2)
    }
    unsafe fn arg3(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg3)
    }
    unsafe fn setArg3_(&self, arg3: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg3 : arg3)
    }
    unsafe fn arg4(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg4)
    }
    unsafe fn setArg4_(&self, arg4: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg4 : arg4)
    }
    unsafe fn arg5(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg5)
    }
    unsafe fn setArg5_(&self, arg5: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg5 : arg5)
    }
    unsafe fn arg6(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg6)
    }
    unsafe fn setArg6_(&self, arg6: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg6 : arg6)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestStructArrayArgumentRequestParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestStructArrayArgumentRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestStructArrayArgumentRequestParams {}
impl MTRTestClusterClusterTestStructArrayArgumentRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestStructArrayArgumentRequestParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestStructArrayArgumentRequestParams
    for MTRTestClusterClusterTestStructArrayArgumentRequestParams
{
}
impl PNSCopying for MTRTestClusterClusterTestStructArrayArgumentRequestParams {}
impl From<MTRTestClusterClusterTestStructArrayArgumentRequestParams>
    for MTRUnitTestingClusterTestStructArrayArgumentRequestParams
{
    fn from(
        child: MTRTestClusterClusterTestStructArrayArgumentRequestParams,
    ) -> MTRUnitTestingClusterTestStructArrayArgumentRequestParams {
        MTRUnitTestingClusterTestStructArrayArgumentRequestParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestStructArrayArgumentRequestParams>
    for MTRTestClusterClusterTestStructArrayArgumentRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestStructArrayArgumentRequestParams,
    ) -> Result<MTRTestClusterClusterTestStructArrayArgumentRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestStructArrayArgumentRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestStructArrayArgumentRequestParams(
                parent.0,
            ))
        } else {
            Err ("This MTRUnitTestingClusterTestStructArrayArgumentRequestParams cannot be downcasted to MTRTestClusterClusterTestStructArrayArgumentRequestParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestStructArrayArgumentRequestParams {}
impl PNSObject for MTRTestClusterClusterTestStructArrayArgumentRequestParams {}
impl IMTRTestClusterClusterTestStructArrayArgumentRequestParams
    for MTRTestClusterClusterTestStructArrayArgumentRequestParams
{
}
pub trait IMTRTestClusterClusterTestStructArrayArgumentRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn arg1(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn arg2(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg2)
    }
    unsafe fn setArg2_(&self, arg2: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg2 : arg2)
    }
    unsafe fn arg3(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg3)
    }
    unsafe fn setArg3_(&self, arg3: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg3 : arg3)
    }
    unsafe fn arg4(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg4)
    }
    unsafe fn setArg4_(&self, arg4: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg4 : arg4)
    }
    unsafe fn arg5(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg5)
    }
    unsafe fn setArg5_(&self, arg5: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg5 : arg5)
    }
    unsafe fn arg6(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg6)
    }
    unsafe fn setArg6_(&self, arg6: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg6 : arg6)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestNullableOptionalResponseParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestNullableOptionalResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestNullableOptionalResponseParams {}
impl MTRUnitTestingClusterTestNullableOptionalResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestNullableOptionalResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestNullableOptionalResponseParams {}
impl INSObject for MTRUnitTestingClusterTestNullableOptionalResponseParams {}
impl PNSObject for MTRUnitTestingClusterTestNullableOptionalResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestNullableOptionalResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestNullableOptionalResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestNullableOptionalResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestNullableOptionalResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestNullableOptionalResponseParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestNullableOptionalResponseParams
    for MTRUnitTestingClusterTestNullableOptionalResponseParams
{
}
pub trait IMTRUnitTestingClusterTestNullableOptionalResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn wasPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, wasPresent)
    }
    unsafe fn setWasPresent_(&self, wasPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWasPresent : wasPresent)
    }
    unsafe fn wasNull(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, wasNull)
    }
    unsafe fn setWasNull_(&self, wasNull: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWasNull : wasNull)
    }
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
    unsafe fn originalValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, originalValue)
    }
    unsafe fn setOriginalValue_(&self, originalValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOriginalValue : originalValue)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestNullableOptionalResponseParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestNullableOptionalResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestNullableOptionalResponseParams {}
impl MTRTestClusterClusterTestNullableOptionalResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestNullableOptionalResponseParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestNullableOptionalResponseParams
    for MTRTestClusterClusterTestNullableOptionalResponseParams
{
}
impl PNSCopying for MTRTestClusterClusterTestNullableOptionalResponseParams {}
impl From<MTRTestClusterClusterTestNullableOptionalResponseParams>
    for MTRUnitTestingClusterTestNullableOptionalResponseParams
{
    fn from(
        child: MTRTestClusterClusterTestNullableOptionalResponseParams,
    ) -> MTRUnitTestingClusterTestNullableOptionalResponseParams {
        MTRUnitTestingClusterTestNullableOptionalResponseParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestNullableOptionalResponseParams>
    for MTRTestClusterClusterTestNullableOptionalResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestNullableOptionalResponseParams,
    ) -> Result<MTRTestClusterClusterTestNullableOptionalResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestNullableOptionalResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestNullableOptionalResponseParams(
                parent.0,
            ))
        } else {
            Err ("This MTRUnitTestingClusterTestNullableOptionalResponseParams cannot be downcasted to MTRTestClusterClusterTestNullableOptionalResponseParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestNullableOptionalResponseParams {}
impl PNSObject for MTRTestClusterClusterTestNullableOptionalResponseParams {}
impl IMTRTestClusterClusterTestNullableOptionalResponseParams
    for MTRTestClusterClusterTestNullableOptionalResponseParams
{
}
pub trait IMTRTestClusterClusterTestNullableOptionalResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn wasPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, wasPresent)
    }
    unsafe fn setWasPresent_(&self, wasPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWasPresent : wasPresent)
    }
    unsafe fn wasNull(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, wasNull)
    }
    unsafe fn setWasNull_(&self, wasNull: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWasNull : wasNull)
    }
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
    unsafe fn originalValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, originalValue)
    }
    unsafe fn setOriginalValue_(&self, originalValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOriginalValue : originalValue)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestStructArgumentRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestStructArgumentRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestStructArgumentRequestParams {}
impl MTRUnitTestingClusterTestStructArgumentRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestStructArgumentRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestStructArgumentRequestParams {}
impl INSObject for MTRUnitTestingClusterTestStructArgumentRequestParams {}
impl PNSObject for MTRUnitTestingClusterTestStructArgumentRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestStructArgumentRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestStructArgumentRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestStructArgumentRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestStructArgumentRequestParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestStructArgumentRequestParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestStructArgumentRequestParams
    for MTRUnitTestingClusterTestStructArgumentRequestParams
{
}
pub trait IMTRUnitTestingClusterTestStructArgumentRequestParams: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: MTRUnitTestingClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestStructArgumentRequestParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestStructArgumentRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestStructArgumentRequestParams {}
impl MTRTestClusterClusterTestStructArgumentRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestStructArgumentRequestParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestStructArgumentRequestParams
    for MTRTestClusterClusterTestStructArgumentRequestParams
{
}
impl PNSCopying for MTRTestClusterClusterTestStructArgumentRequestParams {}
impl From<MTRTestClusterClusterTestStructArgumentRequestParams>
    for MTRUnitTestingClusterTestStructArgumentRequestParams
{
    fn from(
        child: MTRTestClusterClusterTestStructArgumentRequestParams,
    ) -> MTRUnitTestingClusterTestStructArgumentRequestParams {
        MTRUnitTestingClusterTestStructArgumentRequestParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestStructArgumentRequestParams>
    for MTRTestClusterClusterTestStructArgumentRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestStructArgumentRequestParams,
    ) -> Result<MTRTestClusterClusterTestStructArgumentRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestStructArgumentRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestStructArgumentRequestParams(
                parent.0,
            ))
        } else {
            Err ("This MTRUnitTestingClusterTestStructArgumentRequestParams cannot be downcasted to MTRTestClusterClusterTestStructArgumentRequestParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestStructArgumentRequestParams {}
impl PNSObject for MTRTestClusterClusterTestStructArgumentRequestParams {}
impl IMTRTestClusterClusterTestStructArgumentRequestParams
    for MTRTestClusterClusterTestStructArgumentRequestParams
{
}
pub trait IMTRTestClusterClusterTestStructArgumentRequestParams: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: MTRUnitTestingClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestComplexNullableOptionalResponseParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestComplexNullableOptionalResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestComplexNullableOptionalResponseParams {}
impl MTRUnitTestingClusterTestComplexNullableOptionalResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestComplexNullableOptionalResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestComplexNullableOptionalResponseParams {}
impl INSObject for MTRUnitTestingClusterTestComplexNullableOptionalResponseParams {}
impl PNSObject for MTRUnitTestingClusterTestComplexNullableOptionalResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRUnitTestingClusterTestComplexNullableOptionalResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestComplexNullableOptionalResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestComplexNullableOptionalResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestComplexNullableOptionalResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestComplexNullableOptionalResponseParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestComplexNullableOptionalResponseParams
    for MTRUnitTestingClusterTestComplexNullableOptionalResponseParams
{
}
pub trait IMTRUnitTestingClusterTestComplexNullableOptionalResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn nullableIntWasNull(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableIntWasNull)
    }
    unsafe fn setNullableIntWasNull_(&self, nullableIntWasNull: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableIntWasNull : nullableIntWasNull)
    }
    unsafe fn nullableIntValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableIntValue)
    }
    unsafe fn setNullableIntValue_(&self, nullableIntValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableIntValue : nullableIntValue)
    }
    unsafe fn optionalIntWasPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalIntWasPresent)
    }
    unsafe fn setOptionalIntWasPresent_(&self, optionalIntWasPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalIntWasPresent : optionalIntWasPresent)
    }
    unsafe fn optionalIntValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalIntValue)
    }
    unsafe fn setOptionalIntValue_(&self, optionalIntValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalIntValue : optionalIntValue)
    }
    unsafe fn nullableOptionalIntWasPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalIntWasPresent)
    }
    unsafe fn setNullableOptionalIntWasPresent_(&self, nullableOptionalIntWasPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalIntWasPresent : nullableOptionalIntWasPresent)
    }
    unsafe fn nullableOptionalIntWasNull(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalIntWasNull)
    }
    unsafe fn setNullableOptionalIntWasNull_(&self, nullableOptionalIntWasNull: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalIntWasNull : nullableOptionalIntWasNull)
    }
    unsafe fn nullableOptionalIntValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalIntValue)
    }
    unsafe fn setNullableOptionalIntValue_(&self, nullableOptionalIntValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalIntValue : nullableOptionalIntValue)
    }
    unsafe fn nullableStringWasNull(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableStringWasNull)
    }
    unsafe fn setNullableStringWasNull_(&self, nullableStringWasNull: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableStringWasNull : nullableStringWasNull)
    }
    unsafe fn nullableStringValue(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableStringValue)
    }
    unsafe fn setNullableStringValue_(&self, nullableStringValue: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableStringValue : nullableStringValue)
    }
    unsafe fn optionalStringWasPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalStringWasPresent)
    }
    unsafe fn setOptionalStringWasPresent_(&self, optionalStringWasPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalStringWasPresent : optionalStringWasPresent)
    }
    unsafe fn optionalStringValue(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalStringValue)
    }
    unsafe fn setOptionalStringValue_(&self, optionalStringValue: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalStringValue : optionalStringValue)
    }
    unsafe fn nullableOptionalStringWasPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalStringWasPresent)
    }
    unsafe fn setNullableOptionalStringWasPresent_(
        &self,
        nullableOptionalStringWasPresent: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalStringWasPresent : nullableOptionalStringWasPresent)
    }
    unsafe fn nullableOptionalStringWasNull(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalStringWasNull)
    }
    unsafe fn setNullableOptionalStringWasNull_(&self, nullableOptionalStringWasNull: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalStringWasNull : nullableOptionalStringWasNull)
    }
    unsafe fn nullableOptionalStringValue(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalStringValue)
    }
    unsafe fn setNullableOptionalStringValue_(&self, nullableOptionalStringValue: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalStringValue : nullableOptionalStringValue)
    }
    unsafe fn nullableStructWasNull(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableStructWasNull)
    }
    unsafe fn setNullableStructWasNull_(&self, nullableStructWasNull: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableStructWasNull : nullableStructWasNull)
    }
    unsafe fn nullableStructValue(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableStructValue)
    }
    unsafe fn setNullableStructValue_(&self, nullableStructValue: MTRUnitTestingClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableStructValue : nullableStructValue)
    }
    unsafe fn optionalStructWasPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalStructWasPresent)
    }
    unsafe fn setOptionalStructWasPresent_(&self, optionalStructWasPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalStructWasPresent : optionalStructWasPresent)
    }
    unsafe fn optionalStructValue(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalStructValue)
    }
    unsafe fn setOptionalStructValue_(&self, optionalStructValue: MTRUnitTestingClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalStructValue : optionalStructValue)
    }
    unsafe fn nullableOptionalStructWasPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalStructWasPresent)
    }
    unsafe fn setNullableOptionalStructWasPresent_(
        &self,
        nullableOptionalStructWasPresent: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalStructWasPresent : nullableOptionalStructWasPresent)
    }
    unsafe fn nullableOptionalStructWasNull(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalStructWasNull)
    }
    unsafe fn setNullableOptionalStructWasNull_(&self, nullableOptionalStructWasNull: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalStructWasNull : nullableOptionalStructWasNull)
    }
    unsafe fn nullableOptionalStructValue(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalStructValue)
    }
    unsafe fn setNullableOptionalStructValue_(
        &self,
        nullableOptionalStructValue: MTRUnitTestingClusterSimpleStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalStructValue : nullableOptionalStructValue)
    }
    unsafe fn nullableListWasNull(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableListWasNull)
    }
    unsafe fn setNullableListWasNull_(&self, nullableListWasNull: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableListWasNull : nullableListWasNull)
    }
    unsafe fn nullableListValue(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableListValue)
    }
    unsafe fn setNullableListValue_(&self, nullableListValue: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableListValue : nullableListValue)
    }
    unsafe fn optionalListWasPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalListWasPresent)
    }
    unsafe fn setOptionalListWasPresent_(&self, optionalListWasPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalListWasPresent : optionalListWasPresent)
    }
    unsafe fn optionalListValue(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalListValue)
    }
    unsafe fn setOptionalListValue_(&self, optionalListValue: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalListValue : optionalListValue)
    }
    unsafe fn nullableOptionalListWasPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalListWasPresent)
    }
    unsafe fn setNullableOptionalListWasPresent_(&self, nullableOptionalListWasPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalListWasPresent : nullableOptionalListWasPresent)
    }
    unsafe fn nullableOptionalListWasNull(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalListWasNull)
    }
    unsafe fn setNullableOptionalListWasNull_(&self, nullableOptionalListWasNull: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalListWasNull : nullableOptionalListWasNull)
    }
    unsafe fn nullableOptionalListValue(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalListValue)
    }
    unsafe fn setNullableOptionalListValue_(&self, nullableOptionalListValue: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalListValue : nullableOptionalListValue)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestComplexNullableOptionalResponseParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestComplexNullableOptionalResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestComplexNullableOptionalResponseParams {}
impl MTRTestClusterClusterTestComplexNullableOptionalResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestComplexNullableOptionalResponseParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestComplexNullableOptionalResponseParams
    for MTRTestClusterClusterTestComplexNullableOptionalResponseParams
{
}
impl PNSCopying for MTRTestClusterClusterTestComplexNullableOptionalResponseParams {}
impl From<MTRTestClusterClusterTestComplexNullableOptionalResponseParams>
    for MTRUnitTestingClusterTestComplexNullableOptionalResponseParams
{
    fn from(
        child: MTRTestClusterClusterTestComplexNullableOptionalResponseParams,
    ) -> MTRUnitTestingClusterTestComplexNullableOptionalResponseParams {
        MTRUnitTestingClusterTestComplexNullableOptionalResponseParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestComplexNullableOptionalResponseParams>
    for MTRTestClusterClusterTestComplexNullableOptionalResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestComplexNullableOptionalResponseParams,
    ) -> Result<MTRTestClusterClusterTestComplexNullableOptionalResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestComplexNullableOptionalResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestComplexNullableOptionalResponseParams(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterTestComplexNullableOptionalResponseParams cannot be downcasted to MTRTestClusterClusterTestComplexNullableOptionalResponseParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestComplexNullableOptionalResponseParams {}
impl PNSObject for MTRTestClusterClusterTestComplexNullableOptionalResponseParams {}
impl IMTRTestClusterClusterTestComplexNullableOptionalResponseParams
    for MTRTestClusterClusterTestComplexNullableOptionalResponseParams
{
}
pub trait IMTRTestClusterClusterTestComplexNullableOptionalResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn nullableIntWasNull(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableIntWasNull)
    }
    unsafe fn setNullableIntWasNull_(&self, nullableIntWasNull: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableIntWasNull : nullableIntWasNull)
    }
    unsafe fn nullableIntValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableIntValue)
    }
    unsafe fn setNullableIntValue_(&self, nullableIntValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableIntValue : nullableIntValue)
    }
    unsafe fn optionalIntWasPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalIntWasPresent)
    }
    unsafe fn setOptionalIntWasPresent_(&self, optionalIntWasPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalIntWasPresent : optionalIntWasPresent)
    }
    unsafe fn optionalIntValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalIntValue)
    }
    unsafe fn setOptionalIntValue_(&self, optionalIntValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalIntValue : optionalIntValue)
    }
    unsafe fn nullableOptionalIntWasPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalIntWasPresent)
    }
    unsafe fn setNullableOptionalIntWasPresent_(&self, nullableOptionalIntWasPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalIntWasPresent : nullableOptionalIntWasPresent)
    }
    unsafe fn nullableOptionalIntWasNull(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalIntWasNull)
    }
    unsafe fn setNullableOptionalIntWasNull_(&self, nullableOptionalIntWasNull: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalIntWasNull : nullableOptionalIntWasNull)
    }
    unsafe fn nullableOptionalIntValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalIntValue)
    }
    unsafe fn setNullableOptionalIntValue_(&self, nullableOptionalIntValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalIntValue : nullableOptionalIntValue)
    }
    unsafe fn nullableStringWasNull(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableStringWasNull)
    }
    unsafe fn setNullableStringWasNull_(&self, nullableStringWasNull: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableStringWasNull : nullableStringWasNull)
    }
    unsafe fn nullableStringValue(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableStringValue)
    }
    unsafe fn setNullableStringValue_(&self, nullableStringValue: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableStringValue : nullableStringValue)
    }
    unsafe fn optionalStringWasPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalStringWasPresent)
    }
    unsafe fn setOptionalStringWasPresent_(&self, optionalStringWasPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalStringWasPresent : optionalStringWasPresent)
    }
    unsafe fn optionalStringValue(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalStringValue)
    }
    unsafe fn setOptionalStringValue_(&self, optionalStringValue: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalStringValue : optionalStringValue)
    }
    unsafe fn nullableOptionalStringWasPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalStringWasPresent)
    }
    unsafe fn setNullableOptionalStringWasPresent_(
        &self,
        nullableOptionalStringWasPresent: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalStringWasPresent : nullableOptionalStringWasPresent)
    }
    unsafe fn nullableOptionalStringWasNull(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalStringWasNull)
    }
    unsafe fn setNullableOptionalStringWasNull_(&self, nullableOptionalStringWasNull: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalStringWasNull : nullableOptionalStringWasNull)
    }
    unsafe fn nullableOptionalStringValue(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalStringValue)
    }
    unsafe fn setNullableOptionalStringValue_(&self, nullableOptionalStringValue: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalStringValue : nullableOptionalStringValue)
    }
    unsafe fn nullableStructWasNull(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableStructWasNull)
    }
    unsafe fn setNullableStructWasNull_(&self, nullableStructWasNull: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableStructWasNull : nullableStructWasNull)
    }
    unsafe fn nullableStructValue(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableStructValue)
    }
    unsafe fn setNullableStructValue_(&self, nullableStructValue: MTRUnitTestingClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableStructValue : nullableStructValue)
    }
    unsafe fn optionalStructWasPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalStructWasPresent)
    }
    unsafe fn setOptionalStructWasPresent_(&self, optionalStructWasPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalStructWasPresent : optionalStructWasPresent)
    }
    unsafe fn optionalStructValue(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalStructValue)
    }
    unsafe fn setOptionalStructValue_(&self, optionalStructValue: MTRUnitTestingClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalStructValue : optionalStructValue)
    }
    unsafe fn nullableOptionalStructWasPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalStructWasPresent)
    }
    unsafe fn setNullableOptionalStructWasPresent_(
        &self,
        nullableOptionalStructWasPresent: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalStructWasPresent : nullableOptionalStructWasPresent)
    }
    unsafe fn nullableOptionalStructWasNull(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalStructWasNull)
    }
    unsafe fn setNullableOptionalStructWasNull_(&self, nullableOptionalStructWasNull: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalStructWasNull : nullableOptionalStructWasNull)
    }
    unsafe fn nullableOptionalStructValue(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalStructValue)
    }
    unsafe fn setNullableOptionalStructValue_(
        &self,
        nullableOptionalStructValue: MTRUnitTestingClusterSimpleStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalStructValue : nullableOptionalStructValue)
    }
    unsafe fn nullableListWasNull(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableListWasNull)
    }
    unsafe fn setNullableListWasNull_(&self, nullableListWasNull: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableListWasNull : nullableListWasNull)
    }
    unsafe fn nullableListValue(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableListValue)
    }
    unsafe fn setNullableListValue_(&self, nullableListValue: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableListValue : nullableListValue)
    }
    unsafe fn optionalListWasPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalListWasPresent)
    }
    unsafe fn setOptionalListWasPresent_(&self, optionalListWasPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalListWasPresent : optionalListWasPresent)
    }
    unsafe fn optionalListValue(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalListValue)
    }
    unsafe fn setOptionalListValue_(&self, optionalListValue: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalListValue : optionalListValue)
    }
    unsafe fn nullableOptionalListWasPresent(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalListWasPresent)
    }
    unsafe fn setNullableOptionalListWasPresent_(&self, nullableOptionalListWasPresent: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalListWasPresent : nullableOptionalListWasPresent)
    }
    unsafe fn nullableOptionalListWasNull(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalListWasNull)
    }
    unsafe fn setNullableOptionalListWasNull_(&self, nullableOptionalListWasNull: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalListWasNull : nullableOptionalListWasNull)
    }
    unsafe fn nullableOptionalListValue(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalListValue)
    }
    unsafe fn setNullableOptionalListValue_(&self, nullableOptionalListValue: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalListValue : nullableOptionalListValue)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestNestedStructArgumentRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestNestedStructArgumentRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestNestedStructArgumentRequestParams {}
impl MTRUnitTestingClusterTestNestedStructArgumentRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestNestedStructArgumentRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestNestedStructArgumentRequestParams {}
impl INSObject for MTRUnitTestingClusterTestNestedStructArgumentRequestParams {}
impl PNSObject for MTRUnitTestingClusterTestNestedStructArgumentRequestParams {}
impl std::convert::TryFrom<NSObject>
    for MTRUnitTestingClusterTestNestedStructArgumentRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestNestedStructArgumentRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestNestedStructArgumentRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestNestedStructArgumentRequestParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestNestedStructArgumentRequestParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestNestedStructArgumentRequestParams
    for MTRUnitTestingClusterTestNestedStructArgumentRequestParams
{
}
pub trait IMTRUnitTestingClusterTestNestedStructArgumentRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn arg1(&self) -> MTRUnitTestingClusterNestedStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: MTRUnitTestingClusterNestedStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestNestedStructArgumentRequestParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestNestedStructArgumentRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestNestedStructArgumentRequestParams {}
impl MTRTestClusterClusterTestNestedStructArgumentRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestNestedStructArgumentRequestParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestNestedStructArgumentRequestParams
    for MTRTestClusterClusterTestNestedStructArgumentRequestParams
{
}
impl PNSCopying for MTRTestClusterClusterTestNestedStructArgumentRequestParams {}
impl From<MTRTestClusterClusterTestNestedStructArgumentRequestParams>
    for MTRUnitTestingClusterTestNestedStructArgumentRequestParams
{
    fn from(
        child: MTRTestClusterClusterTestNestedStructArgumentRequestParams,
    ) -> MTRUnitTestingClusterTestNestedStructArgumentRequestParams {
        MTRUnitTestingClusterTestNestedStructArgumentRequestParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestNestedStructArgumentRequestParams>
    for MTRTestClusterClusterTestNestedStructArgumentRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestNestedStructArgumentRequestParams,
    ) -> Result<MTRTestClusterClusterTestNestedStructArgumentRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestNestedStructArgumentRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestNestedStructArgumentRequestParams(
                parent.0,
            ))
        } else {
            Err ("This MTRUnitTestingClusterTestNestedStructArgumentRequestParams cannot be downcasted to MTRTestClusterClusterTestNestedStructArgumentRequestParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestNestedStructArgumentRequestParams {}
impl PNSObject for MTRTestClusterClusterTestNestedStructArgumentRequestParams {}
impl IMTRTestClusterClusterTestNestedStructArgumentRequestParams
    for MTRTestClusterClusterTestNestedStructArgumentRequestParams
{
}
pub trait IMTRTestClusterClusterTestNestedStructArgumentRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn arg1(&self) -> MTRUnitTestingClusterNestedStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: MTRUnitTestingClusterNestedStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterBooleanResponseParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterBooleanResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterBooleanResponseParams {}
impl MTRUnitTestingClusterBooleanResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterBooleanResponseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRUnitTestingClusterBooleanResponseParams {}
impl INSObject for MTRUnitTestingClusterBooleanResponseParams {}
impl PNSObject for MTRUnitTestingClusterBooleanResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterBooleanResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterBooleanResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterBooleanResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterBooleanResponseParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRUnitTestingClusterBooleanResponseParams")
        }
    }
}
impl IMTRUnitTestingClusterBooleanResponseParams for MTRUnitTestingClusterBooleanResponseParams {}
pub trait IMTRUnitTestingClusterBooleanResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterBooleanResponseParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterBooleanResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterBooleanResponseParams {}
impl MTRTestClusterClusterBooleanResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterBooleanResponseParams").unwrap(), alloc) })
    }
}
impl IMTRUnitTestingClusterBooleanResponseParams for MTRTestClusterClusterBooleanResponseParams {}
impl PNSCopying for MTRTestClusterClusterBooleanResponseParams {}
impl From<MTRTestClusterClusterBooleanResponseParams>
    for MTRUnitTestingClusterBooleanResponseParams
{
    fn from(
        child: MTRTestClusterClusterBooleanResponseParams,
    ) -> MTRUnitTestingClusterBooleanResponseParams {
        MTRUnitTestingClusterBooleanResponseParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterBooleanResponseParams>
    for MTRTestClusterClusterBooleanResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterBooleanResponseParams,
    ) -> Result<MTRTestClusterClusterBooleanResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterBooleanResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterBooleanResponseParams(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterBooleanResponseParams cannot be downcasted to MTRTestClusterClusterBooleanResponseParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterBooleanResponseParams {}
impl PNSObject for MTRTestClusterClusterBooleanResponseParams {}
impl IMTRTestClusterClusterBooleanResponseParams for MTRTestClusterClusterBooleanResponseParams {}
pub trait IMTRTestClusterClusterBooleanResponseParams: Sized + std::ops::Deref {
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestListStructArgumentRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestListStructArgumentRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestListStructArgumentRequestParams {}
impl MTRUnitTestingClusterTestListStructArgumentRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestListStructArgumentRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestListStructArgumentRequestParams {}
impl INSObject for MTRUnitTestingClusterTestListStructArgumentRequestParams {}
impl PNSObject for MTRUnitTestingClusterTestListStructArgumentRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestListStructArgumentRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestListStructArgumentRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestListStructArgumentRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestListStructArgumentRequestParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestListStructArgumentRequestParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestListStructArgumentRequestParams
    for MTRUnitTestingClusterTestListStructArgumentRequestParams
{
}
pub trait IMTRUnitTestingClusterTestListStructArgumentRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn arg1(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestListStructArgumentRequestParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestListStructArgumentRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestListStructArgumentRequestParams {}
impl MTRTestClusterClusterTestListStructArgumentRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestListStructArgumentRequestParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestListStructArgumentRequestParams
    for MTRTestClusterClusterTestListStructArgumentRequestParams
{
}
impl PNSCopying for MTRTestClusterClusterTestListStructArgumentRequestParams {}
impl From<MTRTestClusterClusterTestListStructArgumentRequestParams>
    for MTRUnitTestingClusterTestListStructArgumentRequestParams
{
    fn from(
        child: MTRTestClusterClusterTestListStructArgumentRequestParams,
    ) -> MTRUnitTestingClusterTestListStructArgumentRequestParams {
        MTRUnitTestingClusterTestListStructArgumentRequestParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestListStructArgumentRequestParams>
    for MTRTestClusterClusterTestListStructArgumentRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestListStructArgumentRequestParams,
    ) -> Result<MTRTestClusterClusterTestListStructArgumentRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestListStructArgumentRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestListStructArgumentRequestParams(
                parent.0,
            ))
        } else {
            Err ("This MTRUnitTestingClusterTestListStructArgumentRequestParams cannot be downcasted to MTRTestClusterClusterTestListStructArgumentRequestParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestListStructArgumentRequestParams {}
impl PNSObject for MTRTestClusterClusterTestListStructArgumentRequestParams {}
impl IMTRTestClusterClusterTestListStructArgumentRequestParams
    for MTRTestClusterClusterTestListStructArgumentRequestParams
{
}
pub trait IMTRTestClusterClusterTestListStructArgumentRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn arg1(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterSimpleStructResponseParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterSimpleStructResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterSimpleStructResponseParams {}
impl MTRUnitTestingClusterSimpleStructResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterSimpleStructResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterSimpleStructResponseParams {}
impl INSObject for MTRUnitTestingClusterSimpleStructResponseParams {}
impl PNSObject for MTRUnitTestingClusterSimpleStructResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterSimpleStructResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterSimpleStructResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterSimpleStructResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterSimpleStructResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterSimpleStructResponseParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterSimpleStructResponseParams
    for MTRUnitTestingClusterSimpleStructResponseParams
{
}
pub trait IMTRUnitTestingClusterSimpleStructResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn arg1(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: MTRUnitTestingClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterSimpleStructResponseParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterSimpleStructResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterSimpleStructResponseParams {}
impl MTRTestClusterClusterSimpleStructResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterSimpleStructResponseParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterSimpleStructResponseParams
    for MTRTestClusterClusterSimpleStructResponseParams
{
}
impl PNSCopying for MTRTestClusterClusterSimpleStructResponseParams {}
impl From<MTRTestClusterClusterSimpleStructResponseParams>
    for MTRUnitTestingClusterSimpleStructResponseParams
{
    fn from(
        child: MTRTestClusterClusterSimpleStructResponseParams,
    ) -> MTRUnitTestingClusterSimpleStructResponseParams {
        MTRUnitTestingClusterSimpleStructResponseParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterSimpleStructResponseParams>
    for MTRTestClusterClusterSimpleStructResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterSimpleStructResponseParams,
    ) -> Result<MTRTestClusterClusterSimpleStructResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterSimpleStructResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterSimpleStructResponseParams(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterSimpleStructResponseParams cannot be downcasted to MTRTestClusterClusterSimpleStructResponseParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterSimpleStructResponseParams {}
impl PNSObject for MTRTestClusterClusterSimpleStructResponseParams {}
impl IMTRTestClusterClusterSimpleStructResponseParams
    for MTRTestClusterClusterSimpleStructResponseParams
{
}
pub trait IMTRTestClusterClusterSimpleStructResponseParams: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: MTRUnitTestingClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestListInt8UArgumentRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestListInt8UArgumentRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestListInt8UArgumentRequestParams {}
impl MTRUnitTestingClusterTestListInt8UArgumentRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestListInt8UArgumentRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestListInt8UArgumentRequestParams {}
impl INSObject for MTRUnitTestingClusterTestListInt8UArgumentRequestParams {}
impl PNSObject for MTRUnitTestingClusterTestListInt8UArgumentRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestListInt8UArgumentRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestListInt8UArgumentRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestListInt8UArgumentRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestListInt8UArgumentRequestParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestListInt8UArgumentRequestParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestListInt8UArgumentRequestParams
    for MTRUnitTestingClusterTestListInt8UArgumentRequestParams
{
}
pub trait IMTRUnitTestingClusterTestListInt8UArgumentRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn arg1(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestListInt8UArgumentRequestParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestListInt8UArgumentRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestListInt8UArgumentRequestParams {}
impl MTRTestClusterClusterTestListInt8UArgumentRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestListInt8UArgumentRequestParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestListInt8UArgumentRequestParams
    for MTRTestClusterClusterTestListInt8UArgumentRequestParams
{
}
impl PNSCopying for MTRTestClusterClusterTestListInt8UArgumentRequestParams {}
impl From<MTRTestClusterClusterTestListInt8UArgumentRequestParams>
    for MTRUnitTestingClusterTestListInt8UArgumentRequestParams
{
    fn from(
        child: MTRTestClusterClusterTestListInt8UArgumentRequestParams,
    ) -> MTRUnitTestingClusterTestListInt8UArgumentRequestParams {
        MTRUnitTestingClusterTestListInt8UArgumentRequestParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestListInt8UArgumentRequestParams>
    for MTRTestClusterClusterTestListInt8UArgumentRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestListInt8UArgumentRequestParams,
    ) -> Result<MTRTestClusterClusterTestListInt8UArgumentRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestListInt8UArgumentRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestListInt8UArgumentRequestParams(
                parent.0,
            ))
        } else {
            Err ("This MTRUnitTestingClusterTestListInt8UArgumentRequestParams cannot be downcasted to MTRTestClusterClusterTestListInt8UArgumentRequestParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestListInt8UArgumentRequestParams {}
impl PNSObject for MTRTestClusterClusterTestListInt8UArgumentRequestParams {}
impl IMTRTestClusterClusterTestListInt8UArgumentRequestParams
    for MTRTestClusterClusterTestListInt8UArgumentRequestParams
{
}
pub trait IMTRTestClusterClusterTestListInt8UArgumentRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn arg1(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestEmitTestEventResponseParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestEmitTestEventResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestEmitTestEventResponseParams {}
impl MTRUnitTestingClusterTestEmitTestEventResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestEmitTestEventResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestEmitTestEventResponseParams {}
impl INSObject for MTRUnitTestingClusterTestEmitTestEventResponseParams {}
impl PNSObject for MTRUnitTestingClusterTestEmitTestEventResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestEmitTestEventResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestEmitTestEventResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestEmitTestEventResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestEmitTestEventResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestEmitTestEventResponseParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestEmitTestEventResponseParams
    for MTRUnitTestingClusterTestEmitTestEventResponseParams
{
}
pub trait IMTRUnitTestingClusterTestEmitTestEventResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestEmitTestEventResponseParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestEmitTestEventResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestEmitTestEventResponseParams {}
impl MTRTestClusterClusterTestEmitTestEventResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestEmitTestEventResponseParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestEmitTestEventResponseParams
    for MTRTestClusterClusterTestEmitTestEventResponseParams
{
}
impl PNSCopying for MTRTestClusterClusterTestEmitTestEventResponseParams {}
impl From<MTRTestClusterClusterTestEmitTestEventResponseParams>
    for MTRUnitTestingClusterTestEmitTestEventResponseParams
{
    fn from(
        child: MTRTestClusterClusterTestEmitTestEventResponseParams,
    ) -> MTRUnitTestingClusterTestEmitTestEventResponseParams {
        MTRUnitTestingClusterTestEmitTestEventResponseParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestEmitTestEventResponseParams>
    for MTRTestClusterClusterTestEmitTestEventResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestEmitTestEventResponseParams,
    ) -> Result<MTRTestClusterClusterTestEmitTestEventResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestEmitTestEventResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestEmitTestEventResponseParams(
                parent.0,
            ))
        } else {
            Err ("This MTRUnitTestingClusterTestEmitTestEventResponseParams cannot be downcasted to MTRTestClusterClusterTestEmitTestEventResponseParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestEmitTestEventResponseParams {}
impl PNSObject for MTRTestClusterClusterTestEmitTestEventResponseParams {}
impl IMTRTestClusterClusterTestEmitTestEventResponseParams
    for MTRTestClusterClusterTestEmitTestEventResponseParams
{
}
pub trait IMTRTestClusterClusterTestEmitTestEventResponseParams: Sized + std::ops::Deref {
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestNestedStructListArgumentRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestNestedStructListArgumentRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestNestedStructListArgumentRequestParams {}
impl MTRUnitTestingClusterTestNestedStructListArgumentRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestNestedStructListArgumentRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestNestedStructListArgumentRequestParams {}
impl INSObject for MTRUnitTestingClusterTestNestedStructListArgumentRequestParams {}
impl PNSObject for MTRUnitTestingClusterTestNestedStructListArgumentRequestParams {}
impl std::convert::TryFrom<NSObject>
    for MTRUnitTestingClusterTestNestedStructListArgumentRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestNestedStructListArgumentRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestNestedStructListArgumentRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestNestedStructListArgumentRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestNestedStructListArgumentRequestParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestNestedStructListArgumentRequestParams
    for MTRUnitTestingClusterTestNestedStructListArgumentRequestParams
{
}
pub trait IMTRUnitTestingClusterTestNestedStructListArgumentRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn arg1(&self) -> MTRUnitTestingClusterNestedStructList
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: MTRUnitTestingClusterNestedStructList)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestNestedStructListArgumentRequestParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestNestedStructListArgumentRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestNestedStructListArgumentRequestParams {}
impl MTRTestClusterClusterTestNestedStructListArgumentRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestNestedStructListArgumentRequestParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestNestedStructListArgumentRequestParams
    for MTRTestClusterClusterTestNestedStructListArgumentRequestParams
{
}
impl PNSCopying for MTRTestClusterClusterTestNestedStructListArgumentRequestParams {}
impl From<MTRTestClusterClusterTestNestedStructListArgumentRequestParams>
    for MTRUnitTestingClusterTestNestedStructListArgumentRequestParams
{
    fn from(
        child: MTRTestClusterClusterTestNestedStructListArgumentRequestParams,
    ) -> MTRUnitTestingClusterTestNestedStructListArgumentRequestParams {
        MTRUnitTestingClusterTestNestedStructListArgumentRequestParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestNestedStructListArgumentRequestParams>
    for MTRTestClusterClusterTestNestedStructListArgumentRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestNestedStructListArgumentRequestParams,
    ) -> Result<MTRTestClusterClusterTestNestedStructListArgumentRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestNestedStructListArgumentRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestNestedStructListArgumentRequestParams(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterTestNestedStructListArgumentRequestParams cannot be downcasted to MTRTestClusterClusterTestNestedStructListArgumentRequestParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestNestedStructListArgumentRequestParams {}
impl PNSObject for MTRTestClusterClusterTestNestedStructListArgumentRequestParams {}
impl IMTRTestClusterClusterTestNestedStructListArgumentRequestParams
    for MTRTestClusterClusterTestNestedStructListArgumentRequestParams
{
}
pub trait IMTRTestClusterClusterTestNestedStructListArgumentRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn arg1(&self) -> MTRUnitTestingClusterNestedStructList
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: MTRUnitTestingClusterNestedStructList)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams {}
impl MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams {}
impl INSObject for MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams {}
impl PNSObject for MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams {}
impl std::convert::TryFrom<NSObject>
    for MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams
    for MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams
{
}
pub trait IMTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams {}
impl MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams
    for MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams
{
}
impl PNSCopying for MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams {}
impl From<MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams>
    for MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams
{
    fn from(
        child: MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams,
    ) -> MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams {
        MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams>
    for MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams,
    ) -> Result<MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams cannot be downcasted to MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams {}
impl PNSObject for MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams {}
impl IMTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams
    for MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams
{
}
pub trait IMTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn setValue_(&self, value: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams {}
impl MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams {}
impl INSObject for MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams {}
impl PNSObject for MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams {}
impl std::convert::TryFrom<NSObject>
    for MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestListNestedStructListArgumentRequestParams
    for MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams
{
}
pub trait IMTRUnitTestingClusterTestListNestedStructListArgumentRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn arg1(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestListNestedStructListArgumentRequestParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestListNestedStructListArgumentRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestListNestedStructListArgumentRequestParams {}
impl MTRTestClusterClusterTestListNestedStructListArgumentRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestListNestedStructListArgumentRequestParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestListNestedStructListArgumentRequestParams
    for MTRTestClusterClusterTestListNestedStructListArgumentRequestParams
{
}
impl PNSCopying for MTRTestClusterClusterTestListNestedStructListArgumentRequestParams {}
impl From<MTRTestClusterClusterTestListNestedStructListArgumentRequestParams>
    for MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams
{
    fn from(
        child: MTRTestClusterClusterTestListNestedStructListArgumentRequestParams,
    ) -> MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams {
        MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams>
    for MTRTestClusterClusterTestListNestedStructListArgumentRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams,
    ) -> Result<MTRTestClusterClusterTestListNestedStructListArgumentRequestParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestListNestedStructListArgumentRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestListNestedStructListArgumentRequestParams(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams cannot be downcasted to MTRTestClusterClusterTestListNestedStructListArgumentRequestParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestListNestedStructListArgumentRequestParams {}
impl PNSObject for MTRTestClusterClusterTestListNestedStructListArgumentRequestParams {}
impl IMTRTestClusterClusterTestListNestedStructListArgumentRequestParams
    for MTRTestClusterClusterTestListNestedStructListArgumentRequestParams
{
}
pub trait IMTRTestClusterClusterTestListNestedStructListArgumentRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn arg1(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestBatchHelperResponseParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestBatchHelperResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestBatchHelperResponseParams {}
impl MTRUnitTestingClusterTestBatchHelperResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestBatchHelperResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestBatchHelperResponseParams {}
impl INSObject for MTRUnitTestingClusterTestBatchHelperResponseParams {}
impl PNSObject for MTRUnitTestingClusterTestBatchHelperResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestBatchHelperResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestBatchHelperResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestBatchHelperResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestBatchHelperResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestBatchHelperResponseParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestBatchHelperResponseParams
    for MTRUnitTestingClusterTestBatchHelperResponseParams
{
}
pub trait IMTRUnitTestingClusterTestBatchHelperResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn buffer(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, buffer)
    }
    unsafe fn setBuffer_(&self, buffer: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBuffer : buffer)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestListInt8UReverseRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestListInt8UReverseRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestListInt8UReverseRequestParams {}
impl MTRUnitTestingClusterTestListInt8UReverseRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestListInt8UReverseRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestListInt8UReverseRequestParams {}
impl INSObject for MTRUnitTestingClusterTestListInt8UReverseRequestParams {}
impl PNSObject for MTRUnitTestingClusterTestListInt8UReverseRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestListInt8UReverseRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestListInt8UReverseRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestListInt8UReverseRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestListInt8UReverseRequestParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestListInt8UReverseRequestParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestListInt8UReverseRequestParams
    for MTRUnitTestingClusterTestListInt8UReverseRequestParams
{
}
pub trait IMTRUnitTestingClusterTestListInt8UReverseRequestParams: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestListInt8UReverseRequestParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestListInt8UReverseRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestListInt8UReverseRequestParams {}
impl MTRTestClusterClusterTestListInt8UReverseRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestListInt8UReverseRequestParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestListInt8UReverseRequestParams
    for MTRTestClusterClusterTestListInt8UReverseRequestParams
{
}
impl PNSCopying for MTRTestClusterClusterTestListInt8UReverseRequestParams {}
impl From<MTRTestClusterClusterTestListInt8UReverseRequestParams>
    for MTRUnitTestingClusterTestListInt8UReverseRequestParams
{
    fn from(
        child: MTRTestClusterClusterTestListInt8UReverseRequestParams,
    ) -> MTRUnitTestingClusterTestListInt8UReverseRequestParams {
        MTRUnitTestingClusterTestListInt8UReverseRequestParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestListInt8UReverseRequestParams>
    for MTRTestClusterClusterTestListInt8UReverseRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestListInt8UReverseRequestParams,
    ) -> Result<MTRTestClusterClusterTestListInt8UReverseRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestListInt8UReverseRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestListInt8UReverseRequestParams(
                parent.0,
            ))
        } else {
            Err ("This MTRUnitTestingClusterTestListInt8UReverseRequestParams cannot be downcasted to MTRTestClusterClusterTestListInt8UReverseRequestParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestListInt8UReverseRequestParams {}
impl PNSObject for MTRTestClusterClusterTestListInt8UReverseRequestParams {}
impl IMTRTestClusterClusterTestListInt8UReverseRequestParams
    for MTRTestClusterClusterTestListInt8UReverseRequestParams
{
}
pub trait IMTRTestClusterClusterTestListInt8UReverseRequestParams: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterStringEchoResponseParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterStringEchoResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterStringEchoResponseParams {}
impl MTRUnitTestingClusterStringEchoResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterStringEchoResponseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRUnitTestingClusterStringEchoResponseParams {}
impl INSObject for MTRUnitTestingClusterStringEchoResponseParams {}
impl PNSObject for MTRUnitTestingClusterStringEchoResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterStringEchoResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterStringEchoResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterStringEchoResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterStringEchoResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterStringEchoResponseParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterStringEchoResponseParams
    for MTRUnitTestingClusterStringEchoResponseParams
{
}
pub trait IMTRUnitTestingClusterStringEchoResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn payload(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, payload)
    }
    unsafe fn setPayload_(&self, payload: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPayload : payload)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestEnumsRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestEnumsRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestEnumsRequestParams {}
impl MTRUnitTestingClusterTestEnumsRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestEnumsRequestParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestEnumsRequestParams {}
impl INSObject for MTRUnitTestingClusterTestEnumsRequestParams {}
impl PNSObject for MTRUnitTestingClusterTestEnumsRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestEnumsRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestEnumsRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestEnumsRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestEnumsRequestParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRUnitTestingClusterTestEnumsRequestParams")
        }
    }
}
impl IMTRUnitTestingClusterTestEnumsRequestParams for MTRUnitTestingClusterTestEnumsRequestParams {}
pub trait IMTRUnitTestingClusterTestEnumsRequestParams: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn arg2(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg2)
    }
    unsafe fn setArg2_(&self, arg2: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg2 : arg2)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestEnumsRequestParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestEnumsRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestEnumsRequestParams {}
impl MTRTestClusterClusterTestEnumsRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestEnumsRequestParams").unwrap(), alloc) })
    }
}
impl IMTRUnitTestingClusterTestEnumsRequestParams for MTRTestClusterClusterTestEnumsRequestParams {}
impl PNSCopying for MTRTestClusterClusterTestEnumsRequestParams {}
impl From<MTRTestClusterClusterTestEnumsRequestParams>
    for MTRUnitTestingClusterTestEnumsRequestParams
{
    fn from(
        child: MTRTestClusterClusterTestEnumsRequestParams,
    ) -> MTRUnitTestingClusterTestEnumsRequestParams {
        MTRUnitTestingClusterTestEnumsRequestParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestEnumsRequestParams>
    for MTRTestClusterClusterTestEnumsRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestEnumsRequestParams,
    ) -> Result<MTRTestClusterClusterTestEnumsRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestEnumsRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestEnumsRequestParams(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterTestEnumsRequestParams cannot be downcasted to MTRTestClusterClusterTestEnumsRequestParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestEnumsRequestParams {}
impl PNSObject for MTRTestClusterClusterTestEnumsRequestParams {}
impl IMTRTestClusterClusterTestEnumsRequestParams for MTRTestClusterClusterTestEnumsRequestParams {}
pub trait IMTRTestClusterClusterTestEnumsRequestParams: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn arg2(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg2)
    }
    unsafe fn setArg2_(&self, arg2: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg2 : arg2)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterGlobalEchoResponseParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterGlobalEchoResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterGlobalEchoResponseParams {}
impl MTRUnitTestingClusterGlobalEchoResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterGlobalEchoResponseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRUnitTestingClusterGlobalEchoResponseParams {}
impl INSObject for MTRUnitTestingClusterGlobalEchoResponseParams {}
impl PNSObject for MTRUnitTestingClusterGlobalEchoResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterGlobalEchoResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterGlobalEchoResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterGlobalEchoResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterGlobalEchoResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterGlobalEchoResponseParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterGlobalEchoResponseParams
    for MTRUnitTestingClusterGlobalEchoResponseParams
{
}
pub trait IMTRUnitTestingClusterGlobalEchoResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn field1(&self) -> MTRDataTypeTestGlobalStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, field1)
    }
    unsafe fn setField1_(&self, field1: MTRDataTypeTestGlobalStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setField1 : field1)
    }
    unsafe fn field2(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, field2)
    }
    unsafe fn setField2_(&self, field2: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setField2 : field2)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestNullableOptionalRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestNullableOptionalRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestNullableOptionalRequestParams {}
impl MTRUnitTestingClusterTestNullableOptionalRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestNullableOptionalRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestNullableOptionalRequestParams {}
impl INSObject for MTRUnitTestingClusterTestNullableOptionalRequestParams {}
impl PNSObject for MTRUnitTestingClusterTestNullableOptionalRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestNullableOptionalRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestNullableOptionalRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestNullableOptionalRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestNullableOptionalRequestParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestNullableOptionalRequestParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestNullableOptionalRequestParams
    for MTRUnitTestingClusterTestNullableOptionalRequestParams
{
}
pub trait IMTRUnitTestingClusterTestNullableOptionalRequestParams: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestNullableOptionalRequestParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestNullableOptionalRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestNullableOptionalRequestParams {}
impl MTRTestClusterClusterTestNullableOptionalRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestNullableOptionalRequestParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestNullableOptionalRequestParams
    for MTRTestClusterClusterTestNullableOptionalRequestParams
{
}
impl PNSCopying for MTRTestClusterClusterTestNullableOptionalRequestParams {}
impl From<MTRTestClusterClusterTestNullableOptionalRequestParams>
    for MTRUnitTestingClusterTestNullableOptionalRequestParams
{
    fn from(
        child: MTRTestClusterClusterTestNullableOptionalRequestParams,
    ) -> MTRUnitTestingClusterTestNullableOptionalRequestParams {
        MTRUnitTestingClusterTestNullableOptionalRequestParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestNullableOptionalRequestParams>
    for MTRTestClusterClusterTestNullableOptionalRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestNullableOptionalRequestParams,
    ) -> Result<MTRTestClusterClusterTestNullableOptionalRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestNullableOptionalRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestNullableOptionalRequestParams(
                parent.0,
            ))
        } else {
            Err ("This MTRUnitTestingClusterTestNullableOptionalRequestParams cannot be downcasted to MTRTestClusterClusterTestNullableOptionalRequestParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestNullableOptionalRequestParams {}
impl PNSObject for MTRTestClusterClusterTestNullableOptionalRequestParams {}
impl IMTRTestClusterClusterTestNullableOptionalRequestParams
    for MTRTestClusterClusterTestNullableOptionalRequestParams
{
}
pub trait IMTRTestClusterClusterTestNullableOptionalRequestParams: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestComplexNullableOptionalRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestComplexNullableOptionalRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestComplexNullableOptionalRequestParams {}
impl MTRUnitTestingClusterTestComplexNullableOptionalRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestComplexNullableOptionalRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestComplexNullableOptionalRequestParams {}
impl INSObject for MTRUnitTestingClusterTestComplexNullableOptionalRequestParams {}
impl PNSObject for MTRUnitTestingClusterTestComplexNullableOptionalRequestParams {}
impl std::convert::TryFrom<NSObject>
    for MTRUnitTestingClusterTestComplexNullableOptionalRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestComplexNullableOptionalRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestComplexNullableOptionalRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestComplexNullableOptionalRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestComplexNullableOptionalRequestParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestComplexNullableOptionalRequestParams
    for MTRUnitTestingClusterTestComplexNullableOptionalRequestParams
{
}
pub trait IMTRUnitTestingClusterTestComplexNullableOptionalRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn nullableInt(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableInt)
    }
    unsafe fn setNullableInt_(&self, nullableInt: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableInt : nullableInt)
    }
    unsafe fn optionalInt(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalInt)
    }
    unsafe fn setOptionalInt_(&self, optionalInt: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalInt : optionalInt)
    }
    unsafe fn nullableOptionalInt(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalInt)
    }
    unsafe fn setNullableOptionalInt_(&self, nullableOptionalInt: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalInt : nullableOptionalInt)
    }
    unsafe fn nullableString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableString)
    }
    unsafe fn setNullableString_(&self, nullableString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableString : nullableString)
    }
    unsafe fn optionalString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalString)
    }
    unsafe fn setOptionalString_(&self, optionalString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalString : optionalString)
    }
    unsafe fn nullableOptionalString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalString)
    }
    unsafe fn setNullableOptionalString_(&self, nullableOptionalString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalString : nullableOptionalString)
    }
    unsafe fn nullableStruct(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableStruct)
    }
    unsafe fn setNullableStruct_(&self, nullableStruct: MTRUnitTestingClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableStruct : nullableStruct)
    }
    unsafe fn optionalStruct(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalStruct)
    }
    unsafe fn setOptionalStruct_(&self, optionalStruct: MTRUnitTestingClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalStruct : optionalStruct)
    }
    unsafe fn nullableOptionalStruct(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalStruct)
    }
    unsafe fn setNullableOptionalStruct_(
        &self,
        nullableOptionalStruct: MTRUnitTestingClusterSimpleStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalStruct : nullableOptionalStruct)
    }
    unsafe fn nullableList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableList)
    }
    unsafe fn setNullableList_(&self, nullableList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableList : nullableList)
    }
    unsafe fn optionalList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalList)
    }
    unsafe fn setOptionalList_(&self, optionalList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalList : optionalList)
    }
    unsafe fn nullableOptionalList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalList)
    }
    unsafe fn setNullableOptionalList_(&self, nullableOptionalList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalList : nullableOptionalList)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestComplexNullableOptionalRequestParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestComplexNullableOptionalRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestComplexNullableOptionalRequestParams {}
impl MTRTestClusterClusterTestComplexNullableOptionalRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestComplexNullableOptionalRequestParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestComplexNullableOptionalRequestParams
    for MTRTestClusterClusterTestComplexNullableOptionalRequestParams
{
}
impl PNSCopying for MTRTestClusterClusterTestComplexNullableOptionalRequestParams {}
impl From<MTRTestClusterClusterTestComplexNullableOptionalRequestParams>
    for MTRUnitTestingClusterTestComplexNullableOptionalRequestParams
{
    fn from(
        child: MTRTestClusterClusterTestComplexNullableOptionalRequestParams,
    ) -> MTRUnitTestingClusterTestComplexNullableOptionalRequestParams {
        MTRUnitTestingClusterTestComplexNullableOptionalRequestParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestComplexNullableOptionalRequestParams>
    for MTRTestClusterClusterTestComplexNullableOptionalRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestComplexNullableOptionalRequestParams,
    ) -> Result<MTRTestClusterClusterTestComplexNullableOptionalRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestComplexNullableOptionalRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestComplexNullableOptionalRequestParams(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterTestComplexNullableOptionalRequestParams cannot be downcasted to MTRTestClusterClusterTestComplexNullableOptionalRequestParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestComplexNullableOptionalRequestParams {}
impl PNSObject for MTRTestClusterClusterTestComplexNullableOptionalRequestParams {}
impl IMTRTestClusterClusterTestComplexNullableOptionalRequestParams
    for MTRTestClusterClusterTestComplexNullableOptionalRequestParams
{
}
pub trait IMTRTestClusterClusterTestComplexNullableOptionalRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn nullableInt(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableInt)
    }
    unsafe fn setNullableInt_(&self, nullableInt: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableInt : nullableInt)
    }
    unsafe fn optionalInt(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalInt)
    }
    unsafe fn setOptionalInt_(&self, optionalInt: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalInt : optionalInt)
    }
    unsafe fn nullableOptionalInt(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalInt)
    }
    unsafe fn setNullableOptionalInt_(&self, nullableOptionalInt: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalInt : nullableOptionalInt)
    }
    unsafe fn nullableString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableString)
    }
    unsafe fn setNullableString_(&self, nullableString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableString : nullableString)
    }
    unsafe fn optionalString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalString)
    }
    unsafe fn setOptionalString_(&self, optionalString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalString : optionalString)
    }
    unsafe fn nullableOptionalString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalString)
    }
    unsafe fn setNullableOptionalString_(&self, nullableOptionalString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalString : nullableOptionalString)
    }
    unsafe fn nullableStruct(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableStruct)
    }
    unsafe fn setNullableStruct_(&self, nullableStruct: MTRUnitTestingClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableStruct : nullableStruct)
    }
    unsafe fn optionalStruct(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalStruct)
    }
    unsafe fn setOptionalStruct_(&self, optionalStruct: MTRUnitTestingClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalStruct : optionalStruct)
    }
    unsafe fn nullableOptionalStruct(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalStruct)
    }
    unsafe fn setNullableOptionalStruct_(
        &self,
        nullableOptionalStruct: MTRUnitTestingClusterSimpleStruct,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalStruct : nullableOptionalStruct)
    }
    unsafe fn nullableList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableList)
    }
    unsafe fn setNullableList_(&self, nullableList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableList : nullableList)
    }
    unsafe fn optionalList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, optionalList)
    }
    unsafe fn setOptionalList_(&self, optionalList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOptionalList : optionalList)
    }
    unsafe fn nullableOptionalList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nullableOptionalList)
    }
    unsafe fn setNullableOptionalList_(&self, nullableOptionalList: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNullableOptionalList : nullableOptionalList)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterSimpleStructEchoRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterSimpleStructEchoRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterSimpleStructEchoRequestParams {}
impl MTRUnitTestingClusterSimpleStructEchoRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterSimpleStructEchoRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterSimpleStructEchoRequestParams {}
impl INSObject for MTRUnitTestingClusterSimpleStructEchoRequestParams {}
impl PNSObject for MTRUnitTestingClusterSimpleStructEchoRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterSimpleStructEchoRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterSimpleStructEchoRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterSimpleStructEchoRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterSimpleStructEchoRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterSimpleStructEchoRequestParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterSimpleStructEchoRequestParams
    for MTRUnitTestingClusterSimpleStructEchoRequestParams
{
}
pub trait IMTRUnitTestingClusterSimpleStructEchoRequestParams: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: MTRUnitTestingClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterSimpleStructEchoRequestParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterSimpleStructEchoRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterSimpleStructEchoRequestParams {}
impl MTRTestClusterClusterSimpleStructEchoRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterSimpleStructEchoRequestParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterSimpleStructEchoRequestParams
    for MTRTestClusterClusterSimpleStructEchoRequestParams
{
}
impl PNSCopying for MTRTestClusterClusterSimpleStructEchoRequestParams {}
impl From<MTRTestClusterClusterSimpleStructEchoRequestParams>
    for MTRUnitTestingClusterSimpleStructEchoRequestParams
{
    fn from(
        child: MTRTestClusterClusterSimpleStructEchoRequestParams,
    ) -> MTRUnitTestingClusterSimpleStructEchoRequestParams {
        MTRUnitTestingClusterSimpleStructEchoRequestParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterSimpleStructEchoRequestParams>
    for MTRTestClusterClusterSimpleStructEchoRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterSimpleStructEchoRequestParams,
    ) -> Result<MTRTestClusterClusterSimpleStructEchoRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterSimpleStructEchoRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterSimpleStructEchoRequestParams(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterSimpleStructEchoRequestParams cannot be downcasted to MTRTestClusterClusterSimpleStructEchoRequestParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterSimpleStructEchoRequestParams {}
impl PNSObject for MTRTestClusterClusterSimpleStructEchoRequestParams {}
impl IMTRTestClusterClusterSimpleStructEchoRequestParams
    for MTRTestClusterClusterSimpleStructEchoRequestParams
{
}
pub trait IMTRTestClusterClusterSimpleStructEchoRequestParams: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> MTRUnitTestingClusterSimpleStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: MTRUnitTestingClusterSimpleStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTimedInvokeRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTimedInvokeRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTimedInvokeRequestParams {}
impl MTRUnitTestingClusterTimedInvokeRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTimedInvokeRequestParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRUnitTestingClusterTimedInvokeRequestParams {}
impl INSObject for MTRUnitTestingClusterTimedInvokeRequestParams {}
impl PNSObject for MTRUnitTestingClusterTimedInvokeRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTimedInvokeRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTimedInvokeRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTimedInvokeRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTimedInvokeRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTimedInvokeRequestParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTimedInvokeRequestParams
    for MTRUnitTestingClusterTimedInvokeRequestParams
{
}
pub trait IMTRUnitTestingClusterTimedInvokeRequestParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTimedInvokeRequestParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTimedInvokeRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTimedInvokeRequestParams {}
impl MTRTestClusterClusterTimedInvokeRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTimedInvokeRequestParams").unwrap(), alloc) })
    }
}
impl IMTRUnitTestingClusterTimedInvokeRequestParams
    for MTRTestClusterClusterTimedInvokeRequestParams
{
}
impl PNSCopying for MTRTestClusterClusterTimedInvokeRequestParams {}
impl From<MTRTestClusterClusterTimedInvokeRequestParams>
    for MTRUnitTestingClusterTimedInvokeRequestParams
{
    fn from(
        child: MTRTestClusterClusterTimedInvokeRequestParams,
    ) -> MTRUnitTestingClusterTimedInvokeRequestParams {
        MTRUnitTestingClusterTimedInvokeRequestParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTimedInvokeRequestParams>
    for MTRTestClusterClusterTimedInvokeRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTimedInvokeRequestParams,
    ) -> Result<MTRTestClusterClusterTimedInvokeRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTimedInvokeRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTimedInvokeRequestParams(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterTimedInvokeRequestParams cannot be downcasted to MTRTestClusterClusterTimedInvokeRequestParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTimedInvokeRequestParams {}
impl PNSObject for MTRTestClusterClusterTimedInvokeRequestParams {}
impl IMTRTestClusterClusterTimedInvokeRequestParams
    for MTRTestClusterClusterTimedInvokeRequestParams
{
}
pub trait IMTRTestClusterClusterTimedInvokeRequestParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams {}
impl MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams {}
impl INSObject for MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams {}
impl PNSObject for MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams {}
impl std::convert::TryFrom<NSObject>
    for MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams
    for MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams
{
}
pub trait IMTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams {}
impl MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams
    for MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams
{
}
impl PNSCopying for MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams {}
impl From<MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams>
    for MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams
{
    fn from(
        child: MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams,
    ) -> MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams {
        MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams>
    for MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams,
    ) -> Result<MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams cannot be downcasted to MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams {}
impl PNSObject for MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams {}
impl IMTRTestClusterClusterTestSimpleOptionalArgumentRequestParams
    for MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams
{
}
pub trait IMTRTestClusterClusterTestSimpleOptionalArgumentRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestEmitTestEventRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestEmitTestEventRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestEmitTestEventRequestParams {}
impl MTRUnitTestingClusterTestEmitTestEventRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestEmitTestEventRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestEmitTestEventRequestParams {}
impl INSObject for MTRUnitTestingClusterTestEmitTestEventRequestParams {}
impl PNSObject for MTRUnitTestingClusterTestEmitTestEventRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestEmitTestEventRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestEmitTestEventRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestEmitTestEventRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestEmitTestEventRequestParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestEmitTestEventRequestParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestEmitTestEventRequestParams
    for MTRUnitTestingClusterTestEmitTestEventRequestParams
{
}
pub trait IMTRUnitTestingClusterTestEmitTestEventRequestParams: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn arg2(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg2)
    }
    unsafe fn setArg2_(&self, arg2: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg2 : arg2)
    }
    unsafe fn arg3(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg3)
    }
    unsafe fn setArg3_(&self, arg3: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg3 : arg3)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestEmitTestEventRequestParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestEmitTestEventRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestEmitTestEventRequestParams {}
impl MTRTestClusterClusterTestEmitTestEventRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestEmitTestEventRequestParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestEmitTestEventRequestParams
    for MTRTestClusterClusterTestEmitTestEventRequestParams
{
}
impl PNSCopying for MTRTestClusterClusterTestEmitTestEventRequestParams {}
impl From<MTRTestClusterClusterTestEmitTestEventRequestParams>
    for MTRUnitTestingClusterTestEmitTestEventRequestParams
{
    fn from(
        child: MTRTestClusterClusterTestEmitTestEventRequestParams,
    ) -> MTRUnitTestingClusterTestEmitTestEventRequestParams {
        MTRUnitTestingClusterTestEmitTestEventRequestParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestEmitTestEventRequestParams>
    for MTRTestClusterClusterTestEmitTestEventRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestEmitTestEventRequestParams,
    ) -> Result<MTRTestClusterClusterTestEmitTestEventRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestEmitTestEventRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestEmitTestEventRequestParams(
                parent.0,
            ))
        } else {
            Err ("This MTRUnitTestingClusterTestEmitTestEventRequestParams cannot be downcasted to MTRTestClusterClusterTestEmitTestEventRequestParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestEmitTestEventRequestParams {}
impl PNSObject for MTRTestClusterClusterTestEmitTestEventRequestParams {}
impl IMTRTestClusterClusterTestEmitTestEventRequestParams
    for MTRTestClusterClusterTestEmitTestEventRequestParams
{
}
pub trait IMTRTestClusterClusterTestEmitTestEventRequestParams: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn arg2(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg2)
    }
    unsafe fn setArg2_(&self, arg2: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg2 : arg2)
    }
    unsafe fn arg3(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg3)
    }
    unsafe fn setArg3_(&self, arg3: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg3 : arg3)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams {}
impl MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams {}
impl INSObject for MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams {}
impl PNSObject for MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams {}
impl std::convert::TryFrom<NSObject>
    for MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams
    for MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams
{
}
pub trait IMTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams(pub id);
impl std::ops::Deref for MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams {}
impl MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams").unwrap(), alloc)
        })
    }
}
impl IMTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams
    for MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams
{
}
impl PNSCopying for MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams {}
impl From<MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams>
    for MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams
{
    fn from(
        child: MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams,
    ) -> MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams {
        MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams(child.0)
    }
}
impl std::convert::TryFrom<MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams>
    for MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams
{
    type Error = &'static str;
    fn try_from(
        parent: MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams,
    ) -> Result<MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams(parent.0))
        } else {
            Err ("This MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams cannot be downcasted to MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams" ,)
        }
    }
}
impl INSObject for MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams {}
impl PNSObject for MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams {}
impl IMTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams
    for MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams
{
}
pub trait IMTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestBatchHelperRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestBatchHelperRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestBatchHelperRequestParams {}
impl MTRUnitTestingClusterTestBatchHelperRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestBatchHelperRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestBatchHelperRequestParams {}
impl INSObject for MTRUnitTestingClusterTestBatchHelperRequestParams {}
impl PNSObject for MTRUnitTestingClusterTestBatchHelperRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestBatchHelperRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestBatchHelperRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestBatchHelperRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestBatchHelperRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestBatchHelperRequestParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestBatchHelperRequestParams
    for MTRUnitTestingClusterTestBatchHelperRequestParams
{
}
pub trait IMTRUnitTestingClusterTestBatchHelperRequestParams: Sized + std::ops::Deref {
    unsafe fn sleepBeforeResponseTimeMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sleepBeforeResponseTimeMs)
    }
    unsafe fn setSleepBeforeResponseTimeMs_(&self, sleepBeforeResponseTimeMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSleepBeforeResponseTimeMs : sleepBeforeResponseTimeMs)
    }
    unsafe fn sizeOfResponseBuffer(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sizeOfResponseBuffer)
    }
    unsafe fn setSizeOfResponseBuffer_(&self, sizeOfResponseBuffer: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSizeOfResponseBuffer : sizeOfResponseBuffer)
    }
    unsafe fn fillCharacter(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fillCharacter)
    }
    unsafe fn setFillCharacter_(&self, fillCharacter: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFillCharacter : fillCharacter)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestSecondBatchHelperRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestSecondBatchHelperRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestSecondBatchHelperRequestParams {}
impl MTRUnitTestingClusterTestSecondBatchHelperRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestSecondBatchHelperRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestSecondBatchHelperRequestParams {}
impl INSObject for MTRUnitTestingClusterTestSecondBatchHelperRequestParams {}
impl PNSObject for MTRUnitTestingClusterTestSecondBatchHelperRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestSecondBatchHelperRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestSecondBatchHelperRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestSecondBatchHelperRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestSecondBatchHelperRequestParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestSecondBatchHelperRequestParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestSecondBatchHelperRequestParams
    for MTRUnitTestingClusterTestSecondBatchHelperRequestParams
{
}
pub trait IMTRUnitTestingClusterTestSecondBatchHelperRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn sleepBeforeResponseTimeMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sleepBeforeResponseTimeMs)
    }
    unsafe fn setSleepBeforeResponseTimeMs_(&self, sleepBeforeResponseTimeMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSleepBeforeResponseTimeMs : sleepBeforeResponseTimeMs)
    }
    unsafe fn sizeOfResponseBuffer(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sizeOfResponseBuffer)
    }
    unsafe fn setSizeOfResponseBuffer_(&self, sizeOfResponseBuffer: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSizeOfResponseBuffer : sizeOfResponseBuffer)
    }
    unsafe fn fillCharacter(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fillCharacter)
    }
    unsafe fn setFillCharacter_(&self, fillCharacter: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFillCharacter : fillCharacter)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterStringEchoRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterStringEchoRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterStringEchoRequestParams {}
impl MTRUnitTestingClusterStringEchoRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterStringEchoRequestParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRUnitTestingClusterStringEchoRequestParams {}
impl INSObject for MTRUnitTestingClusterStringEchoRequestParams {}
impl PNSObject for MTRUnitTestingClusterStringEchoRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterStringEchoRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterStringEchoRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterStringEchoRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterStringEchoRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterStringEchoRequestParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterStringEchoRequestParams
    for MTRUnitTestingClusterStringEchoRequestParams
{
}
pub trait IMTRUnitTestingClusterStringEchoRequestParams: Sized + std::ops::Deref {
    unsafe fn payload(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, payload)
    }
    unsafe fn setPayload_(&self, payload: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPayload : payload)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterGlobalEchoRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterGlobalEchoRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterGlobalEchoRequestParams {}
impl MTRUnitTestingClusterGlobalEchoRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterGlobalEchoRequestParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRUnitTestingClusterGlobalEchoRequestParams {}
impl INSObject for MTRUnitTestingClusterGlobalEchoRequestParams {}
impl PNSObject for MTRUnitTestingClusterGlobalEchoRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterGlobalEchoRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterGlobalEchoRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterGlobalEchoRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterGlobalEchoRequestParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterGlobalEchoRequestParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterGlobalEchoRequestParams
    for MTRUnitTestingClusterGlobalEchoRequestParams
{
}
pub trait IMTRUnitTestingClusterGlobalEchoRequestParams: Sized + std::ops::Deref {
    unsafe fn field1(&self) -> MTRDataTypeTestGlobalStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, field1)
    }
    unsafe fn setField1_(&self, field1: MTRDataTypeTestGlobalStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setField1 : field1)
    }
    unsafe fn field2(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, field2)
    }
    unsafe fn setField2_(&self, field2: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setField2 : field2)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestCheckCommandFlagsParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestCheckCommandFlagsParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestCheckCommandFlagsParams {}
impl MTRUnitTestingClusterTestCheckCommandFlagsParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestCheckCommandFlagsParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestCheckCommandFlagsParams {}
impl INSObject for MTRUnitTestingClusterTestCheckCommandFlagsParams {}
impl PNSObject for MTRUnitTestingClusterTestCheckCommandFlagsParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestCheckCommandFlagsParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestCheckCommandFlagsParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestCheckCommandFlagsParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestCheckCommandFlagsParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestCheckCommandFlagsParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestCheckCommandFlagsParams
    for MTRUnitTestingClusterTestCheckCommandFlagsParams
{
}
pub trait IMTRUnitTestingClusterTestCheckCommandFlagsParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestDifferentVendorMeiRequestParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestDifferentVendorMeiRequestParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestDifferentVendorMeiRequestParams {}
impl MTRUnitTestingClusterTestDifferentVendorMeiRequestParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestDifferentVendorMeiRequestParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestDifferentVendorMeiRequestParams {}
impl INSObject for MTRUnitTestingClusterTestDifferentVendorMeiRequestParams {}
impl PNSObject for MTRUnitTestingClusterTestDifferentVendorMeiRequestParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestDifferentVendorMeiRequestParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestDifferentVendorMeiRequestParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestDifferentVendorMeiRequestParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestDifferentVendorMeiRequestParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestDifferentVendorMeiRequestParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestDifferentVendorMeiRequestParams
    for MTRUnitTestingClusterTestDifferentVendorMeiRequestParams
{
}
pub trait IMTRUnitTestingClusterTestDifferentVendorMeiRequestParams:
    Sized + std::ops::Deref
{
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRUnitTestingClusterTestDifferentVendorMeiResponseParams(pub id);
impl std::ops::Deref for MTRUnitTestingClusterTestDifferentVendorMeiResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRUnitTestingClusterTestDifferentVendorMeiResponseParams {}
impl MTRUnitTestingClusterTestDifferentVendorMeiResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestDifferentVendorMeiResponseParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRUnitTestingClusterTestDifferentVendorMeiResponseParams {}
impl INSObject for MTRUnitTestingClusterTestDifferentVendorMeiResponseParams {}
impl PNSObject for MTRUnitTestingClusterTestDifferentVendorMeiResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRUnitTestingClusterTestDifferentVendorMeiResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRUnitTestingClusterTestDifferentVendorMeiResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRUnitTestingClusterTestDifferentVendorMeiResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRUnitTestingClusterTestDifferentVendorMeiResponseParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRUnitTestingClusterTestDifferentVendorMeiResponseParams" ,)
        }
    }
}
impl IMTRUnitTestingClusterTestDifferentVendorMeiResponseParams
    for MTRUnitTestingClusterTestDifferentVendorMeiResponseParams
{
}
pub trait IMTRUnitTestingClusterTestDifferentVendorMeiResponseParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn eventNumber(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, eventNumber)
    }
    unsafe fn setEventNumber_(&self, eventNumber: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEventNumber : eventNumber)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSampleMEIClusterPingParams(pub id);
impl std::ops::Deref for MTRSampleMEIClusterPingParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSampleMEIClusterPingParams {}
impl MTRSampleMEIClusterPingParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSampleMEIClusterPingParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSampleMEIClusterPingParams {}
impl INSObject for MTRSampleMEIClusterPingParams {}
impl PNSObject for MTRSampleMEIClusterPingParams {}
impl std::convert::TryFrom<NSObject> for MTRSampleMEIClusterPingParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRSampleMEIClusterPingParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSampleMEIClusterPingParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRSampleMEIClusterPingParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRSampleMEIClusterPingParams")
        }
    }
}
impl IMTRSampleMEIClusterPingParams for MTRSampleMEIClusterPingParams {}
pub trait IMTRSampleMEIClusterPingParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSampleMEIClusterAddArgumentsResponseParams(pub id);
impl std::ops::Deref for MTRSampleMEIClusterAddArgumentsResponseParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSampleMEIClusterAddArgumentsResponseParams {}
impl MTRSampleMEIClusterAddArgumentsResponseParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSampleMEIClusterAddArgumentsResponseParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSampleMEIClusterAddArgumentsResponseParams {}
impl INSObject for MTRSampleMEIClusterAddArgumentsResponseParams {}
impl PNSObject for MTRSampleMEIClusterAddArgumentsResponseParams {}
impl std::convert::TryFrom<NSObject> for MTRSampleMEIClusterAddArgumentsResponseParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRSampleMEIClusterAddArgumentsResponseParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSampleMEIClusterAddArgumentsResponseParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRSampleMEIClusterAddArgumentsResponseParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRSampleMEIClusterAddArgumentsResponseParams" ,)
        }
    }
}
impl IMTRSampleMEIClusterAddArgumentsResponseParams
    for MTRSampleMEIClusterAddArgumentsResponseParams
{
}
pub trait IMTRSampleMEIClusterAddArgumentsResponseParams: Sized + std::ops::Deref {
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn returnValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, returnValue)
    }
    unsafe fn setReturnValue_(&self, returnValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReturnValue : returnValue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSampleMEIClusterAddArgumentsParams(pub id);
impl std::ops::Deref for MTRSampleMEIClusterAddArgumentsParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSampleMEIClusterAddArgumentsParams {}
impl MTRSampleMEIClusterAddArgumentsParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSampleMEIClusterAddArgumentsParams").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRSampleMEIClusterAddArgumentsParams {}
impl INSObject for MTRSampleMEIClusterAddArgumentsParams {}
impl PNSObject for MTRSampleMEIClusterAddArgumentsParams {}
impl std::convert::TryFrom<NSObject> for MTRSampleMEIClusterAddArgumentsParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRSampleMEIClusterAddArgumentsParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSampleMEIClusterAddArgumentsParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRSampleMEIClusterAddArgumentsParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRSampleMEIClusterAddArgumentsParams")
        }
    }
}
impl IMTRSampleMEIClusterAddArgumentsParams for MTRSampleMEIClusterAddArgumentsParams {}
pub trait IMTRSampleMEIClusterAddArgumentsParams: Sized + std::ops::Deref {
    unsafe fn arg1(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg1)
    }
    unsafe fn setArg1_(&self, arg1: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg1 : arg1)
    }
    unsafe fn arg2(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arg2)
    }
    unsafe fn setArg2_(&self, arg2: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArg2 : arg2)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalCSRInfo(pub id);
impl std::ops::Deref for MTROperationalCSRInfo {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalCSRInfo {}
impl MTROperationalCSRInfo {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalCSRInfo").unwrap(), alloc) })
    }
}
impl INSObject for MTROperationalCSRInfo {}
impl PNSObject for MTROperationalCSRInfo {}
impl std::convert::TryFrom<NSObject> for MTROperationalCSRInfo {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTROperationalCSRInfo, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalCSRInfo").unwrap()) };
        if is_kind_of {
            Ok(MTROperationalCSRInfo(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTROperationalCSRInfo")
        }
    }
}
impl IMTROperationalCSRInfo for MTROperationalCSRInfo {}
pub trait IMTROperationalCSRInfo: Sized + std::ops::Deref {
    unsafe fn initWithCSR_csrNonce_csrElementsTLV_attestationSignature_(
        &self,
        csr: NSData,
        csrNonce: NSData,
        csrElementsTLV: NSData,
        attestationSignature: NSData,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCSR : csr, csrNonce : csrNonce, csrElementsTLV : csrElementsTLV, attestationSignature : attestationSignature)
    }
    unsafe fn initWithCSRNonce_csrElementsTLV_attestationSignature_(
        &self,
        csrNonce: NSData,
        csrElementsTLV: NSData,
        attestationSignature: NSData,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCSRNonce : csrNonce, csrElementsTLV : csrElementsTLV, attestationSignature : attestationSignature)
    }
    unsafe fn initWithCSRElementsTLV_attestationSignature_(
        &self,
        csrElementsTLV: NSData,
        attestationSignature: NSData,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCSRElementsTLV : csrElementsTLV, attestationSignature : attestationSignature)
    }
    unsafe fn initWithCSRResponseParams_(
        &self,
        responseParams: MTROperationalCredentialsClusterCSRResponseParams,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCSRResponseParams : responseParams)
    }
    unsafe fn csr(&self) -> MTRCSRDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, csr)
    }
    unsafe fn csrNonce(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, csrNonce)
    }
    unsafe fn csrElementsTLV(&self) -> MTRTLVBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, csrElementsTLV)
    }
    unsafe fn attestationSignature(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attestationSignature)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct CSRInfo(pub id);
impl std::ops::Deref for CSRInfo {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for CSRInfo {}
impl CSRInfo {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"CSRInfo").unwrap(), alloc) })
    }
}
impl INSObject for CSRInfo {}
impl PNSObject for CSRInfo {}
impl std::convert::TryFrom<NSObject> for CSRInfo {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<CSRInfo, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"CSRInfo").unwrap()) };
        if is_kind_of {
            Ok(CSRInfo(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to CSRInfo")
        }
    }
}
impl ICSRInfo for CSRInfo {}
pub trait ICSRInfo: Sized + std::ops::Deref {
    unsafe fn initWithNonce_elements_elementsSignature_csr_(
        &self,
        nonce: NSData,
        elements: NSData,
        elementsSignature: NSData,
        csr: NSData,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithNonce : nonce, elements : elements, elementsSignature : elementsSignature, csr : csr)
    }
    unsafe fn nonce(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nonce)
    }
    unsafe fn setNonce_(&self, nonce: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNonce : nonce)
    }
    unsafe fn elements(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, elements)
    }
    unsafe fn setElements_(&self, elements: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setElements : elements)
    }
    unsafe fn elementsSignature(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, elementsSignature)
    }
    unsafe fn setElementsSignature_(&self, elementsSignature: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setElementsSignature : elementsSignature)
    }
    unsafe fn csr(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, csr)
    }
    unsafe fn setCsr_(&self, csr: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCsr : csr)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCertificates(pub id);
impl std::ops::Deref for MTRCertificates {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCertificates {}
impl MTRCertificates {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCertificates").unwrap(), alloc) })
    }
}
impl INSObject for MTRCertificates {}
impl PNSObject for MTRCertificates {}
impl std::convert::TryFrom<NSObject> for MTRCertificates {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRCertificates, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCertificates").unwrap()) };
        if is_kind_of {
            Ok(MTRCertificates(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRCertificates")
        }
    }
}
impl IMTRCertificates for MTRCertificates {}
pub trait IMTRCertificates: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCertificates").unwrap(), new)
    }
    unsafe fn createRootCertificate_issuerID_fabricID_validityPeriod_error_(
        keypair: *mut u64,
        issuerID: NSNumber,
        fabricID: NSNumber,
        validityPeriod: NSDateInterval,
        error: *mut NSError,
    ) -> MTRCertificateDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCertificates").unwrap(), createRootCertificate : keypair, issuerID : issuerID, fabricID : fabricID, validityPeriod : validityPeriod, error : error)
    }
    unsafe fn createRootCertificate_issuerID_fabricID_error_(
        keypair: *mut u64,
        issuerID: NSNumber,
        fabricID: NSNumber,
        error: *mut NSError,
    ) -> MTRCertificateDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCertificates").unwrap(), createRootCertificate : keypair, issuerID : issuerID, fabricID : fabricID, error : error)
    }
    unsafe fn createIntermediateCertificate_rootCertificate_intermediatePublicKey_issuerID_fabricID_validityPeriod_error_(
        rootKeypair: *mut u64,
        rootCertificate: NSData,
        intermediatePublicKey: SecKeyRef,
        issuerID: NSNumber,
        fabricID: NSNumber,
        validityPeriod: NSDateInterval,
        error: *mut NSError,
    ) -> MTRCertificateDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCertificates").unwrap(), createIntermediateCertificate : rootKeypair, rootCertificate : rootCertificate, intermediatePublicKey : intermediatePublicKey, issuerID : issuerID, fabricID : fabricID, validityPeriod : validityPeriod, error : error)
    }
    unsafe fn createIntermediateCertificate_rootCertificate_intermediatePublicKey_issuerID_fabricID_error_(
        rootKeypair: *mut u64,
        rootCertificate: NSData,
        intermediatePublicKey: SecKeyRef,
        issuerID: NSNumber,
        fabricID: NSNumber,
        error: *mut NSError,
    ) -> MTRCertificateDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCertificates").unwrap(), createIntermediateCertificate : rootKeypair, rootCertificate : rootCertificate, intermediatePublicKey : intermediatePublicKey, issuerID : issuerID, fabricID : fabricID, error : error)
    }
    unsafe fn createOperationalCertificate_signingCertificate_operationalPublicKey_fabricID_nodeID_caseAuthenticatedTags_validityPeriod_error_(
        signingKeypair: *mut u64,
        signingCertificate: NSData,
        operationalPublicKey: SecKeyRef,
        fabricID: NSNumber,
        nodeID: NSNumber,
        caseAuthenticatedTags: NSSet,
        validityPeriod: NSDateInterval,
        error: *mut NSError,
    ) -> MTRCertificateDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCertificates").unwrap(), createOperationalCertificate : signingKeypair, signingCertificate : signingCertificate, operationalPublicKey : operationalPublicKey, fabricID : fabricID, nodeID : nodeID, caseAuthenticatedTags : caseAuthenticatedTags, validityPeriod : validityPeriod, error : error)
    }
    unsafe fn createOperationalCertificate_signingCertificate_operationalPublicKey_fabricID_nodeID_caseAuthenticatedTags_error_(
        signingKeypair: *mut u64,
        signingCertificate: NSData,
        operationalPublicKey: SecKeyRef,
        fabricID: NSNumber,
        nodeID: NSNumber,
        caseAuthenticatedTags: NSSet,
        error: *mut NSError,
    ) -> MTRCertificateDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCertificates").unwrap(), createOperationalCertificate : signingKeypair, signingCertificate : signingCertificate, operationalPublicKey : operationalPublicKey, fabricID : fabricID, nodeID : nodeID, caseAuthenticatedTags : caseAuthenticatedTags, error : error)
    }
    unsafe fn keypair_matchesCertificate_(keypair: *mut u64, certificate: NSData) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCertificates").unwrap(), keypair : keypair, matchesCertificate : certificate)
    }
    unsafe fn isCertificate_equalTo_(certificate1: NSData, certificate2: NSData) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCertificates").unwrap(), isCertificate : certificate1, equalTo : certificate2)
    }
    unsafe fn createCertificateSigningRequest_error_(
        keypair: *mut u64,
        error: *mut NSError,
    ) -> MTRCSRDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCertificates").unwrap(), createCertificateSigningRequest : keypair, error : error)
    }
    unsafe fn convertX509Certificate_(x509Certificate: NSData) -> MTRCertificateTLVBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCertificates").unwrap(), convertX509Certificate : x509Certificate)
    }
    unsafe fn convertMatterCertificate_(matterCertificate: NSData) -> MTRCertificateDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCertificates").unwrap(), convertMatterCertificate : matterCertificate)
    }
    unsafe fn publicKeyFromCSR_error_(csr: NSData, error: *mut NSError) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCertificates").unwrap(), publicKeyFromCSR : csr, error : error)
    }
}
impl MTRCertificates_Deprecated for MTRCertificates {}
pub trait MTRCertificates_Deprecated: Sized + std::ops::Deref {
    unsafe fn generateRootCertificate_issuerId_fabricId_error_(
        keypair: *mut u64,
        issuerId: NSNumber,
        fabricId: NSNumber,
        error: *mut NSError,
    ) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCertificates").unwrap(), generateRootCertificate : keypair, issuerId : issuerId, fabricId : fabricId, error : error)
    }
    unsafe fn generateIntermediateCertificate_rootCertificate_intermediatePublicKey_issuerId_fabricId_error_(
        rootKeypair: *mut u64,
        rootCertificate: NSData,
        intermediatePublicKey: SecKeyRef,
        issuerId: NSNumber,
        fabricId: NSNumber,
        error: *mut NSError,
    ) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCertificates").unwrap(), generateIntermediateCertificate : rootKeypair, rootCertificate : rootCertificate, intermediatePublicKey : intermediatePublicKey, issuerId : issuerId, fabricId : fabricId, error : error)
    }
    unsafe fn generateOperationalCertificate_signingCertificate_operationalPublicKey_fabricId_nodeId_caseAuthenticatedTags_error_(
        signingKeypair: *mut u64,
        signingCertificate: NSData,
        operationalPublicKey: SecKeyRef,
        fabricId: NSNumber,
        nodeId: NSNumber,
        caseAuthenticatedTags: NSArray,
        error: *mut NSError,
    ) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCertificates").unwrap(), generateOperationalCertificate : signingKeypair, signingCertificate : signingCertificate, operationalPublicKey : operationalPublicKey, fabricId : fabricId, nodeId : nodeId, caseAuthenticatedTags : caseAuthenticatedTags, error : error)
    }
    unsafe fn generateCertificateSigningRequest_error_(
        keypair: *mut u64,
        error: *mut NSError,
    ) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCertificates").unwrap(), generateCertificateSigningRequest : keypair, error : error)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceAttestationInfo(pub id);
impl std::ops::Deref for MTRDeviceAttestationInfo {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceAttestationInfo {}
impl MTRDeviceAttestationInfo {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceAttestationInfo").unwrap(), alloc) })
    }
}
impl INSObject for MTRDeviceAttestationInfo {}
impl PNSObject for MTRDeviceAttestationInfo {}
impl std::convert::TryFrom<NSObject> for MTRDeviceAttestationInfo {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDeviceAttestationInfo, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceAttestationInfo").unwrap()) };
        if is_kind_of {
            Ok(MTRDeviceAttestationInfo(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDeviceAttestationInfo")
        }
    }
}
impl IMTRDeviceAttestationInfo for MTRDeviceAttestationInfo {}
pub trait IMTRDeviceAttestationInfo: Sized + std::ops::Deref {
    unsafe fn initWithDeviceAttestationChallenge_nonce_elementsTLV_elementsSignature_deviceAttestationCertificate_productAttestationIntermediateCertificate_certificationDeclaration_firmwareInfo_(
        &self,
        challenge: NSData,
        nonce: NSData,
        elementsTLV: NSData,
        elementsSignature: NSData,
        deviceAttestationCertificate: NSData,
        processAttestationIntermediateCertificate: NSData,
        certificationDeclaration: NSData,
        firmwareInfo: NSData,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDeviceAttestationChallenge : challenge, nonce : nonce, elementsTLV : elementsTLV, elementsSignature : elementsSignature, deviceAttestationCertificate : deviceAttestationCertificate, productAttestationIntermediateCertificate : processAttestationIntermediateCertificate, certificationDeclaration : certificationDeclaration, firmwareInfo : firmwareInfo)
    }
    unsafe fn challenge(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, challenge)
    }
    unsafe fn nonce(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nonce)
    }
    unsafe fn elementsTLV(&self) -> MTRTLVBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, elementsTLV)
    }
    unsafe fn elementsSignature(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, elementsSignature)
    }
    unsafe fn deviceAttestationCertificate(&self) -> MTRCertificateDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deviceAttestationCertificate)
    }
    unsafe fn productAttestationIntermediateCertificate(&self) -> MTRCertificateDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, productAttestationIntermediateCertificate)
    }
    unsafe fn certificationDeclaration(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, certificationDeclaration)
    }
    unsafe fn firmwareInfo(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, firmwareInfo)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct AttestationInfo(pub id);
impl std::ops::Deref for AttestationInfo {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for AttestationInfo {}
impl AttestationInfo {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"AttestationInfo").unwrap(), alloc) })
    }
}
impl INSObject for AttestationInfo {}
impl PNSObject for AttestationInfo {}
impl std::convert::TryFrom<NSObject> for AttestationInfo {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<AttestationInfo, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"AttestationInfo").unwrap()) };
        if is_kind_of {
            Ok(AttestationInfo(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to AttestationInfo")
        }
    }
}
impl IAttestationInfo for AttestationInfo {}
pub trait IAttestationInfo: Sized + std::ops::Deref {
    unsafe fn initWithChallenge_nonce_elements_elementsSignature_dac_pai_certificationDeclaration_firmwareInfo_(
        &self,
        challenge: NSData,
        nonce: NSData,
        elements: NSData,
        elementsSignature: NSData,
        dac: NSData,
        pai: NSData,
        certificationDeclaration: NSData,
        firmwareInfo: NSData,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithChallenge : challenge, nonce : nonce, elements : elements, elementsSignature : elementsSignature, dac : dac, pai : pai, certificationDeclaration : certificationDeclaration, firmwareInfo : firmwareInfo)
    }
    unsafe fn challenge(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, challenge)
    }
    unsafe fn setChallenge_(&self, challenge: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChallenge : challenge)
    }
    unsafe fn nonce(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nonce)
    }
    unsafe fn setNonce_(&self, nonce: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNonce : nonce)
    }
    unsafe fn elements(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, elements)
    }
    unsafe fn setElements_(&self, elements: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setElements : elements)
    }
    unsafe fn elementsSignature(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, elementsSignature)
    }
    unsafe fn setElementsSignature_(&self, elementsSignature: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setElementsSignature : elementsSignature)
    }
    unsafe fn dac(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dac)
    }
    unsafe fn setDac_(&self, dac: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDac : dac)
    }
    unsafe fn pai(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pai)
    }
    unsafe fn setPai_(&self, pai: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPai : pai)
    }
    unsafe fn certificationDeclaration(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, certificationDeclaration)
    }
    unsafe fn setCertificationDeclaration_(&self, certificationDeclaration: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCertificationDeclaration : certificationDeclaration)
    }
    unsafe fn firmwareInfo(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, firmwareInfo)
    }
    unsafe fn setFirmwareInfo_(&self, firmwareInfo: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFirmwareInfo : firmwareInfo)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROperationalCertificateChain(pub id);
impl std::ops::Deref for MTROperationalCertificateChain {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROperationalCertificateChain {}
impl MTROperationalCertificateChain {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalCertificateChain").unwrap(), alloc) })
    }
}
impl INSObject for MTROperationalCertificateChain {}
impl PNSObject for MTROperationalCertificateChain {}
impl std::convert::TryFrom<NSObject> for MTROperationalCertificateChain {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTROperationalCertificateChain, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROperationalCertificateChain").unwrap())
        };
        if is_kind_of {
            Ok(MTROperationalCertificateChain(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTROperationalCertificateChain")
        }
    }
}
impl IMTROperationalCertificateChain for MTROperationalCertificateChain {}
pub trait IMTROperationalCertificateChain: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithOperationalCertificate_intermediateCertificate_rootCertificate_adminSubject_(
        &self,
        operationalCertificate: NSData,
        intermediateCertificate: NSData,
        rootCertificate: NSData,
        adminSubject: NSNumber,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithOperationalCertificate : operationalCertificate, intermediateCertificate : intermediateCertificate, rootCertificate : rootCertificate, adminSubject : adminSubject)
    }
    unsafe fn operationalCertificate(&self) -> MTRCertificateDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationalCertificate)
    }
    unsafe fn setOperationalCertificate_(&self, operationalCertificate: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationalCertificate : operationalCertificate)
    }
    unsafe fn intermediateCertificate(&self) -> MTRCertificateDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, intermediateCertificate)
    }
    unsafe fn setIntermediateCertificate_(&self, intermediateCertificate: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIntermediateCertificate : intermediateCertificate)
    }
    unsafe fn rootCertificate(&self) -> MTRCertificateDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rootCertificate)
    }
    unsafe fn setRootCertificate_(&self, rootCertificate: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRootCertificate : rootCertificate)
    }
    unsafe fn adminSubject(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, adminSubject)
    }
    unsafe fn setAdminSubject_(&self, adminSubject: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAdminSubject : adminSubject)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTROperationalCertificateChain").unwrap(), new)
    }
}
pub trait PMTROperationalCertificateIssuer: Sized + std::ops::Deref {
    unsafe fn issueOperationalCertificateForRequest_attestationInfo_controller_completion_(
        &self,
        csrInfo: MTROperationalCSRInfo,
        attestationInfo: MTRDeviceAttestationInfo,
        controller: MTRDeviceController,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, issueOperationalCertificateForRequest : csrInfo, attestationInfo : attestationInfo, controller : controller, completion : completion)
    }
    unsafe fn shouldSkipAttestationCertificateValidation(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shouldSkipAttestationCertificateValidation)
    }
}
pub type MTRNOCChainGenerationCompleteHandler = *mut ::std::os::raw::c_void;
pub trait PMTRNOCChainIssuer: Sized + std::ops::Deref {
    unsafe fn onNOCChainGenerationNeeded_attestationInfo_onNOCChainGenerationComplete_(
        &self,
        csrInfo: CSRInfo,
        attestationInfo: AttestationInfo,
        onNOCChainGenerationComplete: MTRNOCChainGenerationCompleteHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onNOCChainGenerationNeeded : csrInfo, attestationInfo : attestationInfo, onNOCChainGenerationComplete : onNOCChainGenerationComplete)
    }
}
pub type MTRDeviceConnectionCallback = *mut ::std::os::raw::c_void;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceController(pub id);
impl std::ops::Deref for MTRDeviceController {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceController {}
impl MTRDeviceController {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceController").unwrap(), alloc) })
    }
}
impl INSObject for MTRDeviceController {}
impl PNSObject for MTRDeviceController {}
impl std::convert::TryFrom<NSObject> for MTRDeviceController {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDeviceController, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceController").unwrap()) };
        if is_kind_of {
            Ok(MTRDeviceController(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDeviceController")
        }
    }
}
impl IMTRDeviceController for MTRDeviceController {}
pub trait IMTRDeviceController: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithParameters_error_(
        &self,
        parameters: MTRDeviceControllerAbstractParameters,
        error: *mut NSError,
    ) -> MTRDeviceController
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithParameters : parameters, error : error)
    }
    unsafe fn setupCommissioningSessionWithPayload_newNodeID_error_(
        &self,
        payload: MTRSetupPayload,
        newNodeID: NSNumber,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setupCommissioningSessionWithPayload : payload, newNodeID : newNodeID, error : error)
    }
    unsafe fn setupCommissioningSessionWithDiscoveredDevice_payload_newNodeID_error_(
        &self,
        discoveredDevice: MTRCommissionableBrowserResult,
        payload: MTRSetupPayload,
        newNodeID: NSNumber,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setupCommissioningSessionWithDiscoveredDevice : discoveredDevice, payload : payload, newNodeID : newNodeID, error : error)
    }
    unsafe fn commissionNodeWithID_commissioningParams_error_(
        &self,
        nodeID: NSNumber,
        commissioningParams: MTRCommissioningParameters,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commissionNodeWithID : nodeID, commissioningParams : commissioningParams, error : error)
    }
    unsafe fn continueCommissioningDevice_ignoreAttestationFailure_error_(
        &self,
        opaqueDeviceHandle: *mut ::std::os::raw::c_void,
        ignoreAttestationFailure: BOOL,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, continueCommissioningDevice : opaqueDeviceHandle, ignoreAttestationFailure : ignoreAttestationFailure, error : error)
    }
    unsafe fn cancelCommissioningForNodeID_error_(
        &self,
        nodeID: NSNumber,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelCommissioningForNodeID : nodeID, error : error)
    }
    unsafe fn deviceBeingCommissionedWithNodeID_error_(
        &self,
        nodeID: NSNumber,
        error: *mut NSError,
    ) -> MTRBaseDevice
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceBeingCommissionedWithNodeID : nodeID, error : error)
    }
    unsafe fn preWarmCommissioningSession(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, preWarmCommissioningSession)
    }
    unsafe fn setDeviceControllerDelegate_queue_(&self, delegate: *mut u64, queue: NSObject)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDeviceControllerDelegate : delegate, queue : queue)
    }
    unsafe fn addDeviceControllerDelegate_queue_(&self, delegate: *mut u64, queue: NSObject)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addDeviceControllerDelegate : delegate, queue : queue)
    }
    unsafe fn removeDeviceControllerDelegate_(&self, delegate: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeDeviceControllerDelegate : delegate)
    }
    unsafe fn startBrowseForCommissionables_queue_(
        &self,
        delegate: *mut u64,
        queue: NSObject,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startBrowseForCommissionables : delegate, queue : queue)
    }
    unsafe fn stopBrowseForCommissionables(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stopBrowseForCommissionables)
    }
    unsafe fn attestationChallengeForDeviceID_(&self, deviceID: NSNumber) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, attestationChallengeForDeviceID : deviceID)
    }
    unsafe fn addServerEndpoint_(&self, endpoint: MTRServerEndpoint) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addServerEndpoint : endpoint)
    }
    unsafe fn removeServerEndpoint_queue_completion_(
        &self,
        endpoint: MTRServerEndpoint,
        queue: NSObject,
        completion: dispatch_block_t,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeServerEndpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn removeServerEndpoint_(&self, endpoint: MTRServerEndpoint)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeServerEndpoint : endpoint)
    }
    unsafe fn forgetDeviceWithNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, forgetDeviceWithNodeID : nodeID)
    }
    unsafe fn suspend(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, suspend)
    }
    unsafe fn resume(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resume)
    }
    unsafe fn shutdown(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shutdown)
    }
    unsafe fn isRunning(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isRunning)
    }
    unsafe fn isSuspended(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isSuspended)
    }
    unsafe fn uniqueIdentifier(&self) -> NSUUID
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, uniqueIdentifier)
    }
    unsafe fn controllerNodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, controllerNodeID)
    }
    unsafe fn devices(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, devices)
    }
    unsafe fn nodesWithStoredData(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodesWithStoredData)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceController").unwrap(), new)
    }
    unsafe fn computePASEVerifierForSetupPasscode_iterations_salt_error_(
        setupPasscode: NSNumber,
        iterations: NSNumber,
        salt: NSData,
        error: *mut NSError,
    ) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceController").unwrap(), computePASEVerifierForSetupPasscode : setupPasscode, iterations : iterations, salt : salt, error : error)
    }
}
impl MTRDeviceController_Deprecated for MTRDeviceController {}
pub trait MTRDeviceController_Deprecated: Sized + std::ops::Deref {
    unsafe fn fetchAttestationChallengeForDeviceId_(&self, deviceId: u64) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fetchAttestationChallengeForDeviceId : deviceId)
    }
    unsafe fn getBaseDevice_queue_completionHandler_(
        &self,
        deviceID: u64,
        queue: NSObject,
        completionHandler: MTRDeviceConnectionCallback,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getBaseDevice : deviceID, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn pairDevice_discriminator_setupPINCode_error_(
        &self,
        deviceID: u64,
        discriminator: u16,
        setupPINCode: u32,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pairDevice : deviceID, discriminator : discriminator, setupPINCode : setupPINCode, error : error)
    }
    unsafe fn pairDevice_address_port_setupPINCode_error_(
        &self,
        deviceID: u64,
        address: NSString,
        port: u16,
        setupPINCode: u32,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pairDevice : deviceID, address : address, port : port, setupPINCode : setupPINCode, error : error)
    }
    unsafe fn pairDevice_onboardingPayload_error_(
        &self,
        deviceID: u64,
        onboardingPayload: NSString,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pairDevice : deviceID, onboardingPayload : onboardingPayload, error : error)
    }
    unsafe fn commissionDevice_commissioningParams_error_(
        &self,
        deviceId: u64,
        commissioningParams: MTRCommissioningParameters,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commissionDevice : deviceId, commissioningParams : commissioningParams, error : error)
    }
    unsafe fn stopDevicePairing_error_(&self, deviceID: u64, error: *mut NSError) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopDevicePairing : deviceID, error : error)
    }
    unsafe fn getDeviceBeingCommissioned_error_(
        &self,
        deviceId: u64,
        error: *mut NSError,
    ) -> MTRBaseDevice
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getDeviceBeingCommissioned : deviceId, error : error)
    }
    unsafe fn openPairingWindow_duration_error_(
        &self,
        deviceID: u64,
        duration: NSUInteger,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, openPairingWindow : deviceID, duration : duration, error : error)
    }
    unsafe fn openPairingWindowWithPIN_duration_discriminator_setupPIN_error_(
        &self,
        deviceID: u64,
        duration: NSUInteger,
        discriminator: NSUInteger,
        setupPIN: NSUInteger,
        error: *mut NSError,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, openPairingWindowWithPIN : deviceID, duration : duration, discriminator : discriminator, setupPIN : setupPIN, error : error)
    }
    unsafe fn computePaseVerifier_iterations_salt_(
        &self,
        setupPincode: u32,
        iterations: u32,
        salt: NSData,
    ) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, computePaseVerifier : setupPincode, iterations : iterations, salt : salt)
    }
    unsafe fn setPairingDelegate_queue_(&self, delegate: *mut u64, queue: NSObject)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPairingDelegate : delegate, queue : queue)
    }
    unsafe fn setNocChainIssuer_queue_(&self, nocChainIssuer: *mut u64, queue: NSObject)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNocChainIssuer : nocChainIssuer, queue : queue)
    }
    unsafe fn controllerNodeId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, controllerNodeId)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterStateCacheContainer(pub id);
impl std::ops::Deref for MTRClusterStateCacheContainer {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterStateCacheContainer {}
impl MTRClusterStateCacheContainer {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterStateCacheContainer").unwrap(), alloc) })
    }
}
impl INSObject for MTRClusterStateCacheContainer {}
impl PNSObject for MTRClusterStateCacheContainer {}
impl std::convert::TryFrom<NSObject> for MTRClusterStateCacheContainer {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRClusterStateCacheContainer, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterStateCacheContainer").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterStateCacheContainer(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRClusterStateCacheContainer")
        }
    }
}
impl IMTRClusterStateCacheContainer for MTRClusterStateCacheContainer {}
pub trait IMTRClusterStateCacheContainer: Sized + std::ops::Deref {
    unsafe fn readAttributesWithEndpointID_clusterID_attributeID_queue_completion_(
        &self,
        endpointID: NSNumber,
        clusterID: NSNumber,
        attributeID: NSNumber,
        queue: NSObject,
        completion: MTRDeviceResponseHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributesWithEndpointID : endpointID, clusterID : clusterID, attributeID : attributeID, queue : queue, completion : completion)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAttributeCacheContainer(pub id);
impl std::ops::Deref for MTRAttributeCacheContainer {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAttributeCacheContainer {}
impl MTRAttributeCacheContainer {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAttributeCacheContainer").unwrap(), alloc) })
    }
}
impl INSObject for MTRAttributeCacheContainer {}
impl PNSObject for MTRAttributeCacheContainer {}
impl std::convert::TryFrom<NSObject> for MTRAttributeCacheContainer {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRAttributeCacheContainer, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAttributeCacheContainer").unwrap()) };
        if is_kind_of {
            Ok(MTRAttributeCacheContainer(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRAttributeCacheContainer")
        }
    }
}
impl IMTRAttributeCacheContainer for MTRAttributeCacheContainer {}
pub trait IMTRAttributeCacheContainer: Sized + std::ops::Deref {
    unsafe fn readAttributeWithEndpointId_clusterId_attributeId_clientQueue_completion_(
        &self,
        endpointId: NSNumber,
        clusterId: NSNumber,
        attributeId: NSNumber,
        clientQueue: NSObject,
        completion: MTRDeviceResponseHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWithEndpointId : endpointId, clusterId : clusterId, attributeId : attributeId, clientQueue : clientQueue, completion : completion)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterIdentify(pub id);
impl std::ops::Deref for MTRBaseClusterIdentify {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterIdentify {}
impl MTRBaseClusterIdentify {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIdentify").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterIdentify {}
impl From<MTRBaseClusterIdentify> for MTRGenericBaseCluster {
    fn from(child: MTRBaseClusterIdentify) -> MTRGenericBaseCluster {
        MTRGenericBaseCluster(child.0)
    }
}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterIdentify {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterIdentify, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterIdentify").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterIdentify(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterIdentify")
        }
    }
}
impl IMTRCluster for MTRBaseClusterIdentify {}
impl INSObject for MTRBaseClusterIdentify {}
impl PNSObject for MTRBaseClusterIdentify {}
impl IMTRBaseClusterIdentify for MTRBaseClusterIdentify {}
pub trait IMTRBaseClusterIdentify: Sized + std::ops::Deref {
    unsafe fn identifyWithParams_completion_(
        &self,
        params: MTRIdentifyClusterIdentifyParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, identifyWithParams : params, completion : completion)
    }
    unsafe fn triggerEffectWithParams_completion_(
        &self,
        params: MTRIdentifyClusterTriggerEffectParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, triggerEffectWithParams : params, completion : completion)
    }
    unsafe fn readAttributeIdentifyTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeIdentifyTimeWithCompletion : completion)
    }
    unsafe fn writeAttributeIdentifyTimeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeIdentifyTimeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeIdentifyTimeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeIdentifyTimeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeIdentifyTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeIdentifyTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeIdentifyTypeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeIdentifyTypeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeIdentifyTypeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeIdentifyTypeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeIdentifyTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIdentify").unwrap(), readAttributeIdentifyTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeIdentifyTypeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIdentify").unwrap(), readAttributeIdentifyTypeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIdentify").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIdentify").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIdentify").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIdentify").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIdentify").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIdentify").unwrap(), new)
    }
}
impl MTRBaseClusterIdentify_Availability for MTRBaseClusterIdentify {}
pub trait MTRBaseClusterIdentify_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterGroups(pub id);
impl std::ops::Deref for MTRBaseClusterGroups {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterGroups {}
impl MTRBaseClusterGroups {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroups").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterGroups {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterGroups {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterGroups, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterGroups").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterGroups(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterGroups")
        }
    }
}
impl IMTRCluster for MTRBaseClusterGroups {}
impl INSObject for MTRBaseClusterGroups {}
impl PNSObject for MTRBaseClusterGroups {}
impl IMTRBaseClusterGroups for MTRBaseClusterGroups {}
pub trait IMTRBaseClusterGroups: Sized + std::ops::Deref {
    unsafe fn addGroupWithParams_completion_(
        &self,
        params: MTRGroupsClusterAddGroupParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addGroupWithParams : params, completion : completion)
    }
    unsafe fn viewGroupWithParams_completion_(
        &self,
        params: MTRGroupsClusterViewGroupParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, viewGroupWithParams : params, completion : completion)
    }
    unsafe fn getGroupMembershipWithParams_completion_(
        &self,
        params: MTRGroupsClusterGetGroupMembershipParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getGroupMembershipWithParams : params, completion : completion)
    }
    unsafe fn removeGroupWithParams_completion_(
        &self,
        params: MTRGroupsClusterRemoveGroupParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeGroupWithParams : params, completion : completion)
    }
    unsafe fn removeAllGroupsWithParams_completion_(
        &self,
        params: MTRGroupsClusterRemoveAllGroupsParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeAllGroupsWithParams : params, completion : completion)
    }
    unsafe fn removeAllGroupsWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeAllGroupsWithCompletion : completion)
    }
    unsafe fn addGroupIfIdentifyingWithParams_completion_(
        &self,
        params: MTRGroupsClusterAddGroupIfIdentifyingParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addGroupIfIdentifyingWithParams : params, completion : completion)
    }
    unsafe fn readAttributeNameSupportWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNameSupportWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNameSupportWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNameSupportWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeNameSupportWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroups").unwrap(), readAttributeNameSupportWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroups").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroups").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroups").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroups").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroups").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroups").unwrap(), new)
    }
}
impl MTRBaseClusterGroups_Availability for MTRBaseClusterGroups {}
pub trait MTRBaseClusterGroups_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterOnOff(pub id);
impl std::ops::Deref for MTRBaseClusterOnOff {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterOnOff {}
impl MTRBaseClusterOnOff {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterOnOff {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterOnOff {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterOnOff, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterOnOff(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterOnOff")
        }
    }
}
impl IMTRCluster for MTRBaseClusterOnOff {}
impl INSObject for MTRBaseClusterOnOff {}
impl PNSObject for MTRBaseClusterOnOff {}
impl IMTRBaseClusterOnOff for MTRBaseClusterOnOff {}
pub trait IMTRBaseClusterOnOff: Sized + std::ops::Deref {
    unsafe fn offWithParams_completion_(
        &self,
        params: MTROnOffClusterOffParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, offWithParams : params, completion : completion)
    }
    unsafe fn offWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, offWithCompletion : completion)
    }
    unsafe fn onWithParams_completion_(
        &self,
        params: MTROnOffClusterOnParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onWithParams : params, completion : completion)
    }
    unsafe fn onWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onWithCompletion : completion)
    }
    unsafe fn toggleWithParams_completion_(
        &self,
        params: MTROnOffClusterToggleParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, toggleWithParams : params, completion : completion)
    }
    unsafe fn toggleWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, toggleWithCompletion : completion)
    }
    unsafe fn offWithEffectWithParams_completion_(
        &self,
        params: MTROnOffClusterOffWithEffectParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, offWithEffectWithParams : params, completion : completion)
    }
    unsafe fn onWithRecallGlobalSceneWithParams_completion_(
        &self,
        params: MTROnOffClusterOnWithRecallGlobalSceneParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onWithRecallGlobalSceneWithParams : params, completion : completion)
    }
    unsafe fn onWithRecallGlobalSceneWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onWithRecallGlobalSceneWithCompletion : completion)
    }
    unsafe fn onWithTimedOffWithParams_completion_(
        &self,
        params: MTROnOffClusterOnWithTimedOffParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onWithTimedOffWithParams : params, completion : completion)
    }
    unsafe fn readAttributeOnOffWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnOffWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOnOffWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOnOffWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGlobalSceneControlWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGlobalSceneControlWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGlobalSceneControlWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGlobalSceneControlWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOnTimeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnTimeWithCompletion : completion)
    }
    unsafe fn writeAttributeOnTimeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnTimeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeOnTimeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnTimeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeOnTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOnTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOffWaitTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOffWaitTimeWithCompletion : completion)
    }
    unsafe fn writeAttributeOffWaitTimeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOffWaitTimeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeOffWaitTimeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOffWaitTimeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeOffWaitTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOffWaitTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStartUpOnOffWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStartUpOnOffWithCompletion : completion)
    }
    unsafe fn writeAttributeStartUpOnOffWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpOnOffWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeStartUpOnOffWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpOnOffWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeStartUpOnOffWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStartUpOnOffWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeOnOffWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), readAttributeOnOffWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGlobalSceneControlWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), readAttributeGlobalSceneControlWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOnTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), readAttributeOnTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOffWaitTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), readAttributeOffWaitTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeStartUpOnOffWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), readAttributeStartUpOnOffWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), new)
    }
}
impl MTRBaseClusterOnOff_Availability for MTRBaseClusterOnOff {}
pub trait MTRBaseClusterOnOff_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterLevelControl(pub id);
impl std::ops::Deref for MTRBaseClusterLevelControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterLevelControl {}
impl MTRBaseClusterLevelControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterLevelControl {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterLevelControl {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterLevelControl, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterLevelControl(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterLevelControl")
        }
    }
}
impl IMTRCluster for MTRBaseClusterLevelControl {}
impl INSObject for MTRBaseClusterLevelControl {}
impl PNSObject for MTRBaseClusterLevelControl {}
impl IMTRBaseClusterLevelControl for MTRBaseClusterLevelControl {}
pub trait IMTRBaseClusterLevelControl: Sized + std::ops::Deref {
    unsafe fn moveToLevelWithParams_completion_(
        &self,
        params: MTRLevelControlClusterMoveToLevelParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToLevelWithParams : params, completion : completion)
    }
    unsafe fn moveWithParams_completion_(
        &self,
        params: MTRLevelControlClusterMoveParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveWithParams : params, completion : completion)
    }
    unsafe fn stepWithParams_completion_(
        &self,
        params: MTRLevelControlClusterStepParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepWithParams : params, completion : completion)
    }
    unsafe fn stopWithParams_completion_(
        &self,
        params: MTRLevelControlClusterStopParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithParams : params, completion : completion)
    }
    unsafe fn moveToLevelWithOnOffWithParams_completion_(
        &self,
        params: MTRLevelControlClusterMoveToLevelWithOnOffParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToLevelWithOnOffWithParams : params, completion : completion)
    }
    unsafe fn moveWithOnOffWithParams_completion_(
        &self,
        params: MTRLevelControlClusterMoveWithOnOffParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveWithOnOffWithParams : params, completion : completion)
    }
    unsafe fn stepWithOnOffWithParams_completion_(
        &self,
        params: MTRLevelControlClusterStepWithOnOffParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepWithOnOffWithParams : params, completion : completion)
    }
    unsafe fn stopWithOnOffWithParams_completion_(
        &self,
        params: MTRLevelControlClusterStopWithOnOffParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithOnOffWithParams : params, completion : completion)
    }
    unsafe fn moveToClosestFrequencyWithParams_completion_(
        &self,
        params: MTRLevelControlClusterMoveToClosestFrequencyParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToClosestFrequencyWithParams : params, completion : completion)
    }
    unsafe fn readAttributeCurrentLevelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentLevelWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRemainingTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRemainingTimeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRemainingTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRemainingTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinLevelWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinLevelWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxLevelWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxLevelWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentFrequencyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentFrequencyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentFrequencyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentFrequencyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinFrequencyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinFrequencyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinFrequencyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinFrequencyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxFrequencyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxFrequencyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxFrequencyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxFrequencyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOptionsWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOptionsWithCompletion : completion)
    }
    unsafe fn writeAttributeOptionsWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOptionsWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeOptionsWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOptionsWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeOptionsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOptionsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOnOffTransitionTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnOffTransitionTimeWithCompletion : completion)
    }
    unsafe fn writeAttributeOnOffTransitionTimeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnOffTransitionTimeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeOnOffTransitionTimeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnOffTransitionTimeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeOnOffTransitionTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOnOffTransitionTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOnLevelWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnLevelWithCompletion : completion)
    }
    unsafe fn writeAttributeOnLevelWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnLevelWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeOnLevelWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnLevelWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeOnLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOnLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOnTransitionTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnTransitionTimeWithCompletion : completion)
    }
    unsafe fn writeAttributeOnTransitionTimeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnTransitionTimeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeOnTransitionTimeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnTransitionTimeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeOnTransitionTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOnTransitionTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOffTransitionTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOffTransitionTimeWithCompletion : completion)
    }
    unsafe fn writeAttributeOffTransitionTimeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOffTransitionTimeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeOffTransitionTimeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOffTransitionTimeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeOffTransitionTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOffTransitionTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDefaultMoveRateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultMoveRateWithCompletion : completion)
    }
    unsafe fn writeAttributeDefaultMoveRateWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultMoveRateWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeDefaultMoveRateWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultMoveRateWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeDefaultMoveRateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDefaultMoveRateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStartUpCurrentLevelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStartUpCurrentLevelWithCompletion : completion)
    }
    unsafe fn writeAttributeStartUpCurrentLevelWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpCurrentLevelWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeStartUpCurrentLevelWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpCurrentLevelWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeStartUpCurrentLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStartUpCurrentLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeCurrentLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeCurrentLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRemainingTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeRemainingTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeMinLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeMaxLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentFrequencyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeCurrentFrequencyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinFrequencyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeMinFrequencyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxFrequencyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeMaxFrequencyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOptionsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeOptionsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOnOffTransitionTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeOnOffTransitionTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOnLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeOnLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOnTransitionTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeOnTransitionTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOffTransitionTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeOffTransitionTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDefaultMoveRateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeDefaultMoveRateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeStartUpCurrentLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeStartUpCurrentLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), new)
    }
}
impl MTRBaseClusterLevelControl_Availability for MTRBaseClusterLevelControl {}
pub trait MTRBaseClusterLevelControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterPulseWidthModulation(pub id);
impl std::ops::Deref for MTRBaseClusterPulseWidthModulation {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterPulseWidthModulation {}
impl MTRBaseClusterPulseWidthModulation {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPulseWidthModulation").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterPulseWidthModulation {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterPulseWidthModulation {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterPulseWidthModulation, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterPulseWidthModulation").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterPulseWidthModulation(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterPulseWidthModulation" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterPulseWidthModulation {}
impl INSObject for MTRBaseClusterPulseWidthModulation {}
impl PNSObject for MTRBaseClusterPulseWidthModulation {}
impl IMTRBaseClusterPulseWidthModulation for MTRBaseClusterPulseWidthModulation {}
pub trait IMTRBaseClusterPulseWidthModulation: Sized + std::ops::Deref {
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPulseWidthModulation").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPulseWidthModulation").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPulseWidthModulation").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPulseWidthModulation").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPulseWidthModulation").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPulseWidthModulation").unwrap(), new)
    }
}
impl MTRBaseClusterPulseWidthModulation_Availability for MTRBaseClusterPulseWidthModulation {}
pub trait MTRBaseClusterPulseWidthModulation_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterDescriptor(pub id);
impl std::ops::Deref for MTRBaseClusterDescriptor {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterDescriptor {}
impl MTRBaseClusterDescriptor {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterDescriptor {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterDescriptor {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterDescriptor, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterDescriptor(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterDescriptor")
        }
    }
}
impl IMTRCluster for MTRBaseClusterDescriptor {}
impl INSObject for MTRBaseClusterDescriptor {}
impl PNSObject for MTRBaseClusterDescriptor {}
impl IMTRBaseClusterDescriptor for MTRBaseClusterDescriptor {}
pub trait IMTRBaseClusterDescriptor: Sized + std::ops::Deref {
    unsafe fn readAttributeDeviceTypeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDeviceTypeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDeviceTypeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDeviceTypeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeServerListWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeServerListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeServerListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeServerListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClientListWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClientListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClientListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClientListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePartsListWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePartsListWithCompletion : completion)
    }
    unsafe fn subscribeAttributePartsListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePartsListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTagListWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTagListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTagListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTagListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEndpointUniqueIDWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEndpointUniqueIDWithCompletion : completion)
    }
    unsafe fn subscribeAttributeEndpointUniqueIDWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEndpointUniqueIDWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeDeviceTypeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), readAttributeDeviceTypeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeServerListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), readAttributeServerListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClientListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), readAttributeClientListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePartsListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), readAttributePartsListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTagListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), readAttributeTagListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEndpointUniqueIDWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), readAttributeEndpointUniqueIDWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), new)
    }
}
impl MTRBaseClusterDescriptor_Availability for MTRBaseClusterDescriptor {}
pub trait MTRBaseClusterDescriptor_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterBinding(pub id);
impl std::ops::Deref for MTRBaseClusterBinding {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterBinding {}
impl MTRBaseClusterBinding {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinding").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterBinding {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterBinding {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterBinding, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterBinding").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterBinding(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterBinding")
        }
    }
}
impl IMTRCluster for MTRBaseClusterBinding {}
impl INSObject for MTRBaseClusterBinding {}
impl PNSObject for MTRBaseClusterBinding {}
impl IMTRBaseClusterBinding for MTRBaseClusterBinding {}
pub trait IMTRBaseClusterBinding: Sized + std::ops::Deref {
    unsafe fn readAttributeBindingWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBindingWithParams : params, completion : completion)
    }
    unsafe fn writeAttributeBindingWithValue_completion_(
        &self,
        value: NSArray,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBindingWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeBindingWithValue_params_completion_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBindingWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeBindingWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBindingWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeBindingWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinding").unwrap(), readAttributeBindingWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinding").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinding").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinding").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinding").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinding").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinding").unwrap(), new)
    }
}
impl MTRBaseClusterBinding_Availability for MTRBaseClusterBinding {}
pub trait MTRBaseClusterBinding_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterAccessControl(pub id);
impl std::ops::Deref for MTRBaseClusterAccessControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterAccessControl {}
impl MTRBaseClusterAccessControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterAccessControl {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterAccessControl {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterAccessControl, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterAccessControl(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterAccessControl")
        }
    }
}
impl IMTRCluster for MTRBaseClusterAccessControl {}
impl INSObject for MTRBaseClusterAccessControl {}
impl PNSObject for MTRBaseClusterAccessControl {}
impl IMTRBaseClusterAccessControl for MTRBaseClusterAccessControl {}
pub trait IMTRBaseClusterAccessControl: Sized + std::ops::Deref {
    unsafe fn reviewFabricRestrictionsWithParams_completion_(
        &self,
        params: MTRAccessControlClusterReviewFabricRestrictionsParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, reviewFabricRestrictionsWithParams : params, completion : completion)
    }
    unsafe fn readAttributeACLWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACLWithParams : params, completion : completion)
    }
    unsafe fn writeAttributeACLWithValue_completion_(
        &self,
        value: NSArray,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACLWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeACLWithValue_params_completion_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACLWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeACLWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeACLWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeExtensionWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeExtensionWithParams : params, completion : completion)
    }
    unsafe fn writeAttributeExtensionWithValue_completion_(
        &self,
        value: NSArray,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeExtensionWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeExtensionWithValue_params_completion_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeExtensionWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeExtensionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeExtensionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSubjectsPerAccessControlEntryWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSubjectsPerAccessControlEntryWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSubjectsPerAccessControlEntryWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSubjectsPerAccessControlEntryWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTargetsPerAccessControlEntryWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTargetsPerAccessControlEntryWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTargetsPerAccessControlEntryWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTargetsPerAccessControlEntryWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAccessControlEntriesPerFabricWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAccessControlEntriesPerFabricWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAccessControlEntriesPerFabricWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAccessControlEntriesPerFabricWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCommissioningARLWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCommissioningARLWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCommissioningARLWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCommissioningARLWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeARLWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeARLWithParams : params, completion : completion)
    }
    unsafe fn subscribeAttributeARLWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeARLWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeACLWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeACLWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeExtensionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeExtensionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSubjectsPerAccessControlEntryWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeSubjectsPerAccessControlEntryWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTargetsPerAccessControlEntryWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeTargetsPerAccessControlEntryWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAccessControlEntriesPerFabricWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeAccessControlEntriesPerFabricWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCommissioningARLWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeCommissioningARLWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeARLWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeARLWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), new)
    }
}
impl MTRBaseClusterAccessControl_Availability for MTRBaseClusterAccessControl {}
pub trait MTRBaseClusterAccessControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterActions(pub id);
impl std::ops::Deref for MTRBaseClusterActions {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterActions {}
impl MTRBaseClusterActions {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActions").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterActions {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterActions {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterActions, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterActions").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterActions(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterActions")
        }
    }
}
impl IMTRCluster for MTRBaseClusterActions {}
impl INSObject for MTRBaseClusterActions {}
impl PNSObject for MTRBaseClusterActions {}
impl IMTRBaseClusterActions for MTRBaseClusterActions {}
pub trait IMTRBaseClusterActions: Sized + std::ops::Deref {
    unsafe fn instantActionWithParams_completion_(
        &self,
        params: MTRActionsClusterInstantActionParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, instantActionWithParams : params, completion : completion)
    }
    unsafe fn instantActionWithTransitionWithParams_completion_(
        &self,
        params: MTRActionsClusterInstantActionWithTransitionParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, instantActionWithTransitionWithParams : params, completion : completion)
    }
    unsafe fn startActionWithParams_completion_(
        &self,
        params: MTRActionsClusterStartActionParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startActionWithParams : params, completion : completion)
    }
    unsafe fn startActionWithDurationWithParams_completion_(
        &self,
        params: MTRActionsClusterStartActionWithDurationParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startActionWithDurationWithParams : params, completion : completion)
    }
    unsafe fn stopActionWithParams_completion_(
        &self,
        params: MTRActionsClusterStopActionParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopActionWithParams : params, completion : completion)
    }
    unsafe fn pauseActionWithParams_completion_(
        &self,
        params: MTRActionsClusterPauseActionParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseActionWithParams : params, completion : completion)
    }
    unsafe fn pauseActionWithDurationWithParams_completion_(
        &self,
        params: MTRActionsClusterPauseActionWithDurationParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseActionWithDurationWithParams : params, completion : completion)
    }
    unsafe fn resumeActionWithParams_completion_(
        &self,
        params: MTRActionsClusterResumeActionParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resumeActionWithParams : params, completion : completion)
    }
    unsafe fn enableActionWithParams_completion_(
        &self,
        params: MTRActionsClusterEnableActionParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enableActionWithParams : params, completion : completion)
    }
    unsafe fn enableActionWithDurationWithParams_completion_(
        &self,
        params: MTRActionsClusterEnableActionWithDurationParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enableActionWithDurationWithParams : params, completion : completion)
    }
    unsafe fn disableActionWithParams_completion_(
        &self,
        params: MTRActionsClusterDisableActionParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, disableActionWithParams : params, completion : completion)
    }
    unsafe fn disableActionWithDurationWithParams_completion_(
        &self,
        params: MTRActionsClusterDisableActionWithDurationParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, disableActionWithDurationWithParams : params, completion : completion)
    }
    unsafe fn readAttributeActionListWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActionListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActionListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActionListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEndpointListsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEndpointListsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeEndpointListsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEndpointListsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSetupURLWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSetupURLWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSetupURLWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSetupURLWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeActionListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActions").unwrap(), readAttributeActionListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEndpointListsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActions").unwrap(), readAttributeEndpointListsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSetupURLWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActions").unwrap(), readAttributeSetupURLWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActions").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActions").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActions").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActions").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActions").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActions").unwrap(), new)
    }
}
impl MTRBaseClusterActions_Availability for MTRBaseClusterActions {}
pub trait MTRBaseClusterActions_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterBasicInformation(pub id);
impl std::ops::Deref for MTRBaseClusterBasicInformation {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterBasicInformation {}
impl MTRBaseClusterBasicInformation {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterBasicInformation {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterBasicInformation {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterBasicInformation, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterBasicInformation(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterBasicInformation")
        }
    }
}
impl IMTRCluster for MTRBaseClusterBasicInformation {}
impl INSObject for MTRBaseClusterBasicInformation {}
impl PNSObject for MTRBaseClusterBasicInformation {}
impl IMTRBaseClusterBasicInformation for MTRBaseClusterBasicInformation {}
pub trait IMTRBaseClusterBasicInformation: Sized + std::ops::Deref {
    unsafe fn readAttributeDataModelRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDataModelRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDataModelRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDataModelRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeVendorNameWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVendorNameWithCompletion : completion)
    }
    unsafe fn subscribeAttributeVendorNameWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeVendorNameWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeVendorIDWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVendorIDWithCompletion : completion)
    }
    unsafe fn subscribeAttributeVendorIDWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeVendorIDWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProductNameWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductNameWithCompletion : completion)
    }
    unsafe fn subscribeAttributeProductNameWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProductNameWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProductIDWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductIDWithCompletion : completion)
    }
    unsafe fn subscribeAttributeProductIDWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProductIDWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNodeLabelWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNodeLabelWithCompletion : completion)
    }
    unsafe fn writeAttributeNodeLabelWithValue_completion_(
        &self,
        value: NSString,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNodeLabelWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNodeLabelWithValue_params_completion_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNodeLabelWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNodeLabelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNodeLabelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLocationWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocationWithCompletion : completion)
    }
    unsafe fn writeAttributeLocationWithValue_completion_(
        &self,
        value: NSString,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocationWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLocationWithValue_params_completion_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocationWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLocationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLocationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeHardwareVersionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHardwareVersionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeHardwareVersionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHardwareVersionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeHardwareVersionStringWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHardwareVersionStringWithCompletion : completion)
    }
    unsafe fn subscribeAttributeHardwareVersionStringWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHardwareVersionStringWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSoftwareVersionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoftwareVersionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSoftwareVersionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSoftwareVersionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSoftwareVersionStringWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoftwareVersionStringWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSoftwareVersionStringWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSoftwareVersionStringWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeManufacturingDateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeManufacturingDateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeManufacturingDateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeManufacturingDateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePartNumberWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePartNumberWithCompletion : completion)
    }
    unsafe fn subscribeAttributePartNumberWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePartNumberWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProductURLWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductURLWithCompletion : completion)
    }
    unsafe fn subscribeAttributeProductURLWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProductURLWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProductLabelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductLabelWithCompletion : completion)
    }
    unsafe fn subscribeAttributeProductLabelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProductLabelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSerialNumberWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSerialNumberWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSerialNumberWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSerialNumberWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLocalConfigDisabledWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocalConfigDisabledWithCompletion : completion)
    }
    unsafe fn writeAttributeLocalConfigDisabledWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalConfigDisabledWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLocalConfigDisabledWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalConfigDisabledWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLocalConfigDisabledWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLocalConfigDisabledWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeReachableWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReachableWithCompletion : completion)
    }
    unsafe fn subscribeAttributeReachableWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeReachableWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUniqueIDWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUniqueIDWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUniqueIDWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUniqueIDWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCapabilityMinimaWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCapabilityMinimaWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCapabilityMinimaWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCapabilityMinimaWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProductAppearanceWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductAppearanceWithCompletion : completion)
    }
    unsafe fn subscribeAttributeProductAppearanceWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProductAppearanceWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSpecificationVersionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpecificationVersionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSpecificationVersionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSpecificationVersionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxPathsPerInvokeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxPathsPerInvokeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxPathsPerInvokeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxPathsPerInvokeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeConfigurationVersionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeConfigurationVersionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeConfigurationVersionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeConfigurationVersionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeDataModelRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeDataModelRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeVendorNameWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeVendorNameWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeVendorIDWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeVendorIDWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeProductNameWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeProductNameWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeProductIDWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeProductIDWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNodeLabelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeNodeLabelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLocationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeLocationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeHardwareVersionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeHardwareVersionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeHardwareVersionStringWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeHardwareVersionStringWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSoftwareVersionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeSoftwareVersionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSoftwareVersionStringWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeSoftwareVersionStringWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeManufacturingDateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeManufacturingDateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePartNumberWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributePartNumberWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeProductURLWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeProductURLWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeProductLabelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeProductLabelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSerialNumberWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeSerialNumberWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLocalConfigDisabledWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeLocalConfigDisabledWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeReachableWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeReachableWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUniqueIDWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeUniqueIDWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCapabilityMinimaWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeCapabilityMinimaWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeProductAppearanceWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeProductAppearanceWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSpecificationVersionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeSpecificationVersionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxPathsPerInvokeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeMaxPathsPerInvokeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeConfigurationVersionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeConfigurationVersionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasicInformation").unwrap(), new)
    }
}
impl MTRBaseClusterBasicInformation_Availability for MTRBaseClusterBasicInformation {}
pub trait MTRBaseClusterBasicInformation_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterOTASoftwareUpdateProvider(pub id);
impl std::ops::Deref for MTRBaseClusterOTASoftwareUpdateProvider {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterOTASoftwareUpdateProvider {}
impl MTRBaseClusterOTASoftwareUpdateProvider {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOTASoftwareUpdateProvider").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterOTASoftwareUpdateProvider {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterOTASoftwareUpdateProvider {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterOTASoftwareUpdateProvider, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterOTASoftwareUpdateProvider").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterOTASoftwareUpdateProvider(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterOTASoftwareUpdateProvider" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterOTASoftwareUpdateProvider {}
impl INSObject for MTRBaseClusterOTASoftwareUpdateProvider {}
impl PNSObject for MTRBaseClusterOTASoftwareUpdateProvider {}
impl IMTRBaseClusterOTASoftwareUpdateProvider for MTRBaseClusterOTASoftwareUpdateProvider {}
pub trait IMTRBaseClusterOTASoftwareUpdateProvider: Sized + std::ops::Deref {
    unsafe fn queryImageWithParams_completion_(
        &self,
        params: MTROTASoftwareUpdateProviderClusterQueryImageParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, queryImageWithParams : params, completion : completion)
    }
    unsafe fn applyUpdateRequestWithParams_completion_(
        &self,
        params: MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, applyUpdateRequestWithParams : params, completion : completion)
    }
    unsafe fn notifyUpdateAppliedWithParams_completion_(
        &self,
        params: MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, notifyUpdateAppliedWithParams : params, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOTASoftwareUpdateProvider").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOTASoftwareUpdateProvider").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOTASoftwareUpdateProvider").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOTASoftwareUpdateProvider").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOTASoftwareUpdateProvider").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOTASoftwareUpdateProvider").unwrap(), new)
    }
}
impl MTRBaseClusterOTASoftwareUpdateProvider_Availability
    for MTRBaseClusterOTASoftwareUpdateProvider
{
}
pub trait MTRBaseClusterOTASoftwareUpdateProvider_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterOTASoftwareUpdateRequestor(pub id);
impl std::ops::Deref for MTRBaseClusterOTASoftwareUpdateRequestor {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterOTASoftwareUpdateRequestor {}
impl MTRBaseClusterOTASoftwareUpdateRequestor {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOTASoftwareUpdateRequestor").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterOTASoftwareUpdateRequestor {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterOTASoftwareUpdateRequestor {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterOTASoftwareUpdateRequestor, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterOTASoftwareUpdateRequestor").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterOTASoftwareUpdateRequestor(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterOTASoftwareUpdateRequestor" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterOTASoftwareUpdateRequestor {}
impl INSObject for MTRBaseClusterOTASoftwareUpdateRequestor {}
impl PNSObject for MTRBaseClusterOTASoftwareUpdateRequestor {}
impl IMTRBaseClusterOTASoftwareUpdateRequestor for MTRBaseClusterOTASoftwareUpdateRequestor {}
pub trait IMTRBaseClusterOTASoftwareUpdateRequestor: Sized + std::ops::Deref {
    unsafe fn announceOTAProviderWithParams_completion_(
        &self,
        params: MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, announceOTAProviderWithParams : params, completion : completion)
    }
    unsafe fn readAttributeDefaultOTAProvidersWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultOTAProvidersWithParams : params, completion : completion)
    }
    unsafe fn writeAttributeDefaultOTAProvidersWithValue_completion_(
        &self,
        value: NSArray,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultOTAProvidersWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeDefaultOTAProvidersWithValue_params_completion_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultOTAProvidersWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeDefaultOTAProvidersWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDefaultOTAProvidersWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUpdatePossibleWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUpdatePossibleWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUpdatePossibleWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUpdatePossibleWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUpdateStateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUpdateStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUpdateStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUpdateStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUpdateStateProgressWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUpdateStateProgressWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUpdateStateProgressWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUpdateStateProgressWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeDefaultOTAProvidersWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOTASoftwareUpdateRequestor").unwrap(), readAttributeDefaultOTAProvidersWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUpdatePossibleWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOTASoftwareUpdateRequestor").unwrap(), readAttributeUpdatePossibleWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUpdateStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOTASoftwareUpdateRequestor").unwrap(), readAttributeUpdateStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUpdateStateProgressWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOTASoftwareUpdateRequestor").unwrap(), readAttributeUpdateStateProgressWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOTASoftwareUpdateRequestor").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOTASoftwareUpdateRequestor").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOTASoftwareUpdateRequestor").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOTASoftwareUpdateRequestor").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOTASoftwareUpdateRequestor").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOTASoftwareUpdateRequestor").unwrap(), new)
    }
}
impl MTRBaseClusterOTASoftwareUpdateRequestor_Availability
    for MTRBaseClusterOTASoftwareUpdateRequestor
{
}
pub trait MTRBaseClusterOTASoftwareUpdateRequestor_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterLocalizationConfiguration(pub id);
impl std::ops::Deref for MTRBaseClusterLocalizationConfiguration {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterLocalizationConfiguration {}
impl MTRBaseClusterLocalizationConfiguration {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLocalizationConfiguration").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterLocalizationConfiguration {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterLocalizationConfiguration {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterLocalizationConfiguration, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterLocalizationConfiguration").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterLocalizationConfiguration(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterLocalizationConfiguration" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterLocalizationConfiguration {}
impl INSObject for MTRBaseClusterLocalizationConfiguration {}
impl PNSObject for MTRBaseClusterLocalizationConfiguration {}
impl IMTRBaseClusterLocalizationConfiguration for MTRBaseClusterLocalizationConfiguration {}
pub trait IMTRBaseClusterLocalizationConfiguration: Sized + std::ops::Deref {
    unsafe fn readAttributeActiveLocaleWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveLocaleWithCompletion : completion)
    }
    unsafe fn writeAttributeActiveLocaleWithValue_completion_(
        &self,
        value: NSString,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeActiveLocaleWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeActiveLocaleWithValue_params_completion_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeActiveLocaleWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeActiveLocaleWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveLocaleWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedLocalesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedLocalesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedLocalesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedLocalesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeActiveLocaleWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLocalizationConfiguration").unwrap(), readAttributeActiveLocaleWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSupportedLocalesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLocalizationConfiguration").unwrap(), readAttributeSupportedLocalesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLocalizationConfiguration").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLocalizationConfiguration").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLocalizationConfiguration").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLocalizationConfiguration").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLocalizationConfiguration").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLocalizationConfiguration").unwrap(), new)
    }
}
impl MTRBaseClusterLocalizationConfiguration_Availability
    for MTRBaseClusterLocalizationConfiguration
{
}
pub trait MTRBaseClusterLocalizationConfiguration_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterTimeFormatLocalization(pub id);
impl std::ops::Deref for MTRBaseClusterTimeFormatLocalization {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterTimeFormatLocalization {}
impl MTRBaseClusterTimeFormatLocalization {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeFormatLocalization").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterTimeFormatLocalization {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterTimeFormatLocalization {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterTimeFormatLocalization, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeFormatLocalization").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterTimeFormatLocalization(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterTimeFormatLocalization" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterTimeFormatLocalization {}
impl INSObject for MTRBaseClusterTimeFormatLocalization {}
impl PNSObject for MTRBaseClusterTimeFormatLocalization {}
impl IMTRBaseClusterTimeFormatLocalization for MTRBaseClusterTimeFormatLocalization {}
pub trait IMTRBaseClusterTimeFormatLocalization: Sized + std::ops::Deref {
    unsafe fn readAttributeHourFormatWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHourFormatWithCompletion : completion)
    }
    unsafe fn writeAttributeHourFormatWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeHourFormatWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeHourFormatWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeHourFormatWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeHourFormatWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHourFormatWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveCalendarTypeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveCalendarTypeWithCompletion : completion)
    }
    unsafe fn writeAttributeActiveCalendarTypeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeActiveCalendarTypeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeActiveCalendarTypeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeActiveCalendarTypeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeActiveCalendarTypeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveCalendarTypeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedCalendarTypesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedCalendarTypesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedCalendarTypesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedCalendarTypesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeHourFormatWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeFormatLocalization").unwrap(), readAttributeHourFormatWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActiveCalendarTypeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeFormatLocalization").unwrap(), readAttributeActiveCalendarTypeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSupportedCalendarTypesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeFormatLocalization").unwrap(), readAttributeSupportedCalendarTypesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeFormatLocalization").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeFormatLocalization").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeFormatLocalization").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeFormatLocalization").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeFormatLocalization").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeFormatLocalization").unwrap(), new)
    }
}
impl MTRBaseClusterTimeFormatLocalization_Availability for MTRBaseClusterTimeFormatLocalization {}
pub trait MTRBaseClusterTimeFormatLocalization_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterUnitLocalization(pub id);
impl std::ops::Deref for MTRBaseClusterUnitLocalization {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterUnitLocalization {}
impl MTRBaseClusterUnitLocalization {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitLocalization").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterUnitLocalization {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterUnitLocalization {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterUnitLocalization, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitLocalization").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterUnitLocalization(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterUnitLocalization")
        }
    }
}
impl IMTRCluster for MTRBaseClusterUnitLocalization {}
impl INSObject for MTRBaseClusterUnitLocalization {}
impl PNSObject for MTRBaseClusterUnitLocalization {}
impl IMTRBaseClusterUnitLocalization for MTRBaseClusterUnitLocalization {}
pub trait IMTRBaseClusterUnitLocalization: Sized + std::ops::Deref {
    unsafe fn readAttributeTemperatureUnitWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTemperatureUnitWithCompletion : completion)
    }
    unsafe fn writeAttributeTemperatureUnitWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureUnitWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeTemperatureUnitWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureUnitWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeTemperatureUnitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTemperatureUnitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedTemperatureUnitsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedTemperatureUnitsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedTemperatureUnitsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedTemperatureUnitsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeTemperatureUnitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitLocalization").unwrap(), readAttributeTemperatureUnitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSupportedTemperatureUnitsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitLocalization").unwrap(), readAttributeSupportedTemperatureUnitsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitLocalization").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitLocalization").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitLocalization").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitLocalization").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitLocalization").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitLocalization").unwrap(), new)
    }
}
impl MTRBaseClusterUnitLocalization_Availability for MTRBaseClusterUnitLocalization {}
pub trait MTRBaseClusterUnitLocalization_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterPowerSourceConfiguration(pub id);
impl std::ops::Deref for MTRBaseClusterPowerSourceConfiguration {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterPowerSourceConfiguration {}
impl MTRBaseClusterPowerSourceConfiguration {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSourceConfiguration").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterPowerSourceConfiguration {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterPowerSourceConfiguration {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterPowerSourceConfiguration, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSourceConfiguration").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterPowerSourceConfiguration(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterPowerSourceConfiguration" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterPowerSourceConfiguration {}
impl INSObject for MTRBaseClusterPowerSourceConfiguration {}
impl PNSObject for MTRBaseClusterPowerSourceConfiguration {}
impl IMTRBaseClusterPowerSourceConfiguration for MTRBaseClusterPowerSourceConfiguration {}
pub trait IMTRBaseClusterPowerSourceConfiguration: Sized + std::ops::Deref {
    unsafe fn readAttributeSourcesWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSourcesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSourcesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSourcesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSourcesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSourceConfiguration").unwrap(), readAttributeSourcesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSourceConfiguration").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSourceConfiguration").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSourceConfiguration").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSourceConfiguration").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSourceConfiguration").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSourceConfiguration").unwrap(), new)
    }
}
impl MTRBaseClusterPowerSourceConfiguration_Availability
    for MTRBaseClusterPowerSourceConfiguration
{
}
pub trait MTRBaseClusterPowerSourceConfiguration_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterPowerSource(pub id);
impl std::ops::Deref for MTRBaseClusterPowerSource {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterPowerSource {}
impl MTRBaseClusterPowerSource {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterPowerSource {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterPowerSource {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterPowerSource, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterPowerSource(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterPowerSource")
        }
    }
}
impl IMTRCluster for MTRBaseClusterPowerSource {}
impl INSObject for MTRBaseClusterPowerSource {}
impl PNSObject for MTRBaseClusterPowerSource {}
impl IMTRBaseClusterPowerSource for MTRBaseClusterPowerSource {}
pub trait IMTRBaseClusterPowerSource: Sized + std::ops::Deref {
    unsafe fn readAttributeStatusWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStatusWithCompletion : completion)
    }
    unsafe fn subscribeAttributeStatusWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStatusWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOrderWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOrderWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOrderWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOrderWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDescriptionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDescriptionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDescriptionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDescriptionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWiredAssessedInputVoltageWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiredAssessedInputVoltageWithCompletion : completion)
    }
    unsafe fn subscribeAttributeWiredAssessedInputVoltageWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWiredAssessedInputVoltageWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWiredAssessedInputFrequencyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiredAssessedInputFrequencyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeWiredAssessedInputFrequencyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWiredAssessedInputFrequencyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWiredCurrentTypeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiredCurrentTypeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeWiredCurrentTypeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWiredCurrentTypeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWiredAssessedCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiredAssessedCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeWiredAssessedCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWiredAssessedCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWiredNominalVoltageWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiredNominalVoltageWithCompletion : completion)
    }
    unsafe fn subscribeAttributeWiredNominalVoltageWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWiredNominalVoltageWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWiredMaximumCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiredMaximumCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeWiredMaximumCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWiredMaximumCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWiredPresentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiredPresentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeWiredPresentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWiredPresentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveWiredFaultsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveWiredFaultsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActiveWiredFaultsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveWiredFaultsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatVoltageWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatVoltageWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBatVoltageWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatVoltageWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatPercentRemainingWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatPercentRemainingWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBatPercentRemainingWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatPercentRemainingWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatTimeRemainingWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatTimeRemainingWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBatTimeRemainingWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatTimeRemainingWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatChargeLevelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatChargeLevelWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBatChargeLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatChargeLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatReplacementNeededWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatReplacementNeededWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBatReplacementNeededWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatReplacementNeededWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatReplaceabilityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatReplaceabilityWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBatReplaceabilityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatReplaceabilityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatPresentWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatPresentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBatPresentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatPresentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveBatFaultsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveBatFaultsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActiveBatFaultsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveBatFaultsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatReplacementDescriptionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatReplacementDescriptionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBatReplacementDescriptionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatReplacementDescriptionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatCommonDesignationWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatCommonDesignationWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBatCommonDesignationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatCommonDesignationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatANSIDesignationWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatANSIDesignationWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBatANSIDesignationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatANSIDesignationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatIECDesignationWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatIECDesignationWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBatIECDesignationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatIECDesignationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatApprovedChemistryWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatApprovedChemistryWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBatApprovedChemistryWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatApprovedChemistryWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatCapacityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatCapacityWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBatCapacityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatCapacityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatQuantityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatQuantityWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBatQuantityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatQuantityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatChargeStateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatChargeStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBatChargeStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatChargeStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatTimeToFullChargeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatTimeToFullChargeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBatTimeToFullChargeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatTimeToFullChargeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatFunctionalWhileChargingWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatFunctionalWhileChargingWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBatFunctionalWhileChargingWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatFunctionalWhileChargingWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatChargingCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatChargingCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBatChargingCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatChargingCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveBatChargeFaultsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveBatChargeFaultsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActiveBatChargeFaultsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveBatChargeFaultsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEndpointListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEndpointListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeEndpointListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEndpointListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeStatusWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeStatusWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOrderWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeOrderWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDescriptionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeDescriptionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeWiredAssessedInputVoltageWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeWiredAssessedInputVoltageWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeWiredAssessedInputFrequencyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeWiredAssessedInputFrequencyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeWiredCurrentTypeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeWiredCurrentTypeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeWiredAssessedCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeWiredAssessedCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeWiredNominalVoltageWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeWiredNominalVoltageWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeWiredMaximumCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeWiredMaximumCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeWiredPresentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeWiredPresentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActiveWiredFaultsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeActiveWiredFaultsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBatVoltageWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatVoltageWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBatPercentRemainingWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatPercentRemainingWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBatTimeRemainingWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatTimeRemainingWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBatChargeLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatChargeLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBatReplacementNeededWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatReplacementNeededWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBatReplaceabilityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatReplaceabilityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBatPresentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatPresentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActiveBatFaultsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeActiveBatFaultsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBatReplacementDescriptionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatReplacementDescriptionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBatCommonDesignationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatCommonDesignationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBatANSIDesignationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatANSIDesignationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBatIECDesignationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatIECDesignationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBatApprovedChemistryWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatApprovedChemistryWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBatCapacityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatCapacityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBatQuantityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatQuantityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBatChargeStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatChargeStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBatTimeToFullChargeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatTimeToFullChargeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBatFunctionalWhileChargingWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatFunctionalWhileChargingWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBatChargingCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatChargingCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActiveBatChargeFaultsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeActiveBatChargeFaultsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEndpointListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeEndpointListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), new)
    }
}
impl MTRBaseClusterPowerSource_Availability for MTRBaseClusterPowerSource {}
pub trait MTRBaseClusterPowerSource_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterGeneralCommissioning(pub id);
impl std::ops::Deref for MTRBaseClusterGeneralCommissioning {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterGeneralCommissioning {}
impl MTRBaseClusterGeneralCommissioning {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterGeneralCommissioning {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterGeneralCommissioning {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterGeneralCommissioning, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterGeneralCommissioning(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterGeneralCommissioning" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterGeneralCommissioning {}
impl INSObject for MTRBaseClusterGeneralCommissioning {}
impl PNSObject for MTRBaseClusterGeneralCommissioning {}
impl IMTRBaseClusterGeneralCommissioning for MTRBaseClusterGeneralCommissioning {}
pub trait IMTRBaseClusterGeneralCommissioning: Sized + std::ops::Deref {
    unsafe fn armFailSafeWithParams_completion_(
        &self,
        params: MTRGeneralCommissioningClusterArmFailSafeParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, armFailSafeWithParams : params, completion : completion)
    }
    unsafe fn setRegulatoryConfigWithParams_completion_(
        &self,
        params: MTRGeneralCommissioningClusterSetRegulatoryConfigParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRegulatoryConfigWithParams : params, completion : completion)
    }
    unsafe fn commissioningCompleteWithParams_completion_(
        &self,
        params: MTRGeneralCommissioningClusterCommissioningCompleteParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commissioningCompleteWithParams : params, completion : completion)
    }
    unsafe fn commissioningCompleteWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commissioningCompleteWithCompletion : completion)
    }
    unsafe fn setTCAcknowledgementsWithParams_completion_(
        &self,
        params: MTRGeneralCommissioningClusterSetTCAcknowledgementsParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTCAcknowledgementsWithParams : params, completion : completion)
    }
    unsafe fn readAttributeBreadcrumbWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBreadcrumbWithCompletion : completion)
    }
    unsafe fn writeAttributeBreadcrumbWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBreadcrumbWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeBreadcrumbWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBreadcrumbWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeBreadcrumbWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBreadcrumbWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBasicCommissioningInfoWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBasicCommissioningInfoWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBasicCommissioningInfoWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBasicCommissioningInfoWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRegulatoryConfigWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRegulatoryConfigWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRegulatoryConfigWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRegulatoryConfigWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLocationCapabilityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocationCapabilityWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLocationCapabilityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLocationCapabilityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportsConcurrentConnectionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportsConcurrentConnectionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportsConcurrentConnectionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportsConcurrentConnectionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTCAcceptedVersionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTCAcceptedVersionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTCAcceptedVersionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTCAcceptedVersionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTCMinRequiredVersionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTCMinRequiredVersionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTCMinRequiredVersionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTCMinRequiredVersionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTCAcknowledgementsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTCAcknowledgementsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTCAcknowledgementsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTCAcknowledgementsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTCAcknowledgementsRequiredWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTCAcknowledgementsRequiredWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTCAcknowledgementsRequiredWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTCAcknowledgementsRequiredWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTCUpdateDeadlineWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTCUpdateDeadlineWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTCUpdateDeadlineWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTCUpdateDeadlineWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRecoveryIdentifierWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRecoveryIdentifierWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRecoveryIdentifierWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRecoveryIdentifierWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNetworkRecoveryReasonWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNetworkRecoveryReasonWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNetworkRecoveryReasonWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNetworkRecoveryReasonWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeIsCommissioningWithoutPowerWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeIsCommissioningWithoutPowerWithCompletion : completion)
    }
    unsafe fn subscribeAttributeIsCommissioningWithoutPowerWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeIsCommissioningWithoutPowerWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeBreadcrumbWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeBreadcrumbWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBasicCommissioningInfoWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeBasicCommissioningInfoWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRegulatoryConfigWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeRegulatoryConfigWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLocationCapabilityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeLocationCapabilityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSupportsConcurrentConnectionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeSupportsConcurrentConnectionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTCAcceptedVersionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeTCAcceptedVersionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTCMinRequiredVersionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeTCMinRequiredVersionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTCAcknowledgementsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeTCAcknowledgementsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTCAcknowledgementsRequiredWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeTCAcknowledgementsRequiredWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTCUpdateDeadlineWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeTCUpdateDeadlineWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRecoveryIdentifierWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeRecoveryIdentifierWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNetworkRecoveryReasonWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeNetworkRecoveryReasonWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeIsCommissioningWithoutPowerWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeIsCommissioningWithoutPowerWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), new)
    }
}
impl MTRBaseClusterGeneralCommissioning_Availability for MTRBaseClusterGeneralCommissioning {}
pub trait MTRBaseClusterGeneralCommissioning_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterNetworkCommissioning(pub id);
impl std::ops::Deref for MTRBaseClusterNetworkCommissioning {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterNetworkCommissioning {}
impl MTRBaseClusterNetworkCommissioning {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterNetworkCommissioning {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterNetworkCommissioning {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterNetworkCommissioning, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterNetworkCommissioning(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterNetworkCommissioning" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterNetworkCommissioning {}
impl INSObject for MTRBaseClusterNetworkCommissioning {}
impl PNSObject for MTRBaseClusterNetworkCommissioning {}
impl IMTRBaseClusterNetworkCommissioning for MTRBaseClusterNetworkCommissioning {}
pub trait IMTRBaseClusterNetworkCommissioning: Sized + std::ops::Deref {
    unsafe fn scanNetworksWithParams_completion_(
        &self,
        params: MTRNetworkCommissioningClusterScanNetworksParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scanNetworksWithParams : params, completion : completion)
    }
    unsafe fn scanNetworksWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scanNetworksWithCompletion : completion)
    }
    unsafe fn addOrUpdateWiFiNetworkWithParams_completion_(
        &self,
        params: MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addOrUpdateWiFiNetworkWithParams : params, completion : completion)
    }
    unsafe fn addOrUpdateThreadNetworkWithParams_completion_(
        &self,
        params: MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addOrUpdateThreadNetworkWithParams : params, completion : completion)
    }
    unsafe fn removeNetworkWithParams_completion_(
        &self,
        params: MTRNetworkCommissioningClusterRemoveNetworkParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeNetworkWithParams : params, completion : completion)
    }
    unsafe fn connectNetworkWithParams_completion_(
        &self,
        params: MTRNetworkCommissioningClusterConnectNetworkParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connectNetworkWithParams : params, completion : completion)
    }
    unsafe fn reorderNetworkWithParams_completion_(
        &self,
        params: MTRNetworkCommissioningClusterReorderNetworkParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, reorderNetworkWithParams : params, completion : completion)
    }
    unsafe fn queryIdentityWithParams_completion_(
        &self,
        params: MTRNetworkCommissioningClusterQueryIdentityParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, queryIdentityWithParams : params, completion : completion)
    }
    unsafe fn readAttributeMaxNetworksWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxNetworksWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxNetworksWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxNetworksWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNetworksWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNetworksWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNetworksWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNetworksWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeScanMaxTimeSecondsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScanMaxTimeSecondsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeScanMaxTimeSecondsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeScanMaxTimeSecondsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeConnectMaxTimeSecondsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeConnectMaxTimeSecondsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeConnectMaxTimeSecondsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeConnectMaxTimeSecondsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInterfaceEnabledWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInterfaceEnabledWithCompletion : completion)
    }
    unsafe fn writeAttributeInterfaceEnabledWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInterfaceEnabledWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeInterfaceEnabledWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInterfaceEnabledWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeInterfaceEnabledWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInterfaceEnabledWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLastNetworkingStatusWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLastNetworkingStatusWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLastNetworkingStatusWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLastNetworkingStatusWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLastNetworkIDWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLastNetworkIDWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLastNetworkIDWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLastNetworkIDWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLastConnectErrorValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLastConnectErrorValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLastConnectErrorValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLastConnectErrorValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedWiFiBandsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedWiFiBandsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedWiFiBandsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedWiFiBandsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedThreadFeaturesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedThreadFeaturesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedThreadFeaturesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedThreadFeaturesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeThreadVersionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThreadVersionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeThreadVersionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeThreadVersionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMaxNetworksWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeMaxNetworksWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNetworksWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeNetworksWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeScanMaxTimeSecondsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeScanMaxTimeSecondsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeConnectMaxTimeSecondsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeConnectMaxTimeSecondsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInterfaceEnabledWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeInterfaceEnabledWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLastNetworkingStatusWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeLastNetworkingStatusWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLastNetworkIDWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeLastNetworkIDWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLastConnectErrorValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeLastConnectErrorValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSupportedWiFiBandsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeSupportedWiFiBandsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSupportedThreadFeaturesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeSupportedThreadFeaturesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeThreadVersionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeThreadVersionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), new)
    }
}
impl MTRBaseClusterNetworkCommissioning_Availability for MTRBaseClusterNetworkCommissioning {}
pub trait MTRBaseClusterNetworkCommissioning_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterDiagnosticLogs(pub id);
impl std::ops::Deref for MTRBaseClusterDiagnosticLogs {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterDiagnosticLogs {}
impl MTRBaseClusterDiagnosticLogs {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDiagnosticLogs").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterDiagnosticLogs {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterDiagnosticLogs {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterDiagnosticLogs, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterDiagnosticLogs").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterDiagnosticLogs(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterDiagnosticLogs")
        }
    }
}
impl IMTRCluster for MTRBaseClusterDiagnosticLogs {}
impl INSObject for MTRBaseClusterDiagnosticLogs {}
impl PNSObject for MTRBaseClusterDiagnosticLogs {}
impl IMTRBaseClusterDiagnosticLogs for MTRBaseClusterDiagnosticLogs {}
pub trait IMTRBaseClusterDiagnosticLogs: Sized + std::ops::Deref {
    unsafe fn retrieveLogsRequestWithParams_completion_(
        &self,
        params: MTRDiagnosticLogsClusterRetrieveLogsRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, retrieveLogsRequestWithParams : params, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDiagnosticLogs").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDiagnosticLogs").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDiagnosticLogs").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDiagnosticLogs").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDiagnosticLogs").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDiagnosticLogs").unwrap(), new)
    }
}
impl MTRBaseClusterDiagnosticLogs_Availability for MTRBaseClusterDiagnosticLogs {}
pub trait MTRBaseClusterDiagnosticLogs_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterGeneralDiagnostics(pub id);
impl std::ops::Deref for MTRBaseClusterGeneralDiagnostics {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterGeneralDiagnostics {}
impl MTRBaseClusterGeneralDiagnostics {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterGeneralDiagnostics {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterGeneralDiagnostics {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterGeneralDiagnostics, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterGeneralDiagnostics(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterGeneralDiagnostics" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterGeneralDiagnostics {}
impl INSObject for MTRBaseClusterGeneralDiagnostics {}
impl PNSObject for MTRBaseClusterGeneralDiagnostics {}
impl IMTRBaseClusterGeneralDiagnostics for MTRBaseClusterGeneralDiagnostics {}
pub trait IMTRBaseClusterGeneralDiagnostics: Sized + std::ops::Deref {
    unsafe fn testEventTriggerWithParams_completion_(
        &self,
        params: MTRGeneralDiagnosticsClusterTestEventTriggerParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testEventTriggerWithParams : params, completion : completion)
    }
    unsafe fn timeSnapshotWithParams_completion_(
        &self,
        params: MTRGeneralDiagnosticsClusterTimeSnapshotParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, timeSnapshotWithParams : params, completion : completion)
    }
    unsafe fn timeSnapshotWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, timeSnapshotWithCompletion : completion)
    }
    unsafe fn payloadTestRequestWithParams_completion_(
        &self,
        params: MTRGeneralDiagnosticsClusterPayloadTestRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, payloadTestRequestWithParams : params, completion : completion)
    }
    unsafe fn readAttributeNetworkInterfacesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNetworkInterfacesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNetworkInterfacesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNetworkInterfacesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRebootCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRebootCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRebootCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRebootCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUpTimeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUpTimeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUpTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUpTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTotalOperationalHoursWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTotalOperationalHoursWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTotalOperationalHoursWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTotalOperationalHoursWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBootReasonWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBootReasonWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBootReasonWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBootReasonWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveHardwareFaultsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveHardwareFaultsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActiveHardwareFaultsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveHardwareFaultsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveRadioFaultsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveRadioFaultsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActiveRadioFaultsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveRadioFaultsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveNetworkFaultsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveNetworkFaultsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActiveNetworkFaultsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveNetworkFaultsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTestEventTriggersEnabledWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTestEventTriggersEnabledWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTestEventTriggersEnabledWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTestEventTriggersEnabledWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeNetworkInterfacesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeNetworkInterfacesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRebootCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeRebootCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUpTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeUpTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTotalOperationalHoursWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeTotalOperationalHoursWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBootReasonWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeBootReasonWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActiveHardwareFaultsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeActiveHardwareFaultsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActiveRadioFaultsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeActiveRadioFaultsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActiveNetworkFaultsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeActiveNetworkFaultsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTestEventTriggersEnabledWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeTestEventTriggersEnabledWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), new)
    }
}
impl MTRBaseClusterGeneralDiagnostics_Availability for MTRBaseClusterGeneralDiagnostics {}
pub trait MTRBaseClusterGeneralDiagnostics_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterSoftwareDiagnostics(pub id);
impl std::ops::Deref for MTRBaseClusterSoftwareDiagnostics {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterSoftwareDiagnostics {}
impl MTRBaseClusterSoftwareDiagnostics {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoftwareDiagnostics").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterSoftwareDiagnostics {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterSoftwareDiagnostics {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterSoftwareDiagnostics, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterSoftwareDiagnostics").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterSoftwareDiagnostics(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterSoftwareDiagnostics" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterSoftwareDiagnostics {}
impl INSObject for MTRBaseClusterSoftwareDiagnostics {}
impl PNSObject for MTRBaseClusterSoftwareDiagnostics {}
impl IMTRBaseClusterSoftwareDiagnostics for MTRBaseClusterSoftwareDiagnostics {}
pub trait IMTRBaseClusterSoftwareDiagnostics: Sized + std::ops::Deref {
    unsafe fn resetWatermarksWithParams_completion_(
        &self,
        params: MTRSoftwareDiagnosticsClusterResetWatermarksParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetWatermarksWithParams : params, completion : completion)
    }
    unsafe fn resetWatermarksWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetWatermarksWithCompletion : completion)
    }
    unsafe fn readAttributeThreadMetricsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThreadMetricsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeThreadMetricsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeThreadMetricsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentHeapFreeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentHeapFreeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentHeapFreeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentHeapFreeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentHeapUsedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentHeapUsedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentHeapUsedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentHeapUsedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentHeapHighWatermarkWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentHeapHighWatermarkWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentHeapHighWatermarkWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentHeapHighWatermarkWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeThreadMetricsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoftwareDiagnostics").unwrap(), readAttributeThreadMetricsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentHeapFreeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoftwareDiagnostics").unwrap(), readAttributeCurrentHeapFreeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentHeapUsedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoftwareDiagnostics").unwrap(), readAttributeCurrentHeapUsedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentHeapHighWatermarkWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoftwareDiagnostics").unwrap(), readAttributeCurrentHeapHighWatermarkWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoftwareDiagnostics").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoftwareDiagnostics").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoftwareDiagnostics").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoftwareDiagnostics").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoftwareDiagnostics").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoftwareDiagnostics").unwrap(), new)
    }
}
impl MTRBaseClusterSoftwareDiagnostics_Availability for MTRBaseClusterSoftwareDiagnostics {}
pub trait MTRBaseClusterSoftwareDiagnostics_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterThreadNetworkDiagnostics(pub id);
impl std::ops::Deref for MTRBaseClusterThreadNetworkDiagnostics {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterThreadNetworkDiagnostics {}
impl MTRBaseClusterThreadNetworkDiagnostics {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterThreadNetworkDiagnostics {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterThreadNetworkDiagnostics {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterThreadNetworkDiagnostics, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterThreadNetworkDiagnostics(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterThreadNetworkDiagnostics" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterThreadNetworkDiagnostics {}
impl INSObject for MTRBaseClusterThreadNetworkDiagnostics {}
impl PNSObject for MTRBaseClusterThreadNetworkDiagnostics {}
impl IMTRBaseClusterThreadNetworkDiagnostics for MTRBaseClusterThreadNetworkDiagnostics {}
pub trait IMTRBaseClusterThreadNetworkDiagnostics: Sized + std::ops::Deref {
    unsafe fn resetCountsWithParams_completion_(
        &self,
        params: MTRThreadNetworkDiagnosticsClusterResetCountsParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithParams : params, completion : completion)
    }
    unsafe fn resetCountsWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithCompletion : completion)
    }
    unsafe fn readAttributeChannelWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeChannelWithCompletion : completion)
    }
    unsafe fn subscribeAttributeChannelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeChannelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRoutingRoleWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRoutingRoleWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRoutingRoleWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRoutingRoleWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNetworkNameWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNetworkNameWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNetworkNameWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNetworkNameWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePanIdWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePanIdWithCompletion : completion)
    }
    unsafe fn subscribeAttributePanIdWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePanIdWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeExtendedPanIdWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeExtendedPanIdWithCompletion : completion)
    }
    unsafe fn subscribeAttributeExtendedPanIdWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeExtendedPanIdWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeshLocalPrefixWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeshLocalPrefixWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeshLocalPrefixWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeshLocalPrefixWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOverrunCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOverrunCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOverrunCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOverrunCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNeighborTableWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNeighborTableWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNeighborTableWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNeighborTableWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRouteTableWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRouteTableWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRouteTableWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRouteTableWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePartitionIdWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePartitionIdWithCompletion : completion)
    }
    unsafe fn subscribeAttributePartitionIdWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePartitionIdWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWeightingWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWeightingWithCompletion : completion)
    }
    unsafe fn subscribeAttributeWeightingWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWeightingWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDataVersionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDataVersionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDataVersionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDataVersionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStableDataVersionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStableDataVersionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeStableDataVersionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStableDataVersionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLeaderRouterIdWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLeaderRouterIdWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLeaderRouterIdWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLeaderRouterIdWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDetachedRoleCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDetachedRoleCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDetachedRoleCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDetachedRoleCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeChildRoleCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeChildRoleCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeChildRoleCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeChildRoleCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRouterRoleCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRouterRoleCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRouterRoleCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRouterRoleCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLeaderRoleCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLeaderRoleCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLeaderRoleCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLeaderRoleCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttachAttemptCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttachAttemptCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttachAttemptCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttachAttemptCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePartitionIdChangeCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePartitionIdChangeCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributePartitionIdChangeCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePartitionIdChangeCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBetterPartitionAttachAttemptCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBetterPartitionAttachAttemptCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBetterPartitionAttachAttemptCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBetterPartitionAttachAttemptCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeParentChangeCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeParentChangeCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeParentChangeCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeParentChangeCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxTotalCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxTotalCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTxTotalCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxTotalCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxUnicastCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxUnicastCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTxUnicastCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxUnicastCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxBroadcastCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxBroadcastCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTxBroadcastCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxBroadcastCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxAckRequestedCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxAckRequestedCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTxAckRequestedCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxAckRequestedCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxAckedCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxAckedCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTxAckedCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxAckedCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxNoAckRequestedCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxNoAckRequestedCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTxNoAckRequestedCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxNoAckRequestedCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxDataCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxDataCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTxDataCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxDataCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxDataPollCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxDataPollCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTxDataPollCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxDataPollCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxBeaconCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxBeaconCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTxBeaconCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxBeaconCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxBeaconRequestCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxBeaconRequestCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTxBeaconRequestCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxBeaconRequestCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxOtherCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxOtherCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTxOtherCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxOtherCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxRetryCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxRetryCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTxRetryCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxRetryCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxDirectMaxRetryExpiryCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxDirectMaxRetryExpiryCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTxDirectMaxRetryExpiryCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxDirectMaxRetryExpiryCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxIndirectMaxRetryExpiryCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxIndirectMaxRetryExpiryCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTxIndirectMaxRetryExpiryCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxIndirectMaxRetryExpiryCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxErrCcaCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxErrCcaCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTxErrCcaCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxErrCcaCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxErrAbortCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxErrAbortCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTxErrAbortCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxErrAbortCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxErrBusyChannelCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxErrBusyChannelCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTxErrBusyChannelCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxErrBusyChannelCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxTotalCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxTotalCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRxTotalCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxTotalCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxUnicastCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxUnicastCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRxUnicastCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxUnicastCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxBroadcastCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxBroadcastCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRxBroadcastCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxBroadcastCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxDataCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxDataCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRxDataCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxDataCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxDataPollCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxDataPollCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRxDataPollCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxDataPollCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxBeaconCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxBeaconCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRxBeaconCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxBeaconCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxBeaconRequestCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxBeaconRequestCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRxBeaconRequestCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxBeaconRequestCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxOtherCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxOtherCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRxOtherCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxOtherCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxAddressFilteredCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxAddressFilteredCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRxAddressFilteredCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxAddressFilteredCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxDestAddrFilteredCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxDestAddrFilteredCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRxDestAddrFilteredCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxDestAddrFilteredCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxDuplicatedCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxDuplicatedCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRxDuplicatedCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxDuplicatedCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxErrNoFrameCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxErrNoFrameCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRxErrNoFrameCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxErrNoFrameCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxErrUnknownNeighborCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxErrUnknownNeighborCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRxErrUnknownNeighborCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxErrUnknownNeighborCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxErrInvalidSrcAddrCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxErrInvalidSrcAddrCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRxErrInvalidSrcAddrCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxErrInvalidSrcAddrCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxErrSecCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxErrSecCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRxErrSecCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxErrSecCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxErrFcsCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxErrFcsCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRxErrFcsCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxErrFcsCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxErrOtherCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxErrOtherCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRxErrOtherCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxErrOtherCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveTimestampWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveTimestampWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActiveTimestampWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveTimestampWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePendingTimestampWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePendingTimestampWithCompletion : completion)
    }
    unsafe fn subscribeAttributePendingTimestampWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePendingTimestampWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDelayWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDelayWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDelayWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDelayWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSecurityPolicyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSecurityPolicyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSecurityPolicyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSecurityPolicyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeChannelPage0MaskWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeChannelPage0MaskWithCompletion : completion)
    }
    unsafe fn subscribeAttributeChannelPage0MaskWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeChannelPage0MaskWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOperationalDatasetComponentsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalDatasetComponentsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOperationalDatasetComponentsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOperationalDatasetComponentsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveNetworkFaultsListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveNetworkFaultsListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActiveNetworkFaultsListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveNetworkFaultsListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeExtAddressWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeExtAddressWithCompletion : completion)
    }
    unsafe fn subscribeAttributeExtAddressWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeExtAddressWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRloc16WithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRloc16WithCompletion : completion)
    }
    unsafe fn subscribeAttributeRloc16WithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRloc16WithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeChannelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeChannelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRoutingRoleWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRoutingRoleWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNetworkNameWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeNetworkNameWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePanIdWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributePanIdWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeExtendedPanIdWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeExtendedPanIdWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeshLocalPrefixWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeMeshLocalPrefixWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOverrunCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeOverrunCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNeighborTableWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeNeighborTableWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRouteTableWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRouteTableWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePartitionIdWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributePartitionIdWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeWeightingWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeWeightingWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDataVersionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeDataVersionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeStableDataVersionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeStableDataVersionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLeaderRouterIdWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeLeaderRouterIdWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDetachedRoleCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeDetachedRoleCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeChildRoleCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeChildRoleCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRouterRoleCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRouterRoleCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLeaderRoleCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeLeaderRoleCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttachAttemptCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeAttachAttemptCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePartitionIdChangeCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributePartitionIdChangeCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBetterPartitionAttachAttemptCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeBetterPartitionAttachAttemptCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeParentChangeCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeParentChangeCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTxTotalCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxTotalCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTxUnicastCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxUnicastCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTxBroadcastCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxBroadcastCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTxAckRequestedCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxAckRequestedCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTxAckedCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxAckedCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTxNoAckRequestedCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxNoAckRequestedCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTxDataCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxDataCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTxDataPollCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxDataPollCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTxBeaconCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxBeaconCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTxBeaconRequestCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxBeaconRequestCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTxOtherCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxOtherCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTxRetryCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxRetryCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTxDirectMaxRetryExpiryCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxDirectMaxRetryExpiryCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTxIndirectMaxRetryExpiryCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxIndirectMaxRetryExpiryCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTxErrCcaCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxErrCcaCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTxErrAbortCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxErrAbortCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTxErrBusyChannelCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxErrBusyChannelCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRxTotalCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxTotalCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRxUnicastCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxUnicastCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRxBroadcastCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxBroadcastCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRxDataCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxDataCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRxDataPollCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxDataPollCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRxBeaconCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxBeaconCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRxBeaconRequestCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxBeaconRequestCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRxOtherCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxOtherCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRxAddressFilteredCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxAddressFilteredCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRxDestAddrFilteredCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxDestAddrFilteredCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRxDuplicatedCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxDuplicatedCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRxErrNoFrameCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxErrNoFrameCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRxErrUnknownNeighborCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxErrUnknownNeighborCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRxErrInvalidSrcAddrCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxErrInvalidSrcAddrCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRxErrSecCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxErrSecCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRxErrFcsCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxErrFcsCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRxErrOtherCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxErrOtherCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActiveTimestampWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeActiveTimestampWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePendingTimestampWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributePendingTimestampWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDelayWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeDelayWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSecurityPolicyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeSecurityPolicyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeChannelPage0MaskWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeChannelPage0MaskWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOperationalDatasetComponentsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeOperationalDatasetComponentsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActiveNetworkFaultsListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeActiveNetworkFaultsListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeExtAddressWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeExtAddressWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRloc16WithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRloc16WithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), new)
    }
}
impl MTRBaseClusterThreadNetworkDiagnostics_Availability
    for MTRBaseClusterThreadNetworkDiagnostics
{
}
pub trait MTRBaseClusterThreadNetworkDiagnostics_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterWiFiNetworkDiagnostics(pub id);
impl std::ops::Deref for MTRBaseClusterWiFiNetworkDiagnostics {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterWiFiNetworkDiagnostics {}
impl MTRBaseClusterWiFiNetworkDiagnostics {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterWiFiNetworkDiagnostics {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterWiFiNetworkDiagnostics {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterWiFiNetworkDiagnostics, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterWiFiNetworkDiagnostics(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterWiFiNetworkDiagnostics" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterWiFiNetworkDiagnostics {}
impl INSObject for MTRBaseClusterWiFiNetworkDiagnostics {}
impl PNSObject for MTRBaseClusterWiFiNetworkDiagnostics {}
impl IMTRBaseClusterWiFiNetworkDiagnostics for MTRBaseClusterWiFiNetworkDiagnostics {}
pub trait IMTRBaseClusterWiFiNetworkDiagnostics: Sized + std::ops::Deref {
    unsafe fn resetCountsWithParams_completion_(
        &self,
        params: MTRWiFiNetworkDiagnosticsClusterResetCountsParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithParams : params, completion : completion)
    }
    unsafe fn resetCountsWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithCompletion : completion)
    }
    unsafe fn readAttributeBSSIDWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBSSIDWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBSSIDWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBSSIDWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSecurityTypeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSecurityTypeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSecurityTypeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSecurityTypeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWiFiVersionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiFiVersionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeWiFiVersionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWiFiVersionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeChannelNumberWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeChannelNumberWithCompletion : completion)
    }
    unsafe fn subscribeAttributeChannelNumberWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeChannelNumberWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRSSIWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRSSIWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRSSIWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRSSIWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBeaconLostCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBeaconLostCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBeaconLostCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBeaconLostCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBeaconRxCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBeaconRxCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBeaconRxCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBeaconRxCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePacketMulticastRxCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePacketMulticastRxCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributePacketMulticastRxCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePacketMulticastRxCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePacketMulticastTxCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePacketMulticastTxCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributePacketMulticastTxCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePacketMulticastTxCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePacketUnicastRxCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePacketUnicastRxCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributePacketUnicastRxCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePacketUnicastRxCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePacketUnicastTxCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePacketUnicastTxCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributePacketUnicastTxCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePacketUnicastTxCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentMaxRateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentMaxRateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentMaxRateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentMaxRateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOverrunCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOverrunCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOverrunCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOverrunCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeBSSIDWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeBSSIDWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSecurityTypeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeSecurityTypeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeWiFiVersionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeWiFiVersionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeChannelNumberWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeChannelNumberWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRSSIWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeRSSIWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBeaconLostCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeBeaconLostCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBeaconRxCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeBeaconRxCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePacketMulticastRxCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributePacketMulticastRxCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePacketMulticastTxCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributePacketMulticastTxCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePacketUnicastRxCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributePacketUnicastRxCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePacketUnicastTxCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributePacketUnicastTxCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentMaxRateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeCurrentMaxRateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOverrunCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeOverrunCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), new)
    }
}
impl MTRBaseClusterWiFiNetworkDiagnostics_Availability for MTRBaseClusterWiFiNetworkDiagnostics {}
pub trait MTRBaseClusterWiFiNetworkDiagnostics_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterEthernetNetworkDiagnostics(pub id);
impl std::ops::Deref for MTRBaseClusterEthernetNetworkDiagnostics {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterEthernetNetworkDiagnostics {}
impl MTRBaseClusterEthernetNetworkDiagnostics {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterEthernetNetworkDiagnostics {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterEthernetNetworkDiagnostics {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterEthernetNetworkDiagnostics, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterEthernetNetworkDiagnostics(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterEthernetNetworkDiagnostics" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterEthernetNetworkDiagnostics {}
impl INSObject for MTRBaseClusterEthernetNetworkDiagnostics {}
impl PNSObject for MTRBaseClusterEthernetNetworkDiagnostics {}
impl IMTRBaseClusterEthernetNetworkDiagnostics for MTRBaseClusterEthernetNetworkDiagnostics {}
pub trait IMTRBaseClusterEthernetNetworkDiagnostics: Sized + std::ops::Deref {
    unsafe fn resetCountsWithParams_completion_(
        &self,
        params: MTREthernetNetworkDiagnosticsClusterResetCountsParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithParams : params, completion : completion)
    }
    unsafe fn resetCountsWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithCompletion : completion)
    }
    unsafe fn readAttributePHYRateWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePHYRateWithCompletion : completion)
    }
    unsafe fn subscribeAttributePHYRateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePHYRateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFullDuplexWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFullDuplexWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFullDuplexWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFullDuplexWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePacketRxCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePacketRxCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributePacketRxCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePacketRxCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePacketTxCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePacketTxCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributePacketTxCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePacketTxCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxErrCountWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxErrCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTxErrCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxErrCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCollisionCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCollisionCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCollisionCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCollisionCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOverrunCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOverrunCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOverrunCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOverrunCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCarrierDetectWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCarrierDetectWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCarrierDetectWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCarrierDetectWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTimeSinceResetWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTimeSinceResetWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTimeSinceResetWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTimeSinceResetWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributePHYRateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributePHYRateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFullDuplexWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeFullDuplexWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePacketRxCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributePacketRxCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePacketTxCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributePacketTxCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTxErrCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeTxErrCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCollisionCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeCollisionCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOverrunCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeOverrunCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCarrierDetectWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeCarrierDetectWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTimeSinceResetWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeTimeSinceResetWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), new)
    }
}
impl MTRBaseClusterEthernetNetworkDiagnostics_Availability
    for MTRBaseClusterEthernetNetworkDiagnostics
{
}
pub trait MTRBaseClusterEthernetNetworkDiagnostics_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterTimeSynchronization(pub id);
impl std::ops::Deref for MTRBaseClusterTimeSynchronization {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterTimeSynchronization {}
impl MTRBaseClusterTimeSynchronization {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeSynchronization").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterTimeSynchronization {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterTimeSynchronization {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterTimeSynchronization, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeSynchronization").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterTimeSynchronization(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterTimeSynchronization" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterTimeSynchronization {}
impl INSObject for MTRBaseClusterTimeSynchronization {}
impl PNSObject for MTRBaseClusterTimeSynchronization {}
impl IMTRBaseClusterTimeSynchronization for MTRBaseClusterTimeSynchronization {}
pub trait IMTRBaseClusterTimeSynchronization: Sized + std::ops::Deref {
    unsafe fn setUTCTimeWithParams_completion_(
        &self,
        params: MTRTimeSynchronizationClusterSetUTCTimeParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUTCTimeWithParams : params, completion : completion)
    }
    unsafe fn setTrustedTimeSourceWithParams_completion_(
        &self,
        params: MTRTimeSynchronizationClusterSetTrustedTimeSourceParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTrustedTimeSourceWithParams : params, completion : completion)
    }
    unsafe fn setTimeZoneWithParams_completion_(
        &self,
        params: MTRTimeSynchronizationClusterSetTimeZoneParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeZoneWithParams : params, completion : completion)
    }
    unsafe fn setDSTOffsetWithParams_completion_(
        &self,
        params: MTRTimeSynchronizationClusterSetDSTOffsetParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDSTOffsetWithParams : params, completion : completion)
    }
    unsafe fn setDefaultNTPWithParams_completion_(
        &self,
        params: MTRTimeSynchronizationClusterSetDefaultNTPParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDefaultNTPWithParams : params, completion : completion)
    }
    unsafe fn readAttributeUTCTimeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUTCTimeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUTCTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUTCTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGranularityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGranularityWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGranularityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGranularityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTimeSourceWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTimeSourceWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTimeSourceWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTimeSourceWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTrustedTimeSourceWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTrustedTimeSourceWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTrustedTimeSourceWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTrustedTimeSourceWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDefaultNTPWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultNTPWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDefaultNTPWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDefaultNTPWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTimeZoneWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTimeZoneWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTimeZoneWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTimeZoneWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDSTOffsetWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDSTOffsetWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDSTOffsetWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDSTOffsetWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLocalTimeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocalTimeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLocalTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLocalTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTimeZoneDatabaseWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTimeZoneDatabaseWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTimeZoneDatabaseWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTimeZoneDatabaseWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNTPServerAvailableWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNTPServerAvailableWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNTPServerAvailableWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNTPServerAvailableWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTimeZoneListMaxSizeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTimeZoneListMaxSizeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTimeZoneListMaxSizeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTimeZoneListMaxSizeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDSTOffsetListMaxSizeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDSTOffsetListMaxSizeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDSTOffsetListMaxSizeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDSTOffsetListMaxSizeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportsDNSResolveWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportsDNSResolveWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportsDNSResolveWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportsDNSResolveWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeUTCTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeSynchronization").unwrap(), readAttributeUTCTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGranularityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeSynchronization").unwrap(), readAttributeGranularityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTimeSourceWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeSynchronization").unwrap(), readAttributeTimeSourceWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTrustedTimeSourceWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeSynchronization").unwrap(), readAttributeTrustedTimeSourceWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDefaultNTPWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeSynchronization").unwrap(), readAttributeDefaultNTPWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTimeZoneWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeSynchronization").unwrap(), readAttributeTimeZoneWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDSTOffsetWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeSynchronization").unwrap(), readAttributeDSTOffsetWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLocalTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeSynchronization").unwrap(), readAttributeLocalTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTimeZoneDatabaseWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeSynchronization").unwrap(), readAttributeTimeZoneDatabaseWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNTPServerAvailableWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeSynchronization").unwrap(), readAttributeNTPServerAvailableWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTimeZoneListMaxSizeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeSynchronization").unwrap(), readAttributeTimeZoneListMaxSizeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDSTOffsetListMaxSizeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeSynchronization").unwrap(), readAttributeDSTOffsetListMaxSizeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSupportsDNSResolveWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeSynchronization").unwrap(), readAttributeSupportsDNSResolveWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeSynchronization").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeSynchronization").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeSynchronization").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeSynchronization").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeSynchronization").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeSynchronization").unwrap(), new)
    }
}
impl MTRBaseClusterTimeSynchronization_Availability for MTRBaseClusterTimeSynchronization {}
pub trait MTRBaseClusterTimeSynchronization_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterBridgedDeviceBasicInformation(pub id);
impl std::ops::Deref for MTRBaseClusterBridgedDeviceBasicInformation {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterBridgedDeviceBasicInformation {}
impl MTRBaseClusterBridgedDeviceBasicInformation {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterBridgedDeviceBasicInformation {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterBridgedDeviceBasicInformation {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterBridgedDeviceBasicInformation, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterBridgedDeviceBasicInformation(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterBridgedDeviceBasicInformation" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterBridgedDeviceBasicInformation {}
impl INSObject for MTRBaseClusterBridgedDeviceBasicInformation {}
impl PNSObject for MTRBaseClusterBridgedDeviceBasicInformation {}
impl IMTRBaseClusterBridgedDeviceBasicInformation for MTRBaseClusterBridgedDeviceBasicInformation {}
pub trait IMTRBaseClusterBridgedDeviceBasicInformation: Sized + std::ops::Deref {
    unsafe fn keepActiveWithParams_completion_(
        &self,
        params: MTRBridgedDeviceBasicInformationClusterKeepActiveParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keepActiveWithParams : params, completion : completion)
    }
    unsafe fn readAttributeVendorNameWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVendorNameWithCompletion : completion)
    }
    unsafe fn subscribeAttributeVendorNameWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeVendorNameWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeVendorIDWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVendorIDWithCompletion : completion)
    }
    unsafe fn subscribeAttributeVendorIDWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeVendorIDWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProductNameWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductNameWithCompletion : completion)
    }
    unsafe fn subscribeAttributeProductNameWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProductNameWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProductIDWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductIDWithCompletion : completion)
    }
    unsafe fn subscribeAttributeProductIDWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProductIDWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNodeLabelWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNodeLabelWithCompletion : completion)
    }
    unsafe fn writeAttributeNodeLabelWithValue_completion_(
        &self,
        value: NSString,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNodeLabelWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNodeLabelWithValue_params_completion_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNodeLabelWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNodeLabelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNodeLabelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeHardwareVersionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHardwareVersionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeHardwareVersionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHardwareVersionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeHardwareVersionStringWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHardwareVersionStringWithCompletion : completion)
    }
    unsafe fn subscribeAttributeHardwareVersionStringWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHardwareVersionStringWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSoftwareVersionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoftwareVersionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSoftwareVersionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSoftwareVersionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSoftwareVersionStringWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoftwareVersionStringWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSoftwareVersionStringWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSoftwareVersionStringWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeManufacturingDateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeManufacturingDateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeManufacturingDateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeManufacturingDateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePartNumberWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePartNumberWithCompletion : completion)
    }
    unsafe fn subscribeAttributePartNumberWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePartNumberWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProductURLWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductURLWithCompletion : completion)
    }
    unsafe fn subscribeAttributeProductURLWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProductURLWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProductLabelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductLabelWithCompletion : completion)
    }
    unsafe fn subscribeAttributeProductLabelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProductLabelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSerialNumberWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSerialNumberWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSerialNumberWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSerialNumberWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeReachableWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReachableWithCompletion : completion)
    }
    unsafe fn subscribeAttributeReachableWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeReachableWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUniqueIDWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUniqueIDWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUniqueIDWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUniqueIDWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProductAppearanceWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductAppearanceWithCompletion : completion)
    }
    unsafe fn subscribeAttributeProductAppearanceWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProductAppearanceWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeConfigurationVersionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeConfigurationVersionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeConfigurationVersionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeConfigurationVersionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeVendorNameWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeVendorNameWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeVendorIDWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeVendorIDWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeProductNameWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeProductNameWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeProductIDWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeProductIDWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNodeLabelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeNodeLabelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeHardwareVersionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeHardwareVersionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeHardwareVersionStringWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeHardwareVersionStringWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSoftwareVersionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeSoftwareVersionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSoftwareVersionStringWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeSoftwareVersionStringWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeManufacturingDateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeManufacturingDateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePartNumberWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributePartNumberWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeProductURLWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeProductURLWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeProductLabelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeProductLabelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSerialNumberWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeSerialNumberWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeReachableWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeReachableWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUniqueIDWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeUniqueIDWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeProductAppearanceWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeProductAppearanceWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeConfigurationVersionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeConfigurationVersionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasicInformation").unwrap(), new)
    }
}
impl MTRBaseClusterBridgedDeviceBasicInformation_Availability
    for MTRBaseClusterBridgedDeviceBasicInformation
{
}
pub trait MTRBaseClusterBridgedDeviceBasicInformation_Availability:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterSwitch(pub id);
impl std::ops::Deref for MTRBaseClusterSwitch {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterSwitch {}
impl MTRBaseClusterSwitch {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSwitch").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterSwitch {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterSwitch {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterSwitch, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterSwitch").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterSwitch(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterSwitch")
        }
    }
}
impl IMTRCluster for MTRBaseClusterSwitch {}
impl INSObject for MTRBaseClusterSwitch {}
impl PNSObject for MTRBaseClusterSwitch {}
impl IMTRBaseClusterSwitch for MTRBaseClusterSwitch {}
pub trait IMTRBaseClusterSwitch: Sized + std::ops::Deref {
    unsafe fn readAttributeNumberOfPositionsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfPositionsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNumberOfPositionsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfPositionsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentPositionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPositionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentPositionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentPositionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMultiPressMaxWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMultiPressMaxWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMultiPressMaxWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMultiPressMaxWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeNumberOfPositionsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSwitch").unwrap(), readAttributeNumberOfPositionsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentPositionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSwitch").unwrap(), readAttributeCurrentPositionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMultiPressMaxWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSwitch").unwrap(), readAttributeMultiPressMaxWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSwitch").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSwitch").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSwitch").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSwitch").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSwitch").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSwitch").unwrap(), new)
    }
}
impl MTRBaseClusterSwitch_Availability for MTRBaseClusterSwitch {}
pub trait MTRBaseClusterSwitch_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterAdministratorCommissioning(pub id);
impl std::ops::Deref for MTRBaseClusterAdministratorCommissioning {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterAdministratorCommissioning {}
impl MTRBaseClusterAdministratorCommissioning {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAdministratorCommissioning").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterAdministratorCommissioning {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterAdministratorCommissioning {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterAdministratorCommissioning, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterAdministratorCommissioning").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterAdministratorCommissioning(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterAdministratorCommissioning" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterAdministratorCommissioning {}
impl INSObject for MTRBaseClusterAdministratorCommissioning {}
impl PNSObject for MTRBaseClusterAdministratorCommissioning {}
impl IMTRBaseClusterAdministratorCommissioning for MTRBaseClusterAdministratorCommissioning {}
pub trait IMTRBaseClusterAdministratorCommissioning: Sized + std::ops::Deref {
    unsafe fn openCommissioningWindowWithParams_completion_(
        &self,
        params: MTRAdministratorCommissioningClusterOpenCommissioningWindowParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, openCommissioningWindowWithParams : params, completion : completion)
    }
    unsafe fn openBasicCommissioningWindowWithParams_completion_(
        &self,
        params: MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, openBasicCommissioningWindowWithParams : params, completion : completion)
    }
    unsafe fn revokeCommissioningWithParams_completion_(
        &self,
        params: MTRAdministratorCommissioningClusterRevokeCommissioningParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, revokeCommissioningWithParams : params, completion : completion)
    }
    unsafe fn revokeCommissioningWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, revokeCommissioningWithCompletion : completion)
    }
    unsafe fn readAttributeWindowStatusWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWindowStatusWithCompletion : completion)
    }
    unsafe fn subscribeAttributeWindowStatusWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWindowStatusWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAdminFabricIndexWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAdminFabricIndexWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAdminFabricIndexWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAdminFabricIndexWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAdminVendorIdWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAdminVendorIdWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAdminVendorIdWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAdminVendorIdWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeWindowStatusWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAdministratorCommissioning").unwrap(), readAttributeWindowStatusWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAdminFabricIndexWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAdministratorCommissioning").unwrap(), readAttributeAdminFabricIndexWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAdminVendorIdWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAdministratorCommissioning").unwrap(), readAttributeAdminVendorIdWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAdministratorCommissioning").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAdministratorCommissioning").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAdministratorCommissioning").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAdministratorCommissioning").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAdministratorCommissioning").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAdministratorCommissioning").unwrap(), new)
    }
}
impl MTRBaseClusterAdministratorCommissioning_Availability
    for MTRBaseClusterAdministratorCommissioning
{
}
pub trait MTRBaseClusterAdministratorCommissioning_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterOperationalCredentials(pub id);
impl std::ops::Deref for MTRBaseClusterOperationalCredentials {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterOperationalCredentials {}
impl MTRBaseClusterOperationalCredentials {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterOperationalCredentials {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterOperationalCredentials {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterOperationalCredentials, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterOperationalCredentials(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterOperationalCredentials" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterOperationalCredentials {}
impl INSObject for MTRBaseClusterOperationalCredentials {}
impl PNSObject for MTRBaseClusterOperationalCredentials {}
impl IMTRBaseClusterOperationalCredentials for MTRBaseClusterOperationalCredentials {}
pub trait IMTRBaseClusterOperationalCredentials: Sized + std::ops::Deref {
    unsafe fn attestationRequestWithParams_completion_(
        &self,
        params: MTROperationalCredentialsClusterAttestationRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, attestationRequestWithParams : params, completion : completion)
    }
    unsafe fn certificateChainRequestWithParams_completion_(
        &self,
        params: MTROperationalCredentialsClusterCertificateChainRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, certificateChainRequestWithParams : params, completion : completion)
    }
    unsafe fn CSRRequestWithParams_completion_(
        &self,
        params: MTROperationalCredentialsClusterCSRRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, CSRRequestWithParams : params, completion : completion)
    }
    unsafe fn addNOCWithParams_completion_(
        &self,
        params: MTROperationalCredentialsClusterAddNOCParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addNOCWithParams : params, completion : completion)
    }
    unsafe fn updateNOCWithParams_completion_(
        &self,
        params: MTROperationalCredentialsClusterUpdateNOCParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateNOCWithParams : params, completion : completion)
    }
    unsafe fn updateFabricLabelWithParams_completion_(
        &self,
        params: MTROperationalCredentialsClusterUpdateFabricLabelParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateFabricLabelWithParams : params, completion : completion)
    }
    unsafe fn removeFabricWithParams_completion_(
        &self,
        params: MTROperationalCredentialsClusterRemoveFabricParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeFabricWithParams : params, completion : completion)
    }
    unsafe fn addTrustedRootCertificateWithParams_completion_(
        &self,
        params: MTROperationalCredentialsClusterAddTrustedRootCertificateParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addTrustedRootCertificateWithParams : params, completion : completion)
    }
    unsafe fn setVIDVerificationStatementWithParams_completion_(
        &self,
        params: MTROperationalCredentialsClusterSetVIDVerificationStatementParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVIDVerificationStatementWithParams : params, completion : completion)
    }
    unsafe fn setVIDVerificationStatementWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVIDVerificationStatementWithCompletion : completion)
    }
    unsafe fn signVIDVerificationRequestWithParams_completion_(
        &self,
        params: MTROperationalCredentialsClusterSignVIDVerificationRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, signVIDVerificationRequestWithParams : params, completion : completion)
    }
    unsafe fn readAttributeNOCsWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNOCsWithParams : params, completion : completion)
    }
    unsafe fn subscribeAttributeNOCsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNOCsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFabricsWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFabricsWithParams : params, completion : completion)
    }
    unsafe fn subscribeAttributeFabricsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFabricsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedFabricsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedFabricsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedFabricsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedFabricsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCommissionedFabricsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCommissionedFabricsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCommissionedFabricsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCommissionedFabricsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTrustedRootCertificatesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTrustedRootCertificatesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTrustedRootCertificatesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTrustedRootCertificatesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentFabricIndexWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentFabricIndexWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentFabricIndexWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentFabricIndexWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeNOCsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeNOCsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFabricsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeFabricsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSupportedFabricsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeSupportedFabricsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCommissionedFabricsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeCommissionedFabricsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTrustedRootCertificatesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeTrustedRootCertificatesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentFabricIndexWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeCurrentFabricIndexWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), new)
    }
}
impl MTRBaseClusterOperationalCredentials_Availability for MTRBaseClusterOperationalCredentials {}
pub trait MTRBaseClusterOperationalCredentials_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterGroupKeyManagement(pub id);
impl std::ops::Deref for MTRBaseClusterGroupKeyManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterGroupKeyManagement {}
impl MTRBaseClusterGroupKeyManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupKeyManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterGroupKeyManagement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterGroupKeyManagement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterGroupKeyManagement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupKeyManagement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterGroupKeyManagement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterGroupKeyManagement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterGroupKeyManagement {}
impl INSObject for MTRBaseClusterGroupKeyManagement {}
impl PNSObject for MTRBaseClusterGroupKeyManagement {}
impl IMTRBaseClusterGroupKeyManagement for MTRBaseClusterGroupKeyManagement {}
pub trait IMTRBaseClusterGroupKeyManagement: Sized + std::ops::Deref {
    unsafe fn keySetWriteWithParams_completion_(
        &self,
        params: MTRGroupKeyManagementClusterKeySetWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keySetWriteWithParams : params, completion : completion)
    }
    unsafe fn keySetReadWithParams_completion_(
        &self,
        params: MTRGroupKeyManagementClusterKeySetReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keySetReadWithParams : params, completion : completion)
    }
    unsafe fn keySetRemoveWithParams_completion_(
        &self,
        params: MTRGroupKeyManagementClusterKeySetRemoveParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keySetRemoveWithParams : params, completion : completion)
    }
    unsafe fn keySetReadAllIndicesWithParams_completion_(
        &self,
        params: MTRGroupKeyManagementClusterKeySetReadAllIndicesParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keySetReadAllIndicesWithParams : params, completion : completion)
    }
    unsafe fn keySetReadAllIndicesWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keySetReadAllIndicesWithCompletion : completion)
    }
    unsafe fn readAttributeGroupKeyMapWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGroupKeyMapWithParams : params, completion : completion)
    }
    unsafe fn writeAttributeGroupKeyMapWithValue_completion_(
        &self,
        value: NSArray,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeGroupKeyMapWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeGroupKeyMapWithValue_params_completion_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeGroupKeyMapWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeGroupKeyMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGroupKeyMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGroupTableWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGroupTableWithParams : params, completion : completion)
    }
    unsafe fn subscribeAttributeGroupTableWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGroupTableWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxGroupsPerFabricWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxGroupsPerFabricWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxGroupsPerFabricWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxGroupsPerFabricWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxGroupKeysPerFabricWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxGroupKeysPerFabricWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxGroupKeysPerFabricWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxGroupKeysPerFabricWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeGroupKeyMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupKeyManagement").unwrap(), readAttributeGroupKeyMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGroupTableWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupKeyManagement").unwrap(), readAttributeGroupTableWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxGroupsPerFabricWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupKeyManagement").unwrap(), readAttributeMaxGroupsPerFabricWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxGroupKeysPerFabricWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupKeyManagement").unwrap(), readAttributeMaxGroupKeysPerFabricWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupKeyManagement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupKeyManagement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupKeyManagement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupKeyManagement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupKeyManagement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupKeyManagement").unwrap(), new)
    }
}
impl MTRBaseClusterGroupKeyManagement_Availability for MTRBaseClusterGroupKeyManagement {}
pub trait MTRBaseClusterGroupKeyManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterFixedLabel(pub id);
impl std::ops::Deref for MTRBaseClusterFixedLabel {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterFixedLabel {}
impl MTRBaseClusterFixedLabel {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFixedLabel").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterFixedLabel {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterFixedLabel {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterFixedLabel, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterFixedLabel").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterFixedLabel(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterFixedLabel")
        }
    }
}
impl IMTRCluster for MTRBaseClusterFixedLabel {}
impl INSObject for MTRBaseClusterFixedLabel {}
impl PNSObject for MTRBaseClusterFixedLabel {}
impl IMTRBaseClusterFixedLabel for MTRBaseClusterFixedLabel {}
pub trait IMTRBaseClusterFixedLabel: Sized + std::ops::Deref {
    unsafe fn readAttributeLabelListWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLabelListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLabelListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLabelListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeLabelListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFixedLabel").unwrap(), readAttributeLabelListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFixedLabel").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFixedLabel").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFixedLabel").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFixedLabel").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFixedLabel").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFixedLabel").unwrap(), new)
    }
}
impl MTRBaseClusterFixedLabel_Availability for MTRBaseClusterFixedLabel {}
pub trait MTRBaseClusterFixedLabel_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterUserLabel(pub id);
impl std::ops::Deref for MTRBaseClusterUserLabel {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterUserLabel {}
impl MTRBaseClusterUserLabel {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUserLabel").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterUserLabel {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterUserLabel {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterUserLabel, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterUserLabel").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterUserLabel(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterUserLabel")
        }
    }
}
impl IMTRCluster for MTRBaseClusterUserLabel {}
impl INSObject for MTRBaseClusterUserLabel {}
impl PNSObject for MTRBaseClusterUserLabel {}
impl IMTRBaseClusterUserLabel for MTRBaseClusterUserLabel {}
pub trait IMTRBaseClusterUserLabel: Sized + std::ops::Deref {
    unsafe fn readAttributeLabelListWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLabelListWithCompletion : completion)
    }
    unsafe fn writeAttributeLabelListWithValue_completion_(
        &self,
        value: NSArray,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLabelListWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLabelListWithValue_params_completion_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLabelListWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLabelListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLabelListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeLabelListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUserLabel").unwrap(), readAttributeLabelListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUserLabel").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUserLabel").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUserLabel").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUserLabel").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUserLabel").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUserLabel").unwrap(), new)
    }
}
impl MTRBaseClusterUserLabel_Availability for MTRBaseClusterUserLabel {}
pub trait MTRBaseClusterUserLabel_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterBooleanState(pub id);
impl std::ops::Deref for MTRBaseClusterBooleanState {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterBooleanState {}
impl MTRBaseClusterBooleanState {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanState").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterBooleanState {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterBooleanState {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterBooleanState, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanState").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterBooleanState(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterBooleanState")
        }
    }
}
impl IMTRCluster for MTRBaseClusterBooleanState {}
impl INSObject for MTRBaseClusterBooleanState {}
impl PNSObject for MTRBaseClusterBooleanState {}
impl IMTRBaseClusterBooleanState for MTRBaseClusterBooleanState {}
pub trait IMTRBaseClusterBooleanState: Sized + std::ops::Deref {
    unsafe fn readAttributeStateValueWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStateValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeStateValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStateValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeStateValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanState").unwrap(), readAttributeStateValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanState").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanState").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanState").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanState").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanState").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanState").unwrap(), new)
    }
}
impl MTRBaseClusterBooleanState_Availability for MTRBaseClusterBooleanState {}
pub trait MTRBaseClusterBooleanState_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterICDManagement(pub id);
impl std::ops::Deref for MTRBaseClusterICDManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterICDManagement {}
impl MTRBaseClusterICDManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterICDManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterICDManagement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterICDManagement {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterICDManagement, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterICDManagement").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterICDManagement(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterICDManagement")
        }
    }
}
impl IMTRCluster for MTRBaseClusterICDManagement {}
impl INSObject for MTRBaseClusterICDManagement {}
impl PNSObject for MTRBaseClusterICDManagement {}
impl IMTRBaseClusterICDManagement for MTRBaseClusterICDManagement {}
pub trait IMTRBaseClusterICDManagement: Sized + std::ops::Deref {
    unsafe fn registerClientWithParams_completion_(
        &self,
        params: MTRICDManagementClusterRegisterClientParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, registerClientWithParams : params, completion : completion)
    }
    unsafe fn unregisterClientWithParams_completion_(
        &self,
        params: MTRICDManagementClusterUnregisterClientParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unregisterClientWithParams : params, completion : completion)
    }
    unsafe fn stayActiveRequestWithParams_completion_(
        &self,
        params: MTRICDManagementClusterStayActiveRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stayActiveRequestWithParams : params, completion : completion)
    }
    unsafe fn readAttributeIdleModeDurationWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeIdleModeDurationWithCompletion : completion)
    }
    unsafe fn subscribeAttributeIdleModeDurationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeIdleModeDurationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveModeDurationWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveModeDurationWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActiveModeDurationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveModeDurationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveModeThresholdWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveModeThresholdWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActiveModeThresholdWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveModeThresholdWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRegisteredClientsWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRegisteredClientsWithParams : params, completion : completion)
    }
    unsafe fn subscribeAttributeRegisteredClientsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRegisteredClientsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeICDCounterWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeICDCounterWithCompletion : completion)
    }
    unsafe fn subscribeAttributeICDCounterWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeICDCounterWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClientsSupportedPerFabricWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClientsSupportedPerFabricWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClientsSupportedPerFabricWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClientsSupportedPerFabricWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUserActiveModeTriggerHintWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUserActiveModeTriggerHintWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUserActiveModeTriggerHintWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUserActiveModeTriggerHintWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUserActiveModeTriggerInstructionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUserActiveModeTriggerInstructionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUserActiveModeTriggerInstructionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUserActiveModeTriggerInstructionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOperatingModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperatingModeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOperatingModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOperatingModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaximumCheckInBackOffWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaximumCheckInBackOffWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaximumCheckInBackOffWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaximumCheckInBackOffWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeIdleModeDurationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterICDManagement").unwrap(), readAttributeIdleModeDurationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActiveModeDurationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterICDManagement").unwrap(), readAttributeActiveModeDurationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActiveModeThresholdWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterICDManagement").unwrap(), readAttributeActiveModeThresholdWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRegisteredClientsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterICDManagement").unwrap(), readAttributeRegisteredClientsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeICDCounterWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterICDManagement").unwrap(), readAttributeICDCounterWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClientsSupportedPerFabricWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterICDManagement").unwrap(), readAttributeClientsSupportedPerFabricWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUserActiveModeTriggerHintWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterICDManagement").unwrap(), readAttributeUserActiveModeTriggerHintWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUserActiveModeTriggerInstructionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterICDManagement").unwrap(), readAttributeUserActiveModeTriggerInstructionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOperatingModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterICDManagement").unwrap(), readAttributeOperatingModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaximumCheckInBackOffWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterICDManagement").unwrap(), readAttributeMaximumCheckInBackOffWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterICDManagement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterICDManagement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterICDManagement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterICDManagement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterICDManagement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterICDManagement").unwrap(), new)
    }
}
impl MTRBaseClusterICDManagement_Availability for MTRBaseClusterICDManagement {}
pub trait MTRBaseClusterICDManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterTimer(pub id);
impl std::ops::Deref for MTRBaseClusterTimer {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterTimer {}
impl MTRBaseClusterTimer {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimer").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterTimer {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterTimer {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterTimer, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterTimer").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterTimer(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterTimer")
        }
    }
}
impl IMTRCluster for MTRBaseClusterTimer {}
impl INSObject for MTRBaseClusterTimer {}
impl PNSObject for MTRBaseClusterTimer {}
impl IMTRBaseClusterTimer for MTRBaseClusterTimer {}
pub trait IMTRBaseClusterTimer: Sized + std::ops::Deref {
    unsafe fn setTimerWithParams_completion_(
        &self,
        params: MTRTimerClusterSetTimerParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimerWithParams : params, completion : completion)
    }
    unsafe fn resetTimerWithParams_completion_(
        &self,
        params: MTRTimerClusterResetTimerParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetTimerWithParams : params, completion : completion)
    }
    unsafe fn resetTimerWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetTimerWithCompletion : completion)
    }
    unsafe fn addTimeWithParams_completion_(
        &self,
        params: MTRTimerClusterAddTimeParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addTimeWithParams : params, completion : completion)
    }
    unsafe fn reduceTimeWithParams_completion_(
        &self,
        params: MTRTimerClusterReduceTimeParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, reduceTimeWithParams : params, completion : completion)
    }
    unsafe fn readAttributeSetTimeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSetTimeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSetTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSetTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTimeRemainingWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTimeRemainingWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTimeRemainingWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTimeRemainingWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTimerStateWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTimerStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTimerStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTimerStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSetTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimer").unwrap(), readAttributeSetTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTimeRemainingWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimer").unwrap(), readAttributeTimeRemainingWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTimerStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimer").unwrap(), readAttributeTimerStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimer").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimer").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimer").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimer").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimer").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimer").unwrap(), new)
    }
}
impl MTRBaseClusterTimer_Availability for MTRBaseClusterTimer {}
pub trait MTRBaseClusterTimer_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterOvenCavityOperationalState(pub id);
impl std::ops::Deref for MTRBaseClusterOvenCavityOperationalState {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterOvenCavityOperationalState {}
impl MTRBaseClusterOvenCavityOperationalState {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenCavityOperationalState").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterOvenCavityOperationalState {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterOvenCavityOperationalState {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterOvenCavityOperationalState, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenCavityOperationalState").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterOvenCavityOperationalState(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterOvenCavityOperationalState" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterOvenCavityOperationalState {}
impl INSObject for MTRBaseClusterOvenCavityOperationalState {}
impl PNSObject for MTRBaseClusterOvenCavityOperationalState {}
impl IMTRBaseClusterOvenCavityOperationalState for MTRBaseClusterOvenCavityOperationalState {}
pub trait IMTRBaseClusterOvenCavityOperationalState: Sized + std::ops::Deref {
    unsafe fn stopWithParams_completion_(
        &self,
        params: MTROvenCavityOperationalStateClusterStopParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithParams : params, completion : completion)
    }
    unsafe fn stopWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithCompletion : completion)
    }
    unsafe fn startWithParams_completion_(
        &self,
        params: MTROvenCavityOperationalStateClusterStartParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startWithParams : params, completion : completion)
    }
    unsafe fn startWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startWithCompletion : completion)
    }
    unsafe fn readAttributePhaseListWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhaseListWithCompletion : completion)
    }
    unsafe fn subscribeAttributePhaseListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePhaseListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentPhaseWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPhaseWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentPhaseWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentPhaseWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCountdownTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCountdownTimeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCountdownTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCountdownTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOperationalStateListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalStateListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOperationalStateListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOperationalStateListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOperationalStateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOperationalStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOperationalStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOperationalErrorWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalErrorWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOperationalErrorWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOperationalErrorWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributePhaseListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenCavityOperationalState").unwrap(), readAttributePhaseListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentPhaseWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenCavityOperationalState").unwrap(), readAttributeCurrentPhaseWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCountdownTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenCavityOperationalState").unwrap(), readAttributeCountdownTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOperationalStateListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenCavityOperationalState").unwrap(), readAttributeOperationalStateListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOperationalStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenCavityOperationalState").unwrap(), readAttributeOperationalStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOperationalErrorWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenCavityOperationalState").unwrap(), readAttributeOperationalErrorWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenCavityOperationalState").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenCavityOperationalState").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenCavityOperationalState").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenCavityOperationalState").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenCavityOperationalState").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenCavityOperationalState").unwrap(), new)
    }
}
impl MTRBaseClusterOvenCavityOperationalState_Availability
    for MTRBaseClusterOvenCavityOperationalState
{
}
pub trait MTRBaseClusterOvenCavityOperationalState_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterOvenMode(pub id);
impl std::ops::Deref for MTRBaseClusterOvenMode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterOvenMode {}
impl MTRBaseClusterOvenMode {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenMode").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterOvenMode {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterOvenMode {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterOvenMode, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenMode").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterOvenMode(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterOvenMode")
        }
    }
}
impl IMTRCluster for MTRBaseClusterOvenMode {}
impl INSObject for MTRBaseClusterOvenMode {}
impl PNSObject for MTRBaseClusterOvenMode {}
impl IMTRBaseClusterOvenMode for MTRBaseClusterOvenMode {}
pub trait IMTRBaseClusterOvenMode: Sized + std::ops::Deref {
    unsafe fn changeToModeWithParams_completion_(
        &self,
        params: MTROvenModeClusterChangeToModeParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, completion : completion)
    }
    unsafe fn readAttributeSupportedModesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedModesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedModesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSupportedModesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenMode").unwrap(), readAttributeSupportedModesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenMode").unwrap(), readAttributeCurrentModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenMode").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenMode").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenMode").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenMode").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenMode").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOvenMode").unwrap(), new)
    }
}
impl MTRBaseClusterOvenMode_Availability for MTRBaseClusterOvenMode {}
pub trait MTRBaseClusterOvenMode_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterLaundryDryerControls(pub id);
impl std::ops::Deref for MTRBaseClusterLaundryDryerControls {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterLaundryDryerControls {}
impl MTRBaseClusterLaundryDryerControls {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryDryerControls").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterLaundryDryerControls {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterLaundryDryerControls {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterLaundryDryerControls, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryDryerControls").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterLaundryDryerControls(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterLaundryDryerControls" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterLaundryDryerControls {}
impl INSObject for MTRBaseClusterLaundryDryerControls {}
impl PNSObject for MTRBaseClusterLaundryDryerControls {}
impl IMTRBaseClusterLaundryDryerControls for MTRBaseClusterLaundryDryerControls {}
pub trait IMTRBaseClusterLaundryDryerControls: Sized + std::ops::Deref {
    unsafe fn readAttributeSupportedDrynessLevelsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedDrynessLevelsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedDrynessLevelsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedDrynessLevelsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSelectedDrynessLevelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSelectedDrynessLevelWithCompletion : completion)
    }
    unsafe fn writeAttributeSelectedDrynessLevelWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSelectedDrynessLevelWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeSelectedDrynessLevelWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSelectedDrynessLevelWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeSelectedDrynessLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSelectedDrynessLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSupportedDrynessLevelsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryDryerControls").unwrap(), readAttributeSupportedDrynessLevelsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSelectedDrynessLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryDryerControls").unwrap(), readAttributeSelectedDrynessLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryDryerControls").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryDryerControls").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryDryerControls").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryDryerControls").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryDryerControls").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryDryerControls").unwrap(), new)
    }
}
impl MTRBaseClusterLaundryDryerControls_Availability for MTRBaseClusterLaundryDryerControls {}
pub trait MTRBaseClusterLaundryDryerControls_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterModeSelect(pub id);
impl std::ops::Deref for MTRBaseClusterModeSelect {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterModeSelect {}
impl MTRBaseClusterModeSelect {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterModeSelect {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterModeSelect {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterModeSelect, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterModeSelect(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterModeSelect")
        }
    }
}
impl IMTRCluster for MTRBaseClusterModeSelect {}
impl INSObject for MTRBaseClusterModeSelect {}
impl PNSObject for MTRBaseClusterModeSelect {}
impl IMTRBaseClusterModeSelect for MTRBaseClusterModeSelect {}
pub trait IMTRBaseClusterModeSelect: Sized + std::ops::Deref {
    unsafe fn changeToModeWithParams_completion_(
        &self,
        params: MTRModeSelectClusterChangeToModeParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, completion : completion)
    }
    unsafe fn readAttributeDescriptionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDescriptionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDescriptionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDescriptionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStandardNamespaceWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStandardNamespaceWithCompletion : completion)
    }
    unsafe fn subscribeAttributeStandardNamespaceWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStandardNamespaceWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedModesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedModesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedModesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStartUpModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStartUpModeWithCompletion : completion)
    }
    unsafe fn writeAttributeStartUpModeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpModeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeStartUpModeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpModeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeStartUpModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStartUpModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOnModeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnModeWithCompletion : completion)
    }
    unsafe fn writeAttributeOnModeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnModeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeOnModeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnModeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeOnModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOnModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeDescriptionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeDescriptionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeStandardNamespaceWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeStandardNamespaceWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSupportedModesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeSupportedModesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeCurrentModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeStartUpModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeStartUpModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOnModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeOnModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), new)
    }
}
impl MTRBaseClusterModeSelect_Availability for MTRBaseClusterModeSelect {}
pub trait MTRBaseClusterModeSelect_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterLaundryWasherMode(pub id);
impl std::ops::Deref for MTRBaseClusterLaundryWasherMode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterLaundryWasherMode {}
impl MTRBaseClusterLaundryWasherMode {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherMode").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterLaundryWasherMode {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterLaundryWasherMode {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterLaundryWasherMode, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherMode").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterLaundryWasherMode(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterLaundryWasherMode" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterLaundryWasherMode {}
impl INSObject for MTRBaseClusterLaundryWasherMode {}
impl PNSObject for MTRBaseClusterLaundryWasherMode {}
impl IMTRBaseClusterLaundryWasherMode for MTRBaseClusterLaundryWasherMode {}
pub trait IMTRBaseClusterLaundryWasherMode: Sized + std::ops::Deref {
    unsafe fn changeToModeWithParams_completion_(
        &self,
        params: MTRLaundryWasherModeClusterChangeToModeParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, completion : completion)
    }
    unsafe fn readAttributeSupportedModesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedModesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedModesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSupportedModesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherMode").unwrap(), readAttributeSupportedModesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherMode").unwrap(), readAttributeCurrentModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherMode").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherMode").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherMode").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherMode").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherMode").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherMode").unwrap(), new)
    }
}
impl MTRBaseClusterLaundryWasherMode_Availability for MTRBaseClusterLaundryWasherMode {}
pub trait MTRBaseClusterLaundryWasherMode_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode(pub id);
impl std::ops::Deref for MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode {}
impl MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode").unwrap(), alloc)
        })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode {}
impl std::convert::TryFrom<MTRGenericBaseCluster>
    for MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode
{
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode {}
impl INSObject for MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode {}
impl PNSObject for MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode {}
impl IMTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode
    for MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode
{
}
pub trait IMTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode:
    Sized + std::ops::Deref
{
    unsafe fn changeToModeWithParams_completion_(
        &self,
        params: MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, completion : completion)
    }
    unsafe fn readAttributeSupportedModesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedModesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedModesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSupportedModesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode").unwrap(), readAttributeSupportedModesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode").unwrap(), readAttributeCurrentModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode").unwrap(), new)
    }
}
impl MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode_Availability
    for MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode
{
}
pub trait MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode_Availability:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterLaundryWasherControls(pub id);
impl std::ops::Deref for MTRBaseClusterLaundryWasherControls {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterLaundryWasherControls {}
impl MTRBaseClusterLaundryWasherControls {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherControls").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterLaundryWasherControls {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterLaundryWasherControls {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterLaundryWasherControls, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherControls").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterLaundryWasherControls(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterLaundryWasherControls" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterLaundryWasherControls {}
impl INSObject for MTRBaseClusterLaundryWasherControls {}
impl PNSObject for MTRBaseClusterLaundryWasherControls {}
impl IMTRBaseClusterLaundryWasherControls for MTRBaseClusterLaundryWasherControls {}
pub trait IMTRBaseClusterLaundryWasherControls: Sized + std::ops::Deref {
    unsafe fn readAttributeSpinSpeedsWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpinSpeedsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSpinSpeedsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSpinSpeedsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSpinSpeedCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpinSpeedCurrentWithCompletion : completion)
    }
    unsafe fn writeAttributeSpinSpeedCurrentWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSpinSpeedCurrentWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeSpinSpeedCurrentWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSpinSpeedCurrentWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeSpinSpeedCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSpinSpeedCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfRinsesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfRinsesWithCompletion : completion)
    }
    unsafe fn writeAttributeNumberOfRinsesWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNumberOfRinsesWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNumberOfRinsesWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNumberOfRinsesWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNumberOfRinsesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfRinsesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedRinsesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedRinsesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedRinsesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedRinsesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSpinSpeedsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherControls").unwrap(), readAttributeSpinSpeedsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSpinSpeedCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherControls").unwrap(), readAttributeSpinSpeedCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNumberOfRinsesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherControls").unwrap(), readAttributeNumberOfRinsesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSupportedRinsesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherControls").unwrap(), readAttributeSupportedRinsesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherControls").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherControls").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherControls").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherControls").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherControls").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLaundryWasherControls").unwrap(), new)
    }
}
impl MTRBaseClusterLaundryWasherControls_Availability for MTRBaseClusterLaundryWasherControls {}
pub trait MTRBaseClusterLaundryWasherControls_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterRVCRunMode(pub id);
impl std::ops::Deref for MTRBaseClusterRVCRunMode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterRVCRunMode {}
impl MTRBaseClusterRVCRunMode {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCRunMode").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterRVCRunMode {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterRVCRunMode {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterRVCRunMode, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCRunMode").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterRVCRunMode(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterRVCRunMode")
        }
    }
}
impl IMTRCluster for MTRBaseClusterRVCRunMode {}
impl INSObject for MTRBaseClusterRVCRunMode {}
impl PNSObject for MTRBaseClusterRVCRunMode {}
impl IMTRBaseClusterRVCRunMode for MTRBaseClusterRVCRunMode {}
pub trait IMTRBaseClusterRVCRunMode: Sized + std::ops::Deref {
    unsafe fn changeToModeWithParams_completion_(
        &self,
        params: MTRRVCRunModeClusterChangeToModeParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, completion : completion)
    }
    unsafe fn readAttributeSupportedModesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedModesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedModesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSupportedModesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCRunMode").unwrap(), readAttributeSupportedModesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCRunMode").unwrap(), readAttributeCurrentModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCRunMode").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCRunMode").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCRunMode").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCRunMode").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCRunMode").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCRunMode").unwrap(), new)
    }
}
impl MTRBaseClusterRVCRunMode_Availability for MTRBaseClusterRVCRunMode {}
pub trait MTRBaseClusterRVCRunMode_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterRVCCleanMode(pub id);
impl std::ops::Deref for MTRBaseClusterRVCCleanMode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterRVCCleanMode {}
impl MTRBaseClusterRVCCleanMode {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCCleanMode").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterRVCCleanMode {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterRVCCleanMode {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterRVCCleanMode, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCCleanMode").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterRVCCleanMode(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterRVCCleanMode")
        }
    }
}
impl IMTRCluster for MTRBaseClusterRVCCleanMode {}
impl INSObject for MTRBaseClusterRVCCleanMode {}
impl PNSObject for MTRBaseClusterRVCCleanMode {}
impl IMTRBaseClusterRVCCleanMode for MTRBaseClusterRVCCleanMode {}
pub trait IMTRBaseClusterRVCCleanMode: Sized + std::ops::Deref {
    unsafe fn changeToModeWithParams_completion_(
        &self,
        params: MTRRVCCleanModeClusterChangeToModeParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, completion : completion)
    }
    unsafe fn readAttributeSupportedModesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedModesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedModesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSupportedModesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCCleanMode").unwrap(), readAttributeSupportedModesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCCleanMode").unwrap(), readAttributeCurrentModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCCleanMode").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCCleanMode").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCCleanMode").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCCleanMode").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCCleanMode").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCCleanMode").unwrap(), new)
    }
}
impl MTRBaseClusterRVCCleanMode_Availability for MTRBaseClusterRVCCleanMode {}
pub trait MTRBaseClusterRVCCleanMode_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterTemperatureControl(pub id);
impl std::ops::Deref for MTRBaseClusterTemperatureControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterTemperatureControl {}
impl MTRBaseClusterTemperatureControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureControl").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterTemperatureControl {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterTemperatureControl {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterTemperatureControl, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureControl").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterTemperatureControl(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterTemperatureControl" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterTemperatureControl {}
impl INSObject for MTRBaseClusterTemperatureControl {}
impl PNSObject for MTRBaseClusterTemperatureControl {}
impl IMTRBaseClusterTemperatureControl for MTRBaseClusterTemperatureControl {}
pub trait IMTRBaseClusterTemperatureControl: Sized + std::ops::Deref {
    unsafe fn setTemperatureWithParams_completion_(
        &self,
        params: MTRTemperatureControlClusterSetTemperatureParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTemperatureWithParams : params, completion : completion)
    }
    unsafe fn setTemperatureWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTemperatureWithCompletion : completion)
    }
    unsafe fn readAttributeTemperatureSetpointWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTemperatureSetpointWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTemperatureSetpointWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTemperatureSetpointWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinTemperatureWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinTemperatureWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinTemperatureWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinTemperatureWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxTemperatureWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxTemperatureWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxTemperatureWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxTemperatureWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStepWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStepWithCompletion : completion)
    }
    unsafe fn subscribeAttributeStepWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStepWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSelectedTemperatureLevelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSelectedTemperatureLevelWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSelectedTemperatureLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSelectedTemperatureLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedTemperatureLevelsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedTemperatureLevelsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedTemperatureLevelsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedTemperatureLevelsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeTemperatureSetpointWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureControl").unwrap(), readAttributeTemperatureSetpointWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinTemperatureWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureControl").unwrap(), readAttributeMinTemperatureWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxTemperatureWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureControl").unwrap(), readAttributeMaxTemperatureWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeStepWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureControl").unwrap(), readAttributeStepWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSelectedTemperatureLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureControl").unwrap(), readAttributeSelectedTemperatureLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSupportedTemperatureLevelsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureControl").unwrap(), readAttributeSupportedTemperatureLevelsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureControl").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureControl").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureControl").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureControl").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureControl").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureControl").unwrap(), new)
    }
}
impl MTRBaseClusterTemperatureControl_Availability for MTRBaseClusterTemperatureControl {}
pub trait MTRBaseClusterTemperatureControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterRefrigeratorAlarm(pub id);
impl std::ops::Deref for MTRBaseClusterRefrigeratorAlarm {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterRefrigeratorAlarm {}
impl MTRBaseClusterRefrigeratorAlarm {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRefrigeratorAlarm").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterRefrigeratorAlarm {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterRefrigeratorAlarm {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterRefrigeratorAlarm, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterRefrigeratorAlarm").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterRefrigeratorAlarm(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterRefrigeratorAlarm" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterRefrigeratorAlarm {}
impl INSObject for MTRBaseClusterRefrigeratorAlarm {}
impl PNSObject for MTRBaseClusterRefrigeratorAlarm {}
impl IMTRBaseClusterRefrigeratorAlarm for MTRBaseClusterRefrigeratorAlarm {}
pub trait IMTRBaseClusterRefrigeratorAlarm: Sized + std::ops::Deref {
    unsafe fn readAttributeMaskWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaskWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaskWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaskWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStateWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMaskWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRefrigeratorAlarm").unwrap(), readAttributeMaskWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRefrigeratorAlarm").unwrap(), readAttributeStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSupportedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRefrigeratorAlarm").unwrap(), readAttributeSupportedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRefrigeratorAlarm").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRefrigeratorAlarm").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRefrigeratorAlarm").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRefrigeratorAlarm").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRefrigeratorAlarm").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRefrigeratorAlarm").unwrap(), new)
    }
}
impl MTRBaseClusterRefrigeratorAlarm_Availability for MTRBaseClusterRefrigeratorAlarm {}
pub trait MTRBaseClusterRefrigeratorAlarm_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterDishwasherMode(pub id);
impl std::ops::Deref for MTRBaseClusterDishwasherMode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterDishwasherMode {}
impl MTRBaseClusterDishwasherMode {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherMode").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterDishwasherMode {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterDishwasherMode {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterDishwasherMode, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherMode").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterDishwasherMode(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterDishwasherMode")
        }
    }
}
impl IMTRCluster for MTRBaseClusterDishwasherMode {}
impl INSObject for MTRBaseClusterDishwasherMode {}
impl PNSObject for MTRBaseClusterDishwasherMode {}
impl IMTRBaseClusterDishwasherMode for MTRBaseClusterDishwasherMode {}
pub trait IMTRBaseClusterDishwasherMode: Sized + std::ops::Deref {
    unsafe fn changeToModeWithParams_completion_(
        &self,
        params: MTRDishwasherModeClusterChangeToModeParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, completion : completion)
    }
    unsafe fn readAttributeSupportedModesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedModesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedModesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSupportedModesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherMode").unwrap(), readAttributeSupportedModesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherMode").unwrap(), readAttributeCurrentModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherMode").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherMode").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherMode").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherMode").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherMode").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherMode").unwrap(), new)
    }
}
impl MTRBaseClusterDishwasherMode_Availability for MTRBaseClusterDishwasherMode {}
pub trait MTRBaseClusterDishwasherMode_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterAirQuality(pub id);
impl std::ops::Deref for MTRBaseClusterAirQuality {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterAirQuality {}
impl MTRBaseClusterAirQuality {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAirQuality").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterAirQuality {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterAirQuality {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterAirQuality, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterAirQuality").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterAirQuality(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterAirQuality")
        }
    }
}
impl IMTRCluster for MTRBaseClusterAirQuality {}
impl INSObject for MTRBaseClusterAirQuality {}
impl PNSObject for MTRBaseClusterAirQuality {}
impl IMTRBaseClusterAirQuality for MTRBaseClusterAirQuality {}
pub trait IMTRBaseClusterAirQuality: Sized + std::ops::Deref {
    unsafe fn readAttributeAirQualityWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAirQualityWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAirQualityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAirQualityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeAirQualityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAirQuality").unwrap(), readAttributeAirQualityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAirQuality").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAirQuality").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAirQuality").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAirQuality").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAirQuality").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAirQuality").unwrap(), new)
    }
}
impl MTRBaseClusterAirQuality_Availability for MTRBaseClusterAirQuality {}
pub trait MTRBaseClusterAirQuality_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterSmokeCOAlarm(pub id);
impl std::ops::Deref for MTRBaseClusterSmokeCOAlarm {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterSmokeCOAlarm {}
impl MTRBaseClusterSmokeCOAlarm {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSmokeCOAlarm").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterSmokeCOAlarm {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterSmokeCOAlarm {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterSmokeCOAlarm, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterSmokeCOAlarm").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterSmokeCOAlarm(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterSmokeCOAlarm")
        }
    }
}
impl IMTRCluster for MTRBaseClusterSmokeCOAlarm {}
impl INSObject for MTRBaseClusterSmokeCOAlarm {}
impl PNSObject for MTRBaseClusterSmokeCOAlarm {}
impl IMTRBaseClusterSmokeCOAlarm for MTRBaseClusterSmokeCOAlarm {}
pub trait IMTRBaseClusterSmokeCOAlarm: Sized + std::ops::Deref {
    unsafe fn selfTestRequestWithParams_completion_(
        &self,
        params: MTRSmokeCOAlarmClusterSelfTestRequestParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, selfTestRequestWithParams : params, completion : completion)
    }
    unsafe fn selfTestRequestWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, selfTestRequestWithCompletion : completion)
    }
    unsafe fn readAttributeExpressedStateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeExpressedStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeExpressedStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeExpressedStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSmokeStateWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSmokeStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSmokeStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSmokeStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCOStateWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCOStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCOStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCOStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatteryAlertWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatteryAlertWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBatteryAlertWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatteryAlertWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDeviceMutedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDeviceMutedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDeviceMutedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDeviceMutedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTestInProgressWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTestInProgressWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTestInProgressWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTestInProgressWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeHardwareFaultAlertWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHardwareFaultAlertWithCompletion : completion)
    }
    unsafe fn subscribeAttributeHardwareFaultAlertWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHardwareFaultAlertWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEndOfServiceAlertWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEndOfServiceAlertWithCompletion : completion)
    }
    unsafe fn subscribeAttributeEndOfServiceAlertWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEndOfServiceAlertWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInterconnectSmokeAlarmWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInterconnectSmokeAlarmWithCompletion : completion)
    }
    unsafe fn subscribeAttributeInterconnectSmokeAlarmWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInterconnectSmokeAlarmWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInterconnectCOAlarmWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInterconnectCOAlarmWithCompletion : completion)
    }
    unsafe fn subscribeAttributeInterconnectCOAlarmWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInterconnectCOAlarmWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeContaminationStateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeContaminationStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeContaminationStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeContaminationStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSmokeSensitivityLevelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSmokeSensitivityLevelWithCompletion : completion)
    }
    unsafe fn writeAttributeSmokeSensitivityLevelWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSmokeSensitivityLevelWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeSmokeSensitivityLevelWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSmokeSensitivityLevelWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeSmokeSensitivityLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSmokeSensitivityLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeExpiryDateWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeExpiryDateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeExpiryDateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeExpiryDateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeExpressedStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSmokeCOAlarm").unwrap(), readAttributeExpressedStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSmokeStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSmokeCOAlarm").unwrap(), readAttributeSmokeStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCOStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSmokeCOAlarm").unwrap(), readAttributeCOStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBatteryAlertWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSmokeCOAlarm").unwrap(), readAttributeBatteryAlertWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDeviceMutedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSmokeCOAlarm").unwrap(), readAttributeDeviceMutedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTestInProgressWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSmokeCOAlarm").unwrap(), readAttributeTestInProgressWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeHardwareFaultAlertWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSmokeCOAlarm").unwrap(), readAttributeHardwareFaultAlertWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEndOfServiceAlertWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSmokeCOAlarm").unwrap(), readAttributeEndOfServiceAlertWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInterconnectSmokeAlarmWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSmokeCOAlarm").unwrap(), readAttributeInterconnectSmokeAlarmWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInterconnectCOAlarmWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSmokeCOAlarm").unwrap(), readAttributeInterconnectCOAlarmWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeContaminationStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSmokeCOAlarm").unwrap(), readAttributeContaminationStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSmokeSensitivityLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSmokeCOAlarm").unwrap(), readAttributeSmokeSensitivityLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeExpiryDateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSmokeCOAlarm").unwrap(), readAttributeExpiryDateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSmokeCOAlarm").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSmokeCOAlarm").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSmokeCOAlarm").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSmokeCOAlarm").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSmokeCOAlarm").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSmokeCOAlarm").unwrap(), new)
    }
}
impl MTRBaseClusterSmokeCOAlarm_Availability for MTRBaseClusterSmokeCOAlarm {}
pub trait MTRBaseClusterSmokeCOAlarm_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterDishwasherAlarm(pub id);
impl std::ops::Deref for MTRBaseClusterDishwasherAlarm {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterDishwasherAlarm {}
impl MTRBaseClusterDishwasherAlarm {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherAlarm").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterDishwasherAlarm {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterDishwasherAlarm {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterDishwasherAlarm, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherAlarm").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterDishwasherAlarm(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterDishwasherAlarm")
        }
    }
}
impl IMTRCluster for MTRBaseClusterDishwasherAlarm {}
impl INSObject for MTRBaseClusterDishwasherAlarm {}
impl PNSObject for MTRBaseClusterDishwasherAlarm {}
impl IMTRBaseClusterDishwasherAlarm for MTRBaseClusterDishwasherAlarm {}
pub trait IMTRBaseClusterDishwasherAlarm: Sized + std::ops::Deref {
    unsafe fn resetWithParams_completion_(
        &self,
        params: MTRDishwasherAlarmClusterResetParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetWithParams : params, completion : completion)
    }
    unsafe fn modifyEnabledAlarmsWithParams_completion_(
        &self,
        params: MTRDishwasherAlarmClusterModifyEnabledAlarmsParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, modifyEnabledAlarmsWithParams : params, completion : completion)
    }
    unsafe fn readAttributeMaskWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaskWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaskWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaskWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLatchWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLatchWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLatchWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLatchWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStateWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMaskWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherAlarm").unwrap(), readAttributeMaskWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLatchWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherAlarm").unwrap(), readAttributeLatchWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherAlarm").unwrap(), readAttributeStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSupportedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherAlarm").unwrap(), readAttributeSupportedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherAlarm").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherAlarm").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherAlarm").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherAlarm").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherAlarm").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDishwasherAlarm").unwrap(), new)
    }
}
impl MTRBaseClusterDishwasherAlarm_Availability for MTRBaseClusterDishwasherAlarm {}
pub trait MTRBaseClusterDishwasherAlarm_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterMicrowaveOvenMode(pub id);
impl std::ops::Deref for MTRBaseClusterMicrowaveOvenMode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterMicrowaveOvenMode {}
impl MTRBaseClusterMicrowaveOvenMode {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenMode").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterMicrowaveOvenMode {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterMicrowaveOvenMode {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterMicrowaveOvenMode, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenMode").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterMicrowaveOvenMode(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterMicrowaveOvenMode" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterMicrowaveOvenMode {}
impl INSObject for MTRBaseClusterMicrowaveOvenMode {}
impl PNSObject for MTRBaseClusterMicrowaveOvenMode {}
impl IMTRBaseClusterMicrowaveOvenMode for MTRBaseClusterMicrowaveOvenMode {}
pub trait IMTRBaseClusterMicrowaveOvenMode: Sized + std::ops::Deref {
    unsafe fn readAttributeSupportedModesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedModesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedModesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSupportedModesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenMode").unwrap(), readAttributeSupportedModesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenMode").unwrap(), readAttributeCurrentModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenMode").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenMode").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenMode").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenMode").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenMode").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenMode").unwrap(), new)
    }
}
impl MTRBaseClusterMicrowaveOvenMode_Availability for MTRBaseClusterMicrowaveOvenMode {}
pub trait MTRBaseClusterMicrowaveOvenMode_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterMicrowaveOvenControl(pub id);
impl std::ops::Deref for MTRBaseClusterMicrowaveOvenControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterMicrowaveOvenControl {}
impl MTRBaseClusterMicrowaveOvenControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenControl").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterMicrowaveOvenControl {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterMicrowaveOvenControl {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterMicrowaveOvenControl, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenControl").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterMicrowaveOvenControl(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterMicrowaveOvenControl" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterMicrowaveOvenControl {}
impl INSObject for MTRBaseClusterMicrowaveOvenControl {}
impl PNSObject for MTRBaseClusterMicrowaveOvenControl {}
impl IMTRBaseClusterMicrowaveOvenControl for MTRBaseClusterMicrowaveOvenControl {}
pub trait IMTRBaseClusterMicrowaveOvenControl: Sized + std::ops::Deref {
    unsafe fn setCookingParametersWithParams_completion_(
        &self,
        params: MTRMicrowaveOvenControlClusterSetCookingParametersParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCookingParametersWithParams : params, completion : completion)
    }
    unsafe fn setCookingParametersWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCookingParametersWithCompletion : completion)
    }
    unsafe fn addMoreTimeWithParams_completion_(
        &self,
        params: MTRMicrowaveOvenControlClusterAddMoreTimeParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addMoreTimeWithParams : params, completion : completion)
    }
    unsafe fn readAttributeCookTimeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCookTimeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCookTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCookTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxCookTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxCookTimeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxCookTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxCookTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePowerSettingWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerSettingWithCompletion : completion)
    }
    unsafe fn subscribeAttributePowerSettingWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePowerSettingWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinPowerWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinPowerWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinPowerWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinPowerWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxPowerWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxPowerWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxPowerWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxPowerWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePowerStepWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerStepWithCompletion : completion)
    }
    unsafe fn subscribeAttributePowerStepWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePowerStepWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedWattsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedWattsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedWattsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedWattsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSelectedWattIndexWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSelectedWattIndexWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSelectedWattIndexWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSelectedWattIndexWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWattRatingWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWattRatingWithCompletion : completion)
    }
    unsafe fn subscribeAttributeWattRatingWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWattRatingWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeCookTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenControl").unwrap(), readAttributeCookTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxCookTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenControl").unwrap(), readAttributeMaxCookTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePowerSettingWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenControl").unwrap(), readAttributePowerSettingWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinPowerWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenControl").unwrap(), readAttributeMinPowerWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxPowerWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenControl").unwrap(), readAttributeMaxPowerWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePowerStepWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenControl").unwrap(), readAttributePowerStepWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSupportedWattsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenControl").unwrap(), readAttributeSupportedWattsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSelectedWattIndexWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenControl").unwrap(), readAttributeSelectedWattIndexWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeWattRatingWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenControl").unwrap(), readAttributeWattRatingWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenControl").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenControl").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenControl").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenControl").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenControl").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMicrowaveOvenControl").unwrap(), new)
    }
}
impl MTRBaseClusterMicrowaveOvenControl_Availability for MTRBaseClusterMicrowaveOvenControl {}
pub trait MTRBaseClusterMicrowaveOvenControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterOperationalState(pub id);
impl std::ops::Deref for MTRBaseClusterOperationalState {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterOperationalState {}
impl MTRBaseClusterOperationalState {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalState").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterOperationalState {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterOperationalState {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterOperationalState, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalState").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterOperationalState(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterOperationalState")
        }
    }
}
impl IMTRCluster for MTRBaseClusterOperationalState {}
impl INSObject for MTRBaseClusterOperationalState {}
impl PNSObject for MTRBaseClusterOperationalState {}
impl IMTRBaseClusterOperationalState for MTRBaseClusterOperationalState {}
pub trait IMTRBaseClusterOperationalState: Sized + std::ops::Deref {
    unsafe fn pauseWithParams_completion_(
        &self,
        params: MTROperationalStateClusterPauseParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseWithParams : params, completion : completion)
    }
    unsafe fn pauseWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseWithCompletion : completion)
    }
    unsafe fn stopWithParams_completion_(
        &self,
        params: MTROperationalStateClusterStopParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithParams : params, completion : completion)
    }
    unsafe fn stopWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithCompletion : completion)
    }
    unsafe fn startWithParams_completion_(
        &self,
        params: MTROperationalStateClusterStartParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startWithParams : params, completion : completion)
    }
    unsafe fn startWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startWithCompletion : completion)
    }
    unsafe fn resumeWithParams_completion_(
        &self,
        params: MTROperationalStateClusterResumeParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resumeWithParams : params, completion : completion)
    }
    unsafe fn resumeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resumeWithCompletion : completion)
    }
    unsafe fn readAttributePhaseListWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhaseListWithCompletion : completion)
    }
    unsafe fn subscribeAttributePhaseListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePhaseListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentPhaseWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPhaseWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentPhaseWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentPhaseWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCountdownTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCountdownTimeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCountdownTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCountdownTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOperationalStateListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalStateListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOperationalStateListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOperationalStateListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOperationalStateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOperationalStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOperationalStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOperationalErrorWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalErrorWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOperationalErrorWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOperationalErrorWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributePhaseListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalState").unwrap(), readAttributePhaseListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentPhaseWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalState").unwrap(), readAttributeCurrentPhaseWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCountdownTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalState").unwrap(), readAttributeCountdownTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOperationalStateListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalState").unwrap(), readAttributeOperationalStateListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOperationalStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalState").unwrap(), readAttributeOperationalStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOperationalErrorWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalState").unwrap(), readAttributeOperationalErrorWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalState").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalState").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalState").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalState").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalState").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalState").unwrap(), new)
    }
}
impl MTRBaseClusterOperationalState_Availability for MTRBaseClusterOperationalState {}
pub trait MTRBaseClusterOperationalState_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterRVCOperationalState(pub id);
impl std::ops::Deref for MTRBaseClusterRVCOperationalState {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterRVCOperationalState {}
impl MTRBaseClusterRVCOperationalState {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCOperationalState").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterRVCOperationalState {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterRVCOperationalState {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterRVCOperationalState, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCOperationalState").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterRVCOperationalState(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterRVCOperationalState" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterRVCOperationalState {}
impl INSObject for MTRBaseClusterRVCOperationalState {}
impl PNSObject for MTRBaseClusterRVCOperationalState {}
impl IMTRBaseClusterRVCOperationalState for MTRBaseClusterRVCOperationalState {}
pub trait IMTRBaseClusterRVCOperationalState: Sized + std::ops::Deref {
    unsafe fn pauseWithParams_completion_(
        &self,
        params: MTRRVCOperationalStateClusterPauseParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseWithParams : params, completion : completion)
    }
    unsafe fn pauseWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseWithCompletion : completion)
    }
    unsafe fn resumeWithParams_completion_(
        &self,
        params: MTRRVCOperationalStateClusterResumeParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resumeWithParams : params, completion : completion)
    }
    unsafe fn resumeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resumeWithCompletion : completion)
    }
    unsafe fn goHomeWithParams_completion_(
        &self,
        params: MTRRVCOperationalStateClusterGoHomeParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, goHomeWithParams : params, completion : completion)
    }
    unsafe fn goHomeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, goHomeWithCompletion : completion)
    }
    unsafe fn readAttributePhaseListWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhaseListWithCompletion : completion)
    }
    unsafe fn subscribeAttributePhaseListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePhaseListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentPhaseWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPhaseWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentPhaseWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentPhaseWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCountdownTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCountdownTimeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCountdownTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCountdownTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOperationalStateListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalStateListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOperationalStateListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOperationalStateListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOperationalStateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOperationalStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOperationalStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOperationalErrorWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalErrorWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOperationalErrorWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOperationalErrorWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributePhaseListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCOperationalState").unwrap(), readAttributePhaseListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentPhaseWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCOperationalState").unwrap(), readAttributeCurrentPhaseWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCountdownTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCOperationalState").unwrap(), readAttributeCountdownTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOperationalStateListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCOperationalState").unwrap(), readAttributeOperationalStateListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOperationalStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCOperationalState").unwrap(), readAttributeOperationalStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOperationalErrorWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCOperationalState").unwrap(), readAttributeOperationalErrorWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCOperationalState").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCOperationalState").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCOperationalState").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCOperationalState").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCOperationalState").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRVCOperationalState").unwrap(), new)
    }
}
impl MTRBaseClusterRVCOperationalState_Availability for MTRBaseClusterRVCOperationalState {}
pub trait MTRBaseClusterRVCOperationalState_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterScenesManagement(pub id);
impl std::ops::Deref for MTRBaseClusterScenesManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterScenesManagement {}
impl MTRBaseClusterScenesManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterScenesManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterScenesManagement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterScenesManagement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterScenesManagement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterScenesManagement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterScenesManagement(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterScenesManagement")
        }
    }
}
impl IMTRCluster for MTRBaseClusterScenesManagement {}
impl INSObject for MTRBaseClusterScenesManagement {}
impl PNSObject for MTRBaseClusterScenesManagement {}
impl IMTRBaseClusterScenesManagement for MTRBaseClusterScenesManagement {}
pub trait IMTRBaseClusterScenesManagement: Sized + std::ops::Deref {
    unsafe fn addSceneWithParams_completion_(
        &self,
        params: MTRScenesManagementClusterAddSceneParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addSceneWithParams : params, completion : completion)
    }
    unsafe fn viewSceneWithParams_completion_(
        &self,
        params: MTRScenesManagementClusterViewSceneParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, viewSceneWithParams : params, completion : completion)
    }
    unsafe fn removeSceneWithParams_completion_(
        &self,
        params: MTRScenesManagementClusterRemoveSceneParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeSceneWithParams : params, completion : completion)
    }
    unsafe fn removeAllScenesWithParams_completion_(
        &self,
        params: MTRScenesManagementClusterRemoveAllScenesParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeAllScenesWithParams : params, completion : completion)
    }
    unsafe fn storeSceneWithParams_completion_(
        &self,
        params: MTRScenesManagementClusterStoreSceneParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, storeSceneWithParams : params, completion : completion)
    }
    unsafe fn recallSceneWithParams_completion_(
        &self,
        params: MTRScenesManagementClusterRecallSceneParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, recallSceneWithParams : params, completion : completion)
    }
    unsafe fn getSceneMembershipWithParams_completion_(
        &self,
        params: MTRScenesManagementClusterGetSceneMembershipParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getSceneMembershipWithParams : params, completion : completion)
    }
    unsafe fn copySceneWithParams_completion_(
        &self,
        params: MTRScenesManagementClusterCopySceneParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, copySceneWithParams : params, completion : completion)
    }
    unsafe fn readAttributeSceneTableSizeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSceneTableSizeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSceneTableSizeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSceneTableSizeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFabricSceneInfoWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFabricSceneInfoWithParams : params, completion : completion)
    }
    unsafe fn subscribeAttributeFabricSceneInfoWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFabricSceneInfoWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSceneTableSizeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterScenesManagement").unwrap(), readAttributeSceneTableSizeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFabricSceneInfoWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterScenesManagement").unwrap(), readAttributeFabricSceneInfoWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterScenesManagement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterScenesManagement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterScenesManagement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterScenesManagement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterScenesManagement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterScenesManagement").unwrap(), new)
    }
}
impl MTRBaseClusterScenesManagement_Availability for MTRBaseClusterScenesManagement {}
pub trait MTRBaseClusterScenesManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterGroupcast(pub id);
impl std::ops::Deref for MTRBaseClusterGroupcast {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterGroupcast {}
impl MTRBaseClusterGroupcast {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupcast").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterGroupcast {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterGroupcast {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterGroupcast, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupcast").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterGroupcast(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterGroupcast")
        }
    }
}
impl IMTRCluster for MTRBaseClusterGroupcast {}
impl INSObject for MTRBaseClusterGroupcast {}
impl PNSObject for MTRBaseClusterGroupcast {}
impl IMTRBaseClusterGroupcast for MTRBaseClusterGroupcast {}
pub trait IMTRBaseClusterGroupcast: Sized + std::ops::Deref {
    unsafe fn joinGroupWithParams_completion_(
        &self,
        params: MTRGroupcastClusterJoinGroupParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, joinGroupWithParams : params, completion : completion)
    }
    unsafe fn leaveGroupWithParams_completion_(
        &self,
        params: MTRGroupcastClusterLeaveGroupParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, leaveGroupWithParams : params, completion : completion)
    }
    unsafe fn updateGroupKeyWithParams_completion_(
        &self,
        params: MTRGroupcastClusterUpdateGroupKeyParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateGroupKeyWithParams : params, completion : completion)
    }
    unsafe fn expireGracePeriodWithParams_completion_(
        &self,
        params: MTRGroupcastClusterExpireGracePeriodParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, expireGracePeriodWithParams : params, completion : completion)
    }
    unsafe fn configureAuxiliaryACLWithParams_completion_(
        &self,
        params: MTRGroupcastClusterConfigureAuxiliaryACLParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, configureAuxiliaryACLWithParams : params, completion : completion)
    }
    unsafe fn readAttributeMembershipWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMembershipWithParams : params, completion : completion)
    }
    unsafe fn subscribeAttributeMembershipWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMembershipWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxMembershipCountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMembershipCountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxMembershipCountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxMembershipCountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMembershipWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupcast").unwrap(), readAttributeMembershipWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxMembershipCountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupcast").unwrap(), readAttributeMaxMembershipCountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupcast").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupcast").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupcast").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupcast").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupcast").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupcast").unwrap(), new)
    }
}
impl MTRBaseClusterGroupcast_Availability for MTRBaseClusterGroupcast {}
pub trait MTRBaseClusterGroupcast_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterHEPAFilterMonitoring(pub id);
impl std::ops::Deref for MTRBaseClusterHEPAFilterMonitoring {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterHEPAFilterMonitoring {}
impl MTRBaseClusterHEPAFilterMonitoring {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterHEPAFilterMonitoring").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterHEPAFilterMonitoring {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterHEPAFilterMonitoring {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterHEPAFilterMonitoring, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterHEPAFilterMonitoring").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterHEPAFilterMonitoring(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterHEPAFilterMonitoring" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterHEPAFilterMonitoring {}
impl INSObject for MTRBaseClusterHEPAFilterMonitoring {}
impl PNSObject for MTRBaseClusterHEPAFilterMonitoring {}
impl IMTRBaseClusterHEPAFilterMonitoring for MTRBaseClusterHEPAFilterMonitoring {}
pub trait IMTRBaseClusterHEPAFilterMonitoring: Sized + std::ops::Deref {
    unsafe fn resetConditionWithParams_completion_(
        &self,
        params: MTRHEPAFilterMonitoringClusterResetConditionParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetConditionWithParams : params, completion : completion)
    }
    unsafe fn resetConditionWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetConditionWithCompletion : completion)
    }
    unsafe fn readAttributeConditionWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeConditionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeConditionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeConditionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDegradationDirectionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDegradationDirectionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDegradationDirectionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDegradationDirectionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeChangeIndicationWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeChangeIndicationWithCompletion : completion)
    }
    unsafe fn subscribeAttributeChangeIndicationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeChangeIndicationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInPlaceIndicatorWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInPlaceIndicatorWithCompletion : completion)
    }
    unsafe fn subscribeAttributeInPlaceIndicatorWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInPlaceIndicatorWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLastChangedTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLastChangedTimeWithCompletion : completion)
    }
    unsafe fn writeAttributeLastChangedTimeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLastChangedTimeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLastChangedTimeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLastChangedTimeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLastChangedTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLastChangedTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeReplacementProductListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReplacementProductListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeReplacementProductListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeReplacementProductListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeConditionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterHEPAFilterMonitoring").unwrap(), readAttributeConditionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDegradationDirectionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterHEPAFilterMonitoring").unwrap(), readAttributeDegradationDirectionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeChangeIndicationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterHEPAFilterMonitoring").unwrap(), readAttributeChangeIndicationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInPlaceIndicatorWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterHEPAFilterMonitoring").unwrap(), readAttributeInPlaceIndicatorWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLastChangedTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterHEPAFilterMonitoring").unwrap(), readAttributeLastChangedTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeReplacementProductListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterHEPAFilterMonitoring").unwrap(), readAttributeReplacementProductListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterHEPAFilterMonitoring").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterHEPAFilterMonitoring").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterHEPAFilterMonitoring").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterHEPAFilterMonitoring").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterHEPAFilterMonitoring").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterHEPAFilterMonitoring").unwrap(), new)
    }
}
impl MTRBaseClusterHEPAFilterMonitoring_Availability for MTRBaseClusterHEPAFilterMonitoring {}
pub trait MTRBaseClusterHEPAFilterMonitoring_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterActivatedCarbonFilterMonitoring(pub id);
impl std::ops::Deref for MTRBaseClusterActivatedCarbonFilterMonitoring {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterActivatedCarbonFilterMonitoring {}
impl MTRBaseClusterActivatedCarbonFilterMonitoring {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActivatedCarbonFilterMonitoring").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterActivatedCarbonFilterMonitoring {}
impl std::convert::TryFrom<MTRGenericBaseCluster>
    for MTRBaseClusterActivatedCarbonFilterMonitoring
{
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterActivatedCarbonFilterMonitoring, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterActivatedCarbonFilterMonitoring").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterActivatedCarbonFilterMonitoring(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterActivatedCarbonFilterMonitoring" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterActivatedCarbonFilterMonitoring {}
impl INSObject for MTRBaseClusterActivatedCarbonFilterMonitoring {}
impl PNSObject for MTRBaseClusterActivatedCarbonFilterMonitoring {}
impl IMTRBaseClusterActivatedCarbonFilterMonitoring
    for MTRBaseClusterActivatedCarbonFilterMonitoring
{
}
pub trait IMTRBaseClusterActivatedCarbonFilterMonitoring: Sized + std::ops::Deref {
    unsafe fn resetConditionWithParams_completion_(
        &self,
        params: MTRActivatedCarbonFilterMonitoringClusterResetConditionParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetConditionWithParams : params, completion : completion)
    }
    unsafe fn resetConditionWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetConditionWithCompletion : completion)
    }
    unsafe fn readAttributeConditionWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeConditionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeConditionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeConditionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDegradationDirectionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDegradationDirectionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDegradationDirectionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDegradationDirectionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeChangeIndicationWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeChangeIndicationWithCompletion : completion)
    }
    unsafe fn subscribeAttributeChangeIndicationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeChangeIndicationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInPlaceIndicatorWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInPlaceIndicatorWithCompletion : completion)
    }
    unsafe fn subscribeAttributeInPlaceIndicatorWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInPlaceIndicatorWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLastChangedTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLastChangedTimeWithCompletion : completion)
    }
    unsafe fn writeAttributeLastChangedTimeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLastChangedTimeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLastChangedTimeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLastChangedTimeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLastChangedTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLastChangedTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeReplacementProductListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReplacementProductListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeReplacementProductListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeReplacementProductListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeConditionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActivatedCarbonFilterMonitoring").unwrap(), readAttributeConditionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDegradationDirectionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActivatedCarbonFilterMonitoring").unwrap(), readAttributeDegradationDirectionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeChangeIndicationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActivatedCarbonFilterMonitoring").unwrap(), readAttributeChangeIndicationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInPlaceIndicatorWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActivatedCarbonFilterMonitoring").unwrap(), readAttributeInPlaceIndicatorWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLastChangedTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActivatedCarbonFilterMonitoring").unwrap(), readAttributeLastChangedTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeReplacementProductListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActivatedCarbonFilterMonitoring").unwrap(), readAttributeReplacementProductListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActivatedCarbonFilterMonitoring").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActivatedCarbonFilterMonitoring").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActivatedCarbonFilterMonitoring").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActivatedCarbonFilterMonitoring").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActivatedCarbonFilterMonitoring").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActivatedCarbonFilterMonitoring").unwrap(), new)
    }
}
impl MTRBaseClusterActivatedCarbonFilterMonitoring_Availability
    for MTRBaseClusterActivatedCarbonFilterMonitoring
{
}
pub trait MTRBaseClusterActivatedCarbonFilterMonitoring_Availability:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterBooleanStateConfiguration(pub id);
impl std::ops::Deref for MTRBaseClusterBooleanStateConfiguration {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterBooleanStateConfiguration {}
impl MTRBaseClusterBooleanStateConfiguration {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanStateConfiguration").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterBooleanStateConfiguration {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterBooleanStateConfiguration {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterBooleanStateConfiguration, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanStateConfiguration").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterBooleanStateConfiguration(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterBooleanStateConfiguration" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterBooleanStateConfiguration {}
impl INSObject for MTRBaseClusterBooleanStateConfiguration {}
impl PNSObject for MTRBaseClusterBooleanStateConfiguration {}
impl IMTRBaseClusterBooleanStateConfiguration for MTRBaseClusterBooleanStateConfiguration {}
pub trait IMTRBaseClusterBooleanStateConfiguration: Sized + std::ops::Deref {
    unsafe fn suppressAlarmWithParams_completion_(
        &self,
        params: MTRBooleanStateConfigurationClusterSuppressAlarmParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, suppressAlarmWithParams : params, completion : completion)
    }
    unsafe fn enableDisableAlarmWithParams_completion_(
        &self,
        params: MTRBooleanStateConfigurationClusterEnableDisableAlarmParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enableDisableAlarmWithParams : params, completion : completion)
    }
    unsafe fn readAttributeCurrentSensitivityLevelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentSensitivityLevelWithCompletion : completion)
    }
    unsafe fn writeAttributeCurrentSensitivityLevelWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCurrentSensitivityLevelWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeCurrentSensitivityLevelWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCurrentSensitivityLevelWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeCurrentSensitivityLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentSensitivityLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedSensitivityLevelsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedSensitivityLevelsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedSensitivityLevelsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedSensitivityLevelsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDefaultSensitivityLevelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultSensitivityLevelWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDefaultSensitivityLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDefaultSensitivityLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAlarmsActiveWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAlarmsActiveWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAlarmsActiveWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAlarmsActiveWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAlarmsSuppressedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAlarmsSuppressedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAlarmsSuppressedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAlarmsSuppressedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAlarmsEnabledWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAlarmsEnabledWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAlarmsEnabledWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAlarmsEnabledWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAlarmsSupportedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAlarmsSupportedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAlarmsSupportedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAlarmsSupportedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSensorFaultWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSensorFaultWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSensorFaultWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSensorFaultWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeCurrentSensitivityLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanStateConfiguration").unwrap(), readAttributeCurrentSensitivityLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSupportedSensitivityLevelsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanStateConfiguration").unwrap(), readAttributeSupportedSensitivityLevelsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDefaultSensitivityLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanStateConfiguration").unwrap(), readAttributeDefaultSensitivityLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAlarmsActiveWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanStateConfiguration").unwrap(), readAttributeAlarmsActiveWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAlarmsSuppressedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanStateConfiguration").unwrap(), readAttributeAlarmsSuppressedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAlarmsEnabledWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanStateConfiguration").unwrap(), readAttributeAlarmsEnabledWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAlarmsSupportedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanStateConfiguration").unwrap(), readAttributeAlarmsSupportedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSensorFaultWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanStateConfiguration").unwrap(), readAttributeSensorFaultWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanStateConfiguration").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanStateConfiguration").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanStateConfiguration").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanStateConfiguration").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanStateConfiguration").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanStateConfiguration").unwrap(), new)
    }
}
impl MTRBaseClusterBooleanStateConfiguration_Availability
    for MTRBaseClusterBooleanStateConfiguration
{
}
pub trait MTRBaseClusterBooleanStateConfiguration_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterValveConfigurationAndControl(pub id);
impl std::ops::Deref for MTRBaseClusterValveConfigurationAndControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterValveConfigurationAndControl {}
impl MTRBaseClusterValveConfigurationAndControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterValveConfigurationAndControl").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterValveConfigurationAndControl {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterValveConfigurationAndControl {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterValveConfigurationAndControl, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterValveConfigurationAndControl").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterValveConfigurationAndControl(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterValveConfigurationAndControl" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterValveConfigurationAndControl {}
impl INSObject for MTRBaseClusterValveConfigurationAndControl {}
impl PNSObject for MTRBaseClusterValveConfigurationAndControl {}
impl IMTRBaseClusterValveConfigurationAndControl for MTRBaseClusterValveConfigurationAndControl {}
pub trait IMTRBaseClusterValveConfigurationAndControl: Sized + std::ops::Deref {
    unsafe fn openWithParams_completion_(
        &self,
        params: MTRValveConfigurationAndControlClusterOpenParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, openWithParams : params, completion : completion)
    }
    unsafe fn openWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, openWithCompletion : completion)
    }
    unsafe fn closeWithParams_completion_(
        &self,
        params: MTRValveConfigurationAndControlClusterCloseParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, closeWithParams : params, completion : completion)
    }
    unsafe fn closeWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, closeWithCompletion : completion)
    }
    unsafe fn readAttributeOpenDurationWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOpenDurationWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOpenDurationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOpenDurationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDefaultOpenDurationWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultOpenDurationWithCompletion : completion)
    }
    unsafe fn writeAttributeDefaultOpenDurationWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultOpenDurationWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeDefaultOpenDurationWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultOpenDurationWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeDefaultOpenDurationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDefaultOpenDurationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAutoCloseTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAutoCloseTimeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAutoCloseTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAutoCloseTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRemainingDurationWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRemainingDurationWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRemainingDurationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRemainingDurationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentStateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTargetStateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTargetStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTargetStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTargetStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentLevelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentLevelWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTargetLevelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTargetLevelWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTargetLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTargetLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDefaultOpenLevelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultOpenLevelWithCompletion : completion)
    }
    unsafe fn writeAttributeDefaultOpenLevelWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultOpenLevelWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeDefaultOpenLevelWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultOpenLevelWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeDefaultOpenLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDefaultOpenLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeValveFaultWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeValveFaultWithCompletion : completion)
    }
    unsafe fn subscribeAttributeValveFaultWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeValveFaultWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLevelStepWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelStepWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLevelStepWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLevelStepWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeOpenDurationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterValveConfigurationAndControl").unwrap(), readAttributeOpenDurationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDefaultOpenDurationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterValveConfigurationAndControl").unwrap(), readAttributeDefaultOpenDurationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAutoCloseTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterValveConfigurationAndControl").unwrap(), readAttributeAutoCloseTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRemainingDurationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterValveConfigurationAndControl").unwrap(), readAttributeRemainingDurationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterValveConfigurationAndControl").unwrap(), readAttributeCurrentStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTargetStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterValveConfigurationAndControl").unwrap(), readAttributeTargetStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterValveConfigurationAndControl").unwrap(), readAttributeCurrentLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTargetLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterValveConfigurationAndControl").unwrap(), readAttributeTargetLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDefaultOpenLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterValveConfigurationAndControl").unwrap(), readAttributeDefaultOpenLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeValveFaultWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterValveConfigurationAndControl").unwrap(), readAttributeValveFaultWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLevelStepWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterValveConfigurationAndControl").unwrap(), readAttributeLevelStepWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterValveConfigurationAndControl").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterValveConfigurationAndControl").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterValveConfigurationAndControl").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterValveConfigurationAndControl").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterValveConfigurationAndControl").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterValveConfigurationAndControl").unwrap(), new)
    }
}
impl MTRBaseClusterValveConfigurationAndControl_Availability
    for MTRBaseClusterValveConfigurationAndControl
{
}
pub trait MTRBaseClusterValveConfigurationAndControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterElectricalPowerMeasurement(pub id);
impl std::ops::Deref for MTRBaseClusterElectricalPowerMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterElectricalPowerMeasurement {}
impl MTRBaseClusterElectricalPowerMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterElectricalPowerMeasurement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterElectricalPowerMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterElectricalPowerMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterElectricalPowerMeasurement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterElectricalPowerMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterElectricalPowerMeasurement {}
impl INSObject for MTRBaseClusterElectricalPowerMeasurement {}
impl PNSObject for MTRBaseClusterElectricalPowerMeasurement {}
impl IMTRBaseClusterElectricalPowerMeasurement for MTRBaseClusterElectricalPowerMeasurement {}
pub trait IMTRBaseClusterElectricalPowerMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributePowerModeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerModeWithCompletion : completion)
    }
    unsafe fn subscribeAttributePowerModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePowerModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfMeasurementTypesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfMeasurementTypesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNumberOfMeasurementTypesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfMeasurementTypesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAccuracyWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAccuracyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAccuracyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAccuracyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRangesWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRangesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRangesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRangesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeVoltageWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVoltageWithCompletion : completion)
    }
    unsafe fn subscribeAttributeVoltageWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeVoltageWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActiveCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeReactiveCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReactiveCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeReactiveCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeReactiveCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeApparentCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApparentCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeApparentCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeApparentCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActivePowerWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActivePowerWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActivePowerWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeReactivePowerWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReactivePowerWithCompletion : completion)
    }
    unsafe fn subscribeAttributeReactivePowerWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeReactivePowerWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeApparentPowerWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApparentPowerWithCompletion : completion)
    }
    unsafe fn subscribeAttributeApparentPowerWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeApparentPowerWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRMSVoltageWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRMSVoltageWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRMSVoltageWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRMSVoltageWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRMSCurrentWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRMSCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRMSCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRMSCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRMSPowerWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRMSPowerWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRMSPowerWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRMSPowerWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFrequencyWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFrequencyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFrequencyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFrequencyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeHarmonicCurrentsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHarmonicCurrentsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeHarmonicCurrentsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHarmonicCurrentsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeHarmonicPhasesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHarmonicPhasesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeHarmonicPhasesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHarmonicPhasesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePowerFactorWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerFactorWithCompletion : completion)
    }
    unsafe fn subscribeAttributePowerFactorWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePowerFactorWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNeutralCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNeutralCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNeutralCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNeutralCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributePowerModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributePowerModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNumberOfMeasurementTypesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeNumberOfMeasurementTypesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAccuracyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeAccuracyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRangesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeRangesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeVoltageWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeVoltageWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActiveCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeActiveCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeReactiveCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeReactiveCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeApparentCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeApparentCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActivePowerWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeActivePowerWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeReactivePowerWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeReactivePowerWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeApparentPowerWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeApparentPowerWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRMSVoltageWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeRMSVoltageWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRMSCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeRMSCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRMSPowerWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeRMSPowerWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFrequencyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeFrequencyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeHarmonicCurrentsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeHarmonicCurrentsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeHarmonicPhasesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeHarmonicPhasesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePowerFactorWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributePowerFactorWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNeutralCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeNeutralCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalPowerMeasurement").unwrap(), new)
    }
}
impl MTRBaseClusterElectricalPowerMeasurement_Availability
    for MTRBaseClusterElectricalPowerMeasurement
{
}
pub trait MTRBaseClusterElectricalPowerMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterElectricalEnergyMeasurement(pub id);
impl std::ops::Deref for MTRBaseClusterElectricalEnergyMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterElectricalEnergyMeasurement {}
impl MTRBaseClusterElectricalEnergyMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalEnergyMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterElectricalEnergyMeasurement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterElectricalEnergyMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterElectricalEnergyMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalEnergyMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterElectricalEnergyMeasurement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterElectricalEnergyMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterElectricalEnergyMeasurement {}
impl INSObject for MTRBaseClusterElectricalEnergyMeasurement {}
impl PNSObject for MTRBaseClusterElectricalEnergyMeasurement {}
impl IMTRBaseClusterElectricalEnergyMeasurement for MTRBaseClusterElectricalEnergyMeasurement {}
pub trait IMTRBaseClusterElectricalEnergyMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeAccuracyWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAccuracyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAccuracyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAccuracyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCumulativeEnergyImportedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCumulativeEnergyImportedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCumulativeEnergyImportedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCumulativeEnergyImportedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCumulativeEnergyExportedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCumulativeEnergyExportedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCumulativeEnergyExportedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCumulativeEnergyExportedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeriodicEnergyImportedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeriodicEnergyImportedWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeriodicEnergyImportedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeriodicEnergyImportedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeriodicEnergyExportedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeriodicEnergyExportedWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeriodicEnergyExportedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeriodicEnergyExportedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCumulativeEnergyResetWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCumulativeEnergyResetWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCumulativeEnergyResetWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCumulativeEnergyResetWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeAccuracyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalEnergyMeasurement").unwrap(), readAttributeAccuracyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCumulativeEnergyImportedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalEnergyMeasurement").unwrap(), readAttributeCumulativeEnergyImportedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCumulativeEnergyExportedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalEnergyMeasurement").unwrap(), readAttributeCumulativeEnergyExportedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeriodicEnergyImportedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalEnergyMeasurement").unwrap(), readAttributePeriodicEnergyImportedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeriodicEnergyExportedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalEnergyMeasurement").unwrap(), readAttributePeriodicEnergyExportedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCumulativeEnergyResetWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalEnergyMeasurement").unwrap(), readAttributeCumulativeEnergyResetWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalEnergyMeasurement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalEnergyMeasurement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalEnergyMeasurement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalEnergyMeasurement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalEnergyMeasurement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalEnergyMeasurement").unwrap(), new)
    }
}
impl MTRBaseClusterElectricalEnergyMeasurement_Availability
    for MTRBaseClusterElectricalEnergyMeasurement
{
}
pub trait MTRBaseClusterElectricalEnergyMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterWaterHeaterManagement(pub id);
impl std::ops::Deref for MTRBaseClusterWaterHeaterManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterWaterHeaterManagement {}
impl MTRBaseClusterWaterHeaterManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterWaterHeaterManagement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterWaterHeaterManagement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterWaterHeaterManagement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterManagement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterWaterHeaterManagement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterWaterHeaterManagement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterWaterHeaterManagement {}
impl INSObject for MTRBaseClusterWaterHeaterManagement {}
impl PNSObject for MTRBaseClusterWaterHeaterManagement {}
impl IMTRBaseClusterWaterHeaterManagement for MTRBaseClusterWaterHeaterManagement {}
pub trait IMTRBaseClusterWaterHeaterManagement: Sized + std::ops::Deref {
    unsafe fn boostWithParams_completion_(
        &self,
        params: MTRWaterHeaterManagementClusterBoostParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, boostWithParams : params, completion : completion)
    }
    unsafe fn cancelBoostWithParams_completion_(
        &self,
        params: MTRWaterHeaterManagementClusterCancelBoostParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelBoostWithParams : params, completion : completion)
    }
    unsafe fn cancelBoostWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelBoostWithCompletion : completion)
    }
    unsafe fn readAttributeHeaterTypesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHeaterTypesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeHeaterTypesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHeaterTypesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeHeatDemandWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHeatDemandWithCompletion : completion)
    }
    unsafe fn subscribeAttributeHeatDemandWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHeatDemandWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTankVolumeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTankVolumeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTankVolumeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTankVolumeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEstimatedHeatRequiredWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEstimatedHeatRequiredWithCompletion : completion)
    }
    unsafe fn subscribeAttributeEstimatedHeatRequiredWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEstimatedHeatRequiredWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTankPercentageWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTankPercentageWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTankPercentageWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTankPercentageWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBoostStateWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBoostStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBoostStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBoostStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeHeaterTypesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterManagement").unwrap(), readAttributeHeaterTypesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeHeatDemandWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterManagement").unwrap(), readAttributeHeatDemandWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTankVolumeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterManagement").unwrap(), readAttributeTankVolumeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEstimatedHeatRequiredWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterManagement").unwrap(), readAttributeEstimatedHeatRequiredWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTankPercentageWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterManagement").unwrap(), readAttributeTankPercentageWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBoostStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterManagement").unwrap(), readAttributeBoostStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterManagement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterManagement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterManagement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterManagement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterManagement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterManagement").unwrap(), new)
    }
}
impl MTRBaseClusterWaterHeaterManagement_Availability for MTRBaseClusterWaterHeaterManagement {}
pub trait MTRBaseClusterWaterHeaterManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterCommodityPrice(pub id);
impl std::ops::Deref for MTRBaseClusterCommodityPrice {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterCommodityPrice {}
impl MTRBaseClusterCommodityPrice {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityPrice").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterCommodityPrice {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterCommodityPrice {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterCommodityPrice, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityPrice").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterCommodityPrice(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterCommodityPrice")
        }
    }
}
impl IMTRCluster for MTRBaseClusterCommodityPrice {}
impl INSObject for MTRBaseClusterCommodityPrice {}
impl PNSObject for MTRBaseClusterCommodityPrice {}
impl IMTRBaseClusterCommodityPrice for MTRBaseClusterCommodityPrice {}
pub trait IMTRBaseClusterCommodityPrice: Sized + std::ops::Deref {
    unsafe fn getDetailedPriceRequestWithParams_completion_(
        &self,
        params: MTRCommodityPriceClusterGetDetailedPriceRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getDetailedPriceRequestWithParams : params, completion : completion)
    }
    unsafe fn getDetailedForecastRequestWithParams_completion_(
        &self,
        params: MTRCommodityPriceClusterGetDetailedForecastRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getDetailedForecastRequestWithParams : params, completion : completion)
    }
    unsafe fn readAttributeTariffUnitWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTariffUnitWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTariffUnitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTariffUnitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrencyWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrencyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrencyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrencyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentPriceWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPriceWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentPriceWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentPriceWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePriceForecastWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePriceForecastWithCompletion : completion)
    }
    unsafe fn subscribeAttributePriceForecastWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePriceForecastWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeTariffUnitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityPrice").unwrap(), readAttributeTariffUnitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrencyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityPrice").unwrap(), readAttributeCurrencyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentPriceWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityPrice").unwrap(), readAttributeCurrentPriceWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePriceForecastWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityPrice").unwrap(), readAttributePriceForecastWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityPrice").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityPrice").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityPrice").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityPrice").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityPrice").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityPrice").unwrap(), new)
    }
}
impl MTRBaseClusterCommodityPrice_Availability for MTRBaseClusterCommodityPrice {}
pub trait MTRBaseClusterCommodityPrice_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterMessages(pub id);
impl std::ops::Deref for MTRBaseClusterMessages {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterMessages {}
impl MTRBaseClusterMessages {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMessages").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterMessages {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterMessages {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterMessages, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterMessages").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterMessages(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterMessages")
        }
    }
}
impl IMTRCluster for MTRBaseClusterMessages {}
impl INSObject for MTRBaseClusterMessages {}
impl PNSObject for MTRBaseClusterMessages {}
impl IMTRBaseClusterMessages for MTRBaseClusterMessages {}
pub trait IMTRBaseClusterMessages: Sized + std::ops::Deref {
    unsafe fn presentMessagesRequestWithParams_completion_(
        &self,
        params: MTRMessagesClusterPresentMessagesRequestParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, presentMessagesRequestWithParams : params, completion : completion)
    }
    unsafe fn cancelMessagesRequestWithParams_completion_(
        &self,
        params: MTRMessagesClusterCancelMessagesRequestParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelMessagesRequestWithParams : params, completion : completion)
    }
    unsafe fn readAttributeMessagesWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMessagesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMessagesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMessagesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveMessageIDsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveMessageIDsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActiveMessageIDsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveMessageIDsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMessagesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMessages").unwrap(), readAttributeMessagesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActiveMessageIDsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMessages").unwrap(), readAttributeActiveMessageIDsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMessages").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMessages").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMessages").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMessages").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMessages").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMessages").unwrap(), new)
    }
}
impl MTRBaseClusterMessages_Availability for MTRBaseClusterMessages {}
pub trait MTRBaseClusterMessages_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterDeviceEnergyManagement(pub id);
impl std::ops::Deref for MTRBaseClusterDeviceEnergyManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterDeviceEnergyManagement {}
impl MTRBaseClusterDeviceEnergyManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterDeviceEnergyManagement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterDeviceEnergyManagement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterDeviceEnergyManagement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterDeviceEnergyManagement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterDeviceEnergyManagement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterDeviceEnergyManagement {}
impl INSObject for MTRBaseClusterDeviceEnergyManagement {}
impl PNSObject for MTRBaseClusterDeviceEnergyManagement {}
impl IMTRBaseClusterDeviceEnergyManagement for MTRBaseClusterDeviceEnergyManagement {}
pub trait IMTRBaseClusterDeviceEnergyManagement: Sized + std::ops::Deref {
    unsafe fn powerAdjustRequestWithParams_completion_(
        &self,
        params: MTRDeviceEnergyManagementClusterPowerAdjustRequestParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, powerAdjustRequestWithParams : params, completion : completion)
    }
    unsafe fn cancelPowerAdjustRequestWithParams_completion_(
        &self,
        params: MTRDeviceEnergyManagementClusterCancelPowerAdjustRequestParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelPowerAdjustRequestWithParams : params, completion : completion)
    }
    unsafe fn cancelPowerAdjustRequestWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelPowerAdjustRequestWithCompletion : completion)
    }
    unsafe fn startTimeAdjustRequestWithParams_completion_(
        &self,
        params: MTRDeviceEnergyManagementClusterStartTimeAdjustRequestParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startTimeAdjustRequestWithParams : params, completion : completion)
    }
    unsafe fn pauseRequestWithParams_completion_(
        &self,
        params: MTRDeviceEnergyManagementClusterPauseRequestParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseRequestWithParams : params, completion : completion)
    }
    unsafe fn resumeRequestWithParams_completion_(
        &self,
        params: MTRDeviceEnergyManagementClusterResumeRequestParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resumeRequestWithParams : params, completion : completion)
    }
    unsafe fn resumeRequestWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resumeRequestWithCompletion : completion)
    }
    unsafe fn modifyForecastRequestWithParams_completion_(
        &self,
        params: MTRDeviceEnergyManagementClusterModifyForecastRequestParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, modifyForecastRequestWithParams : params, completion : completion)
    }
    unsafe fn requestConstraintBasedForecastWithParams_completion_(
        &self,
        params: MTRDeviceEnergyManagementClusterRequestConstraintBasedForecastParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, requestConstraintBasedForecastWithParams : params, completion : completion)
    }
    unsafe fn cancelRequestWithParams_completion_(
        &self,
        params: MTRDeviceEnergyManagementClusterCancelRequestParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelRequestWithParams : params, completion : completion)
    }
    unsafe fn cancelRequestWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelRequestWithCompletion : completion)
    }
    unsafe fn readAttributeESATypeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeESATypeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeESATypeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeESATypeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeESACanGenerateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeESACanGenerateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeESACanGenerateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeESACanGenerateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeESAStateWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeESAStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeESAStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeESAStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAbsMinPowerWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAbsMinPowerWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAbsMinPowerWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAbsMinPowerWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAbsMaxPowerWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAbsMaxPowerWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAbsMaxPowerWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAbsMaxPowerWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePowerAdjustmentCapabilityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerAdjustmentCapabilityWithCompletion : completion)
    }
    unsafe fn subscribeAttributePowerAdjustmentCapabilityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePowerAdjustmentCapabilityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeForecastWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeForecastWithCompletion : completion)
    }
    unsafe fn subscribeAttributeForecastWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeForecastWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOptOutStateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOptOutStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOptOutStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOptOutStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeESATypeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagement").unwrap(), readAttributeESATypeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeESACanGenerateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagement").unwrap(), readAttributeESACanGenerateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeESAStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagement").unwrap(), readAttributeESAStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAbsMinPowerWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagement").unwrap(), readAttributeAbsMinPowerWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAbsMaxPowerWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagement").unwrap(), readAttributeAbsMaxPowerWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePowerAdjustmentCapabilityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagement").unwrap(), readAttributePowerAdjustmentCapabilityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeForecastWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagement").unwrap(), readAttributeForecastWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOptOutStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagement").unwrap(), readAttributeOptOutStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagement").unwrap(), new)
    }
}
impl MTRBaseClusterDeviceEnergyManagement_Availability for MTRBaseClusterDeviceEnergyManagement {}
pub trait MTRBaseClusterDeviceEnergyManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterEnergyEVSE(pub id);
impl std::ops::Deref for MTRBaseClusterEnergyEVSE {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterEnergyEVSE {}
impl MTRBaseClusterEnergyEVSE {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterEnergyEVSE {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterEnergyEVSE {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterEnergyEVSE, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterEnergyEVSE(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterEnergyEVSE")
        }
    }
}
impl IMTRCluster for MTRBaseClusterEnergyEVSE {}
impl INSObject for MTRBaseClusterEnergyEVSE {}
impl PNSObject for MTRBaseClusterEnergyEVSE {}
impl IMTRBaseClusterEnergyEVSE for MTRBaseClusterEnergyEVSE {}
pub trait IMTRBaseClusterEnergyEVSE: Sized + std::ops::Deref {
    unsafe fn disableWithParams_completion_(
        &self,
        params: MTREnergyEVSEClusterDisableParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, disableWithParams : params, completion : completion)
    }
    unsafe fn disableWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, disableWithCompletion : completion)
    }
    unsafe fn enableChargingWithParams_completion_(
        &self,
        params: MTREnergyEVSEClusterEnableChargingParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enableChargingWithParams : params, completion : completion)
    }
    unsafe fn enableDischargingWithParams_completion_(
        &self,
        params: MTREnergyEVSEClusterEnableDischargingParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enableDischargingWithParams : params, completion : completion)
    }
    unsafe fn startDiagnosticsWithParams_completion_(
        &self,
        params: MTREnergyEVSEClusterStartDiagnosticsParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startDiagnosticsWithParams : params, completion : completion)
    }
    unsafe fn startDiagnosticsWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startDiagnosticsWithCompletion : completion)
    }
    unsafe fn setTargetsWithParams_completion_(
        &self,
        params: MTREnergyEVSEClusterSetTargetsParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTargetsWithParams : params, completion : completion)
    }
    unsafe fn getTargetsWithParams_completion_(
        &self,
        params: MTREnergyEVSEClusterGetTargetsParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getTargetsWithParams : params, completion : completion)
    }
    unsafe fn getTargetsWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getTargetsWithCompletion : completion)
    }
    unsafe fn clearTargetsWithParams_completion_(
        &self,
        params: MTREnergyEVSEClusterClearTargetsParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearTargetsWithParams : params, completion : completion)
    }
    unsafe fn clearTargetsWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearTargetsWithCompletion : completion)
    }
    unsafe fn readAttributeStateWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupplyStateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupplyStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupplyStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupplyStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFaultStateWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFaultStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFaultStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFaultStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeChargingEnabledUntilWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeChargingEnabledUntilWithCompletion : completion)
    }
    unsafe fn subscribeAttributeChargingEnabledUntilWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeChargingEnabledUntilWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDischargingEnabledUntilWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDischargingEnabledUntilWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDischargingEnabledUntilWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDischargingEnabledUntilWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCircuitCapacityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCircuitCapacityWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCircuitCapacityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCircuitCapacityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinimumChargeCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinimumChargeCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinimumChargeCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinimumChargeCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaximumChargeCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaximumChargeCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaximumChargeCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaximumChargeCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaximumDischargeCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaximumDischargeCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaximumDischargeCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaximumDischargeCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUserMaximumChargeCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUserMaximumChargeCurrentWithCompletion : completion)
    }
    unsafe fn writeAttributeUserMaximumChargeCurrentWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUserMaximumChargeCurrentWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeUserMaximumChargeCurrentWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUserMaximumChargeCurrentWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeUserMaximumChargeCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUserMaximumChargeCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRandomizationDelayWindowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRandomizationDelayWindowWithCompletion : completion)
    }
    unsafe fn writeAttributeRandomizationDelayWindowWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRandomizationDelayWindowWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeRandomizationDelayWindowWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRandomizationDelayWindowWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeRandomizationDelayWindowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRandomizationDelayWindowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNextChargeStartTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNextChargeStartTimeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNextChargeStartTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNextChargeStartTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNextChargeTargetTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNextChargeTargetTimeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNextChargeTargetTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNextChargeTargetTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNextChargeRequiredEnergyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNextChargeRequiredEnergyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNextChargeRequiredEnergyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNextChargeRequiredEnergyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNextChargeTargetSoCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNextChargeTargetSoCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNextChargeTargetSoCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNextChargeTargetSoCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeApproximateEVEfficiencyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApproximateEVEfficiencyWithCompletion : completion)
    }
    unsafe fn writeAttributeApproximateEVEfficiencyWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeApproximateEVEfficiencyWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeApproximateEVEfficiencyWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeApproximateEVEfficiencyWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeApproximateEVEfficiencyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeApproximateEVEfficiencyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStateOfChargeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStateOfChargeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeStateOfChargeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStateOfChargeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatteryCapacityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatteryCapacityWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBatteryCapacityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatteryCapacityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeVehicleIDWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVehicleIDWithCompletion : completion)
    }
    unsafe fn subscribeAttributeVehicleIDWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeVehicleIDWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSessionIDWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSessionIDWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSessionIDWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSessionIDWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSessionDurationWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSessionDurationWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSessionDurationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSessionDurationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSessionEnergyChargedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSessionEnergyChargedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSessionEnergyChargedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSessionEnergyChargedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSessionEnergyDischargedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSessionEnergyDischargedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSessionEnergyDischargedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSessionEnergyDischargedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSupplyStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeSupplyStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFaultStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeFaultStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeChargingEnabledUntilWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeChargingEnabledUntilWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDischargingEnabledUntilWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeDischargingEnabledUntilWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCircuitCapacityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeCircuitCapacityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinimumChargeCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeMinimumChargeCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaximumChargeCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeMaximumChargeCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaximumDischargeCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeMaximumDischargeCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUserMaximumChargeCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeUserMaximumChargeCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRandomizationDelayWindowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeRandomizationDelayWindowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNextChargeStartTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeNextChargeStartTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNextChargeTargetTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeNextChargeTargetTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNextChargeRequiredEnergyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeNextChargeRequiredEnergyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNextChargeTargetSoCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeNextChargeTargetSoCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeApproximateEVEfficiencyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeApproximateEVEfficiencyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeStateOfChargeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeStateOfChargeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBatteryCapacityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeBatteryCapacityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeVehicleIDWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeVehicleIDWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSessionIDWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeSessionIDWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSessionDurationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeSessionDurationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSessionEnergyChargedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeSessionEnergyChargedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSessionEnergyDischargedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeSessionEnergyDischargedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSE").unwrap(), new)
    }
}
impl MTRBaseClusterEnergyEVSE_Availability for MTRBaseClusterEnergyEVSE {}
pub trait MTRBaseClusterEnergyEVSE_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterEnergyPreference(pub id);
impl std::ops::Deref for MTRBaseClusterEnergyPreference {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterEnergyPreference {}
impl MTRBaseClusterEnergyPreference {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyPreference").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterEnergyPreference {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterEnergyPreference {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterEnergyPreference, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyPreference").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterEnergyPreference(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterEnergyPreference")
        }
    }
}
impl IMTRCluster for MTRBaseClusterEnergyPreference {}
impl INSObject for MTRBaseClusterEnergyPreference {}
impl PNSObject for MTRBaseClusterEnergyPreference {}
impl IMTRBaseClusterEnergyPreference for MTRBaseClusterEnergyPreference {}
pub trait IMTRBaseClusterEnergyPreference: Sized + std::ops::Deref {
    unsafe fn readAttributeEnergyBalancesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnergyBalancesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeEnergyBalancesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnergyBalancesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentEnergyBalanceWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentEnergyBalanceWithCompletion : completion)
    }
    unsafe fn writeAttributeCurrentEnergyBalanceWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCurrentEnergyBalanceWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeCurrentEnergyBalanceWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCurrentEnergyBalanceWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeCurrentEnergyBalanceWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentEnergyBalanceWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEnergyPrioritiesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnergyPrioritiesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeEnergyPrioritiesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnergyPrioritiesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLowPowerModeSensitivitiesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLowPowerModeSensitivitiesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLowPowerModeSensitivitiesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLowPowerModeSensitivitiesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentLowPowerModeSensitivityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentLowPowerModeSensitivityWithCompletion : completion)
    }
    unsafe fn writeAttributeCurrentLowPowerModeSensitivityWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCurrentLowPowerModeSensitivityWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeCurrentLowPowerModeSensitivityWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCurrentLowPowerModeSensitivityWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeCurrentLowPowerModeSensitivityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentLowPowerModeSensitivityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeEnergyBalancesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyPreference").unwrap(), readAttributeEnergyBalancesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentEnergyBalanceWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyPreference").unwrap(), readAttributeCurrentEnergyBalanceWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEnergyPrioritiesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyPreference").unwrap(), readAttributeEnergyPrioritiesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLowPowerModeSensitivitiesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyPreference").unwrap(), readAttributeLowPowerModeSensitivitiesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentLowPowerModeSensitivityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyPreference").unwrap(), readAttributeCurrentLowPowerModeSensitivityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyPreference").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyPreference").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyPreference").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyPreference").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyPreference").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyPreference").unwrap(), new)
    }
}
impl MTRBaseClusterEnergyPreference_Availability for MTRBaseClusterEnergyPreference {}
pub trait MTRBaseClusterEnergyPreference_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterPowerTopology(pub id);
impl std::ops::Deref for MTRBaseClusterPowerTopology {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterPowerTopology {}
impl MTRBaseClusterPowerTopology {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerTopology").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterPowerTopology {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterPowerTopology {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterPowerTopology, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerTopology").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterPowerTopology(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterPowerTopology")
        }
    }
}
impl IMTRCluster for MTRBaseClusterPowerTopology {}
impl INSObject for MTRBaseClusterPowerTopology {}
impl PNSObject for MTRBaseClusterPowerTopology {}
impl IMTRBaseClusterPowerTopology for MTRBaseClusterPowerTopology {}
pub trait IMTRBaseClusterPowerTopology: Sized + std::ops::Deref {
    unsafe fn readAttributeAvailableEndpointsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAvailableEndpointsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAvailableEndpointsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAvailableEndpointsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveEndpointsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveEndpointsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActiveEndpointsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveEndpointsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeElectricalCircuitNodesWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeElectricalCircuitNodesWithParams : params, completion : completion)
    }
    unsafe fn writeAttributeElectricalCircuitNodesWithValue_completion_(
        &self,
        value: NSArray,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeElectricalCircuitNodesWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeElectricalCircuitNodesWithValue_params_completion_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeElectricalCircuitNodesWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeElectricalCircuitNodesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeElectricalCircuitNodesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeAvailableEndpointsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerTopology").unwrap(), readAttributeAvailableEndpointsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActiveEndpointsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerTopology").unwrap(), readAttributeActiveEndpointsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeElectricalCircuitNodesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerTopology").unwrap(), readAttributeElectricalCircuitNodesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerTopology").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerTopology").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerTopology").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerTopology").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerTopology").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerTopology").unwrap(), new)
    }
}
impl MTRBaseClusterPowerTopology_Availability for MTRBaseClusterPowerTopology {}
pub trait MTRBaseClusterPowerTopology_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterEnergyEVSEMode(pub id);
impl std::ops::Deref for MTRBaseClusterEnergyEVSEMode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterEnergyEVSEMode {}
impl MTRBaseClusterEnergyEVSEMode {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSEMode").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterEnergyEVSEMode {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterEnergyEVSEMode {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterEnergyEVSEMode, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSEMode").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterEnergyEVSEMode(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterEnergyEVSEMode")
        }
    }
}
impl IMTRCluster for MTRBaseClusterEnergyEVSEMode {}
impl INSObject for MTRBaseClusterEnergyEVSEMode {}
impl PNSObject for MTRBaseClusterEnergyEVSEMode {}
impl IMTRBaseClusterEnergyEVSEMode for MTRBaseClusterEnergyEVSEMode {}
pub trait IMTRBaseClusterEnergyEVSEMode: Sized + std::ops::Deref {
    unsafe fn changeToModeWithParams_completion_(
        &self,
        params: MTREnergyEVSEModeClusterChangeToModeParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, completion : completion)
    }
    unsafe fn readAttributeSupportedModesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedModesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedModesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSupportedModesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSEMode").unwrap(), readAttributeSupportedModesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSEMode").unwrap(), readAttributeCurrentModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSEMode").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSEMode").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSEMode").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSEMode").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSEMode").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEnergyEVSEMode").unwrap(), new)
    }
}
impl MTRBaseClusterEnergyEVSEMode_Availability for MTRBaseClusterEnergyEVSEMode {}
pub trait MTRBaseClusterEnergyEVSEMode_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterWaterHeaterMode(pub id);
impl std::ops::Deref for MTRBaseClusterWaterHeaterMode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterWaterHeaterMode {}
impl MTRBaseClusterWaterHeaterMode {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterMode").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterWaterHeaterMode {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterWaterHeaterMode {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterWaterHeaterMode, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterMode").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterWaterHeaterMode(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterWaterHeaterMode")
        }
    }
}
impl IMTRCluster for MTRBaseClusterWaterHeaterMode {}
impl INSObject for MTRBaseClusterWaterHeaterMode {}
impl PNSObject for MTRBaseClusterWaterHeaterMode {}
impl IMTRBaseClusterWaterHeaterMode for MTRBaseClusterWaterHeaterMode {}
pub trait IMTRBaseClusterWaterHeaterMode: Sized + std::ops::Deref {
    unsafe fn changeToModeWithParams_completion_(
        &self,
        params: MTRWaterHeaterModeClusterChangeToModeParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, completion : completion)
    }
    unsafe fn readAttributeSupportedModesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedModesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedModesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSupportedModesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterMode").unwrap(), readAttributeSupportedModesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterMode").unwrap(), readAttributeCurrentModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterMode").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterMode").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterMode").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterMode").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterMode").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWaterHeaterMode").unwrap(), new)
    }
}
impl MTRBaseClusterWaterHeaterMode_Availability for MTRBaseClusterWaterHeaterMode {}
pub trait MTRBaseClusterWaterHeaterMode_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterDeviceEnergyManagementMode(pub id);
impl std::ops::Deref for MTRBaseClusterDeviceEnergyManagementMode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterDeviceEnergyManagementMode {}
impl MTRBaseClusterDeviceEnergyManagementMode {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagementMode").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterDeviceEnergyManagementMode {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterDeviceEnergyManagementMode {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterDeviceEnergyManagementMode, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagementMode").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterDeviceEnergyManagementMode(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterDeviceEnergyManagementMode" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterDeviceEnergyManagementMode {}
impl INSObject for MTRBaseClusterDeviceEnergyManagementMode {}
impl PNSObject for MTRBaseClusterDeviceEnergyManagementMode {}
impl IMTRBaseClusterDeviceEnergyManagementMode for MTRBaseClusterDeviceEnergyManagementMode {}
pub trait IMTRBaseClusterDeviceEnergyManagementMode: Sized + std::ops::Deref {
    unsafe fn changeToModeWithParams_completion_(
        &self,
        params: MTRDeviceEnergyManagementModeClusterChangeToModeParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, completion : completion)
    }
    unsafe fn readAttributeSupportedModesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedModesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedModesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSupportedModesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagementMode").unwrap(), readAttributeSupportedModesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagementMode").unwrap(), readAttributeCurrentModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagementMode").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagementMode").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagementMode").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagementMode").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagementMode").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDeviceEnergyManagementMode").unwrap(), new)
    }
}
impl MTRBaseClusterDeviceEnergyManagementMode_Availability
    for MTRBaseClusterDeviceEnergyManagementMode
{
}
pub trait MTRBaseClusterDeviceEnergyManagementMode_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterElectricalGridConditions(pub id);
impl std::ops::Deref for MTRBaseClusterElectricalGridConditions {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterElectricalGridConditions {}
impl MTRBaseClusterElectricalGridConditions {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalGridConditions").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterElectricalGridConditions {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterElectricalGridConditions {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterElectricalGridConditions, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalGridConditions").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterElectricalGridConditions(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterElectricalGridConditions" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterElectricalGridConditions {}
impl INSObject for MTRBaseClusterElectricalGridConditions {}
impl PNSObject for MTRBaseClusterElectricalGridConditions {}
impl IMTRBaseClusterElectricalGridConditions for MTRBaseClusterElectricalGridConditions {}
pub trait IMTRBaseClusterElectricalGridConditions: Sized + std::ops::Deref {
    unsafe fn readAttributeLocalGenerationAvailableWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocalGenerationAvailableWithCompletion : completion)
    }
    unsafe fn writeAttributeLocalGenerationAvailableWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalGenerationAvailableWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLocalGenerationAvailableWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalGenerationAvailableWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLocalGenerationAvailableWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLocalGenerationAvailableWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentConditionsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentConditionsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentConditionsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentConditionsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeForecastConditionsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeForecastConditionsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeForecastConditionsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeForecastConditionsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeLocalGenerationAvailableWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalGridConditions").unwrap(), readAttributeLocalGenerationAvailableWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentConditionsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalGridConditions").unwrap(), readAttributeCurrentConditionsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeForecastConditionsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalGridConditions").unwrap(), readAttributeForecastConditionsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalGridConditions").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalGridConditions").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalGridConditions").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalGridConditions").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalGridConditions").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalGridConditions").unwrap(), new)
    }
}
impl MTRBaseClusterElectricalGridConditions_Availability
    for MTRBaseClusterElectricalGridConditions
{
}
pub trait MTRBaseClusterElectricalGridConditions_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterDoorLock(pub id);
impl std::ops::Deref for MTRBaseClusterDoorLock {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterDoorLock {}
impl MTRBaseClusterDoorLock {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterDoorLock {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterDoorLock {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterDoorLock, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterDoorLock(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterDoorLock")
        }
    }
}
impl IMTRCluster for MTRBaseClusterDoorLock {}
impl INSObject for MTRBaseClusterDoorLock {}
impl PNSObject for MTRBaseClusterDoorLock {}
impl IMTRBaseClusterDoorLock for MTRBaseClusterDoorLock {}
pub trait IMTRBaseClusterDoorLock: Sized + std::ops::Deref {
    unsafe fn lockDoorWithParams_completion_(
        &self,
        params: MTRDoorLockClusterLockDoorParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, lockDoorWithParams : params, completion : completion)
    }
    unsafe fn lockDoorWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, lockDoorWithCompletion : completion)
    }
    unsafe fn unlockDoorWithParams_completion_(
        &self,
        params: MTRDoorLockClusterUnlockDoorParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unlockDoorWithParams : params, completion : completion)
    }
    unsafe fn unlockDoorWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unlockDoorWithCompletion : completion)
    }
    unsafe fn unlockWithTimeoutWithParams_completion_(
        &self,
        params: MTRDoorLockClusterUnlockWithTimeoutParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unlockWithTimeoutWithParams : params, completion : completion)
    }
    unsafe fn setWeekDayScheduleWithParams_completion_(
        &self,
        params: MTRDoorLockClusterSetWeekDayScheduleParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWeekDayScheduleWithParams : params, completion : completion)
    }
    unsafe fn getWeekDayScheduleWithParams_completion_(
        &self,
        params: MTRDoorLockClusterGetWeekDayScheduleParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getWeekDayScheduleWithParams : params, completion : completion)
    }
    unsafe fn clearWeekDayScheduleWithParams_completion_(
        &self,
        params: MTRDoorLockClusterClearWeekDayScheduleParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearWeekDayScheduleWithParams : params, completion : completion)
    }
    unsafe fn setYearDayScheduleWithParams_completion_(
        &self,
        params: MTRDoorLockClusterSetYearDayScheduleParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setYearDayScheduleWithParams : params, completion : completion)
    }
    unsafe fn getYearDayScheduleWithParams_completion_(
        &self,
        params: MTRDoorLockClusterGetYearDayScheduleParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getYearDayScheduleWithParams : params, completion : completion)
    }
    unsafe fn clearYearDayScheduleWithParams_completion_(
        &self,
        params: MTRDoorLockClusterClearYearDayScheduleParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearYearDayScheduleWithParams : params, completion : completion)
    }
    unsafe fn setHolidayScheduleWithParams_completion_(
        &self,
        params: MTRDoorLockClusterSetHolidayScheduleParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHolidayScheduleWithParams : params, completion : completion)
    }
    unsafe fn getHolidayScheduleWithParams_completion_(
        &self,
        params: MTRDoorLockClusterGetHolidayScheduleParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getHolidayScheduleWithParams : params, completion : completion)
    }
    unsafe fn clearHolidayScheduleWithParams_completion_(
        &self,
        params: MTRDoorLockClusterClearHolidayScheduleParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearHolidayScheduleWithParams : params, completion : completion)
    }
    unsafe fn setUserWithParams_completion_(
        &self,
        params: MTRDoorLockClusterSetUserParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserWithParams : params, completion : completion)
    }
    unsafe fn getUserWithParams_completion_(
        &self,
        params: MTRDoorLockClusterGetUserParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getUserWithParams : params, completion : completion)
    }
    unsafe fn clearUserWithParams_completion_(
        &self,
        params: MTRDoorLockClusterClearUserParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearUserWithParams : params, completion : completion)
    }
    unsafe fn setCredentialWithParams_completion_(
        &self,
        params: MTRDoorLockClusterSetCredentialParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentialWithParams : params, completion : completion)
    }
    unsafe fn getCredentialStatusWithParams_completion_(
        &self,
        params: MTRDoorLockClusterGetCredentialStatusParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getCredentialStatusWithParams : params, completion : completion)
    }
    unsafe fn clearCredentialWithParams_completion_(
        &self,
        params: MTRDoorLockClusterClearCredentialParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearCredentialWithParams : params, completion : completion)
    }
    unsafe fn unboltDoorWithParams_completion_(
        &self,
        params: MTRDoorLockClusterUnboltDoorParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unboltDoorWithParams : params, completion : completion)
    }
    unsafe fn unboltDoorWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unboltDoorWithCompletion : completion)
    }
    unsafe fn setAliroReaderConfigWithParams_completion_(
        &self,
        params: MTRDoorLockClusterSetAliroReaderConfigParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAliroReaderConfigWithParams : params, completion : completion)
    }
    unsafe fn clearAliroReaderConfigWithParams_completion_(
        &self,
        params: MTRDoorLockClusterClearAliroReaderConfigParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearAliroReaderConfigWithParams : params, completion : completion)
    }
    unsafe fn clearAliroReaderConfigWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearAliroReaderConfigWithCompletion : completion)
    }
    unsafe fn appleSetAliroCredentialWithParams_completion_(
        &self,
        params: MTRDoorLockClusterAppleSetAliroCredentialParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appleSetAliroCredentialWithParams : params, completion : completion)
    }
    unsafe fn appleGetAliroCredentialStatusWithParams_completion_(
        &self,
        params: MTRDoorLockClusterAppleGetAliroCredentialStatusParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appleGetAliroCredentialStatusWithParams : params, completion : completion)
    }
    unsafe fn appleClearAliroCredentialWithParams_completion_(
        &self,
        params: MTRDoorLockClusterAppleClearAliroCredentialParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appleClearAliroCredentialWithParams : params, completion : completion)
    }
    unsafe fn appleSetAliroReaderConfigWithParams_completion_(
        &self,
        params: MTRDoorLockClusterAppleSetAliroReaderConfigParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appleSetAliroReaderConfigWithParams : params, completion : completion)
    }
    unsafe fn appleClearAliroReaderConfigWithParams_completion_(
        &self,
        params: MTRDoorLockClusterAppleClearAliroReaderConfigParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appleClearAliroReaderConfigWithParams : params, completion : completion)
    }
    unsafe fn appleClearAliroReaderConfigWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appleClearAliroReaderConfigWithCompletion : completion)
    }
    unsafe fn readAttributeLockStateWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLockStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLockStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLockStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLockTypeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLockTypeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLockTypeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLockTypeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActuatorEnabledWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActuatorEnabledWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActuatorEnabledWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActuatorEnabledWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDoorStateWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDoorStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDoorStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDoorStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDoorOpenEventsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDoorOpenEventsWithCompletion : completion)
    }
    unsafe fn writeAttributeDoorOpenEventsWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDoorOpenEventsWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeDoorOpenEventsWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDoorOpenEventsWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeDoorOpenEventsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDoorOpenEventsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDoorClosedEventsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDoorClosedEventsWithCompletion : completion)
    }
    unsafe fn writeAttributeDoorClosedEventsWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDoorClosedEventsWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeDoorClosedEventsWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDoorClosedEventsWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeDoorClosedEventsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDoorClosedEventsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOpenPeriodWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOpenPeriodWithCompletion : completion)
    }
    unsafe fn writeAttributeOpenPeriodWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOpenPeriodWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeOpenPeriodWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOpenPeriodWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeOpenPeriodWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOpenPeriodWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfTotalUsersSupportedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfTotalUsersSupportedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNumberOfTotalUsersSupportedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfTotalUsersSupportedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfPINUsersSupportedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfPINUsersSupportedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNumberOfPINUsersSupportedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfPINUsersSupportedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfRFIDUsersSupportedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfRFIDUsersSupportedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNumberOfRFIDUsersSupportedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfRFIDUsersSupportedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNumberOfWeekDaySchedulesSupportedPerUserWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfWeekDaySchedulesSupportedPerUserWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfYearDaySchedulesSupportedPerUserWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfYearDaySchedulesSupportedPerUserWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNumberOfYearDaySchedulesSupportedPerUserWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfYearDaySchedulesSupportedPerUserWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfHolidaySchedulesSupportedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfHolidaySchedulesSupportedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNumberOfHolidaySchedulesSupportedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfHolidaySchedulesSupportedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxPINCodeLengthWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxPINCodeLengthWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxPINCodeLengthWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxPINCodeLengthWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinPINCodeLengthWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinPINCodeLengthWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinPINCodeLengthWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinPINCodeLengthWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxRFIDCodeLengthWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxRFIDCodeLengthWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxRFIDCodeLengthWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxRFIDCodeLengthWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinRFIDCodeLengthWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinRFIDCodeLengthWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinRFIDCodeLengthWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinRFIDCodeLengthWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCredentialRulesSupportWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCredentialRulesSupportWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCredentialRulesSupportWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCredentialRulesSupportWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfCredentialsSupportedPerUserWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfCredentialsSupportedPerUserWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNumberOfCredentialsSupportedPerUserWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfCredentialsSupportedPerUserWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLanguageWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLanguageWithCompletion : completion)
    }
    unsafe fn writeAttributeLanguageWithValue_completion_(
        &self,
        value: NSString,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLanguageWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLanguageWithValue_params_completion_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLanguageWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLanguageWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLanguageWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLEDSettingsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLEDSettingsWithCompletion : completion)
    }
    unsafe fn writeAttributeLEDSettingsWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLEDSettingsWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLEDSettingsWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLEDSettingsWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLEDSettingsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLEDSettingsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAutoRelockTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAutoRelockTimeWithCompletion : completion)
    }
    unsafe fn writeAttributeAutoRelockTimeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAutoRelockTimeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeAutoRelockTimeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAutoRelockTimeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeAutoRelockTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAutoRelockTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSoundVolumeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoundVolumeWithCompletion : completion)
    }
    unsafe fn writeAttributeSoundVolumeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSoundVolumeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeSoundVolumeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSoundVolumeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeSoundVolumeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSoundVolumeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOperatingModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperatingModeWithCompletion : completion)
    }
    unsafe fn writeAttributeOperatingModeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOperatingModeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeOperatingModeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOperatingModeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeOperatingModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOperatingModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedOperatingModesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedOperatingModesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedOperatingModesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedOperatingModesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDefaultConfigurationRegisterWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultConfigurationRegisterWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDefaultConfigurationRegisterWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDefaultConfigurationRegisterWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEnableLocalProgrammingWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnableLocalProgrammingWithCompletion : completion)
    }
    unsafe fn writeAttributeEnableLocalProgrammingWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnableLocalProgrammingWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeEnableLocalProgrammingWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnableLocalProgrammingWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeEnableLocalProgrammingWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnableLocalProgrammingWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEnableOneTouchLockingWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnableOneTouchLockingWithCompletion : completion)
    }
    unsafe fn writeAttributeEnableOneTouchLockingWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnableOneTouchLockingWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeEnableOneTouchLockingWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnableOneTouchLockingWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeEnableOneTouchLockingWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnableOneTouchLockingWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEnableInsideStatusLEDWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnableInsideStatusLEDWithCompletion : completion)
    }
    unsafe fn writeAttributeEnableInsideStatusLEDWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnableInsideStatusLEDWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeEnableInsideStatusLEDWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnableInsideStatusLEDWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeEnableInsideStatusLEDWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnableInsideStatusLEDWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEnablePrivacyModeButtonWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnablePrivacyModeButtonWithCompletion : completion)
    }
    unsafe fn writeAttributeEnablePrivacyModeButtonWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnablePrivacyModeButtonWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeEnablePrivacyModeButtonWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnablePrivacyModeButtonWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeEnablePrivacyModeButtonWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnablePrivacyModeButtonWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLocalProgrammingFeaturesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocalProgrammingFeaturesWithCompletion : completion)
    }
    unsafe fn writeAttributeLocalProgrammingFeaturesWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalProgrammingFeaturesWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLocalProgrammingFeaturesWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalProgrammingFeaturesWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLocalProgrammingFeaturesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLocalProgrammingFeaturesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWrongCodeEntryLimitWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWrongCodeEntryLimitWithCompletion : completion)
    }
    unsafe fn writeAttributeWrongCodeEntryLimitWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWrongCodeEntryLimitWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeWrongCodeEntryLimitWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWrongCodeEntryLimitWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeWrongCodeEntryLimitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWrongCodeEntryLimitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUserCodeTemporaryDisableTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUserCodeTemporaryDisableTimeWithCompletion : completion)
    }
    unsafe fn writeAttributeUserCodeTemporaryDisableTimeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUserCodeTemporaryDisableTimeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeUserCodeTemporaryDisableTimeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUserCodeTemporaryDisableTimeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeUserCodeTemporaryDisableTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUserCodeTemporaryDisableTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSendPINOverTheAirWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSendPINOverTheAirWithCompletion : completion)
    }
    unsafe fn writeAttributeSendPINOverTheAirWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSendPINOverTheAirWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeSendPINOverTheAirWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSendPINOverTheAirWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeSendPINOverTheAirWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSendPINOverTheAirWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRequirePINforRemoteOperationWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRequirePINforRemoteOperationWithCompletion : completion)
    }
    unsafe fn writeAttributeRequirePINforRemoteOperationWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRequirePINforRemoteOperationWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeRequirePINforRemoteOperationWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRequirePINforRemoteOperationWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeRequirePINforRemoteOperationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRequirePINforRemoteOperationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeExpiringUserTimeoutWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeExpiringUserTimeoutWithCompletion : completion)
    }
    unsafe fn writeAttributeExpiringUserTimeoutWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeExpiringUserTimeoutWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeExpiringUserTimeoutWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeExpiringUserTimeoutWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeExpiringUserTimeoutWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeExpiringUserTimeoutWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAliroReaderVerificationKeyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAliroReaderVerificationKeyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAliroReaderVerificationKeyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAliroReaderVerificationKeyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAliroReaderGroupIdentifierWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAliroReaderGroupIdentifierWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAliroReaderGroupIdentifierWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAliroReaderGroupIdentifierWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAliroReaderGroupSubIdentifierWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAliroReaderGroupSubIdentifierWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAliroReaderGroupSubIdentifierWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAliroReaderGroupSubIdentifierWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAliroExpeditedTransactionSupportedProtocolVersionsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAliroExpeditedTransactionSupportedProtocolVersionsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAliroExpeditedTransactionSupportedProtocolVersionsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAliroExpeditedTransactionSupportedProtocolVersionsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAliroGroupResolvingKeyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAliroGroupResolvingKeyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAliroGroupResolvingKeyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAliroGroupResolvingKeyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAliroSupportedBLEUWBProtocolVersionsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAliroSupportedBLEUWBProtocolVersionsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAliroSupportedBLEUWBProtocolVersionsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAliroSupportedBLEUWBProtocolVersionsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAliroBLEAdvertisingVersionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAliroBLEAdvertisingVersionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAliroBLEAdvertisingVersionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAliroBLEAdvertisingVersionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfAliroCredentialIssuerKeysSupportedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfAliroCredentialIssuerKeysSupportedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNumberOfAliroCredentialIssuerKeysSupportedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfAliroCredentialIssuerKeysSupportedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfAliroEndpointKeysSupportedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfAliroEndpointKeysSupportedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNumberOfAliroEndpointKeysSupportedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfAliroEndpointKeysSupportedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAppleAliroReaderVerificationKeyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAppleAliroReaderVerificationKeyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAppleAliroReaderVerificationKeyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAppleAliroReaderVerificationKeyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAppleAliroReaderGroupIdentifierWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAppleAliroReaderGroupIdentifierWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAppleAliroReaderGroupIdentifierWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAppleAliroReaderGroupIdentifierWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAppleAliroReaderGroupSubIdentifierWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAppleAliroReaderGroupSubIdentifierWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAppleAliroReaderGroupSubIdentifierWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAppleAliroReaderGroupSubIdentifierWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAppleAliroExpeditedTransactionSupportedProtocolVersionsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAppleAliroExpeditedTransactionSupportedProtocolVersionsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAppleAliroExpeditedTransactionSupportedProtocolVersionsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAppleAliroExpeditedTransactionSupportedProtocolVersionsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAppleAliroGroupResolvingKeyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAppleAliroGroupResolvingKeyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAppleAliroGroupResolvingKeyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAppleAliroGroupResolvingKeyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAppleAliroSupportedBLEUWBProtocolVersionsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAppleAliroSupportedBLEUWBProtocolVersionsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAppleAliroSupportedBLEUWBProtocolVersionsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAppleAliroSupportedBLEUWBProtocolVersionsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAppleAliroBLEAdvertisingVersionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAppleAliroBLEAdvertisingVersionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAppleAliroBLEAdvertisingVersionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAppleAliroBLEAdvertisingVersionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAppleNumberOfAliroCredentialIssuerKeysSupportedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAppleNumberOfAliroCredentialIssuerKeysSupportedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAppleNumberOfAliroCredentialIssuerKeysSupportedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAppleNumberOfAliroCredentialIssuerKeysSupportedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAppleNumberOfAliroEndpointKeysSupportedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAppleNumberOfAliroEndpointKeysSupportedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAppleNumberOfAliroEndpointKeysSupportedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAppleNumberOfAliroEndpointKeysSupportedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeLockStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeLockStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLockTypeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeLockTypeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActuatorEnabledWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeActuatorEnabledWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDoorStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeDoorStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDoorOpenEventsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeDoorOpenEventsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDoorClosedEventsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeDoorClosedEventsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOpenPeriodWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeOpenPeriodWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNumberOfTotalUsersSupportedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeNumberOfTotalUsersSupportedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNumberOfPINUsersSupportedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeNumberOfPINUsersSupportedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNumberOfRFIDUsersSupportedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeNumberOfRFIDUsersSupportedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNumberOfYearDaySchedulesSupportedPerUserWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeNumberOfYearDaySchedulesSupportedPerUserWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNumberOfHolidaySchedulesSupportedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeNumberOfHolidaySchedulesSupportedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxPINCodeLengthWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeMaxPINCodeLengthWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinPINCodeLengthWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeMinPINCodeLengthWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxRFIDCodeLengthWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeMaxRFIDCodeLengthWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinRFIDCodeLengthWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeMinRFIDCodeLengthWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCredentialRulesSupportWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeCredentialRulesSupportWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNumberOfCredentialsSupportedPerUserWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeNumberOfCredentialsSupportedPerUserWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLanguageWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeLanguageWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLEDSettingsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeLEDSettingsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAutoRelockTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAutoRelockTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSoundVolumeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeSoundVolumeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOperatingModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeOperatingModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSupportedOperatingModesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeSupportedOperatingModesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDefaultConfigurationRegisterWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeDefaultConfigurationRegisterWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEnableLocalProgrammingWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeEnableLocalProgrammingWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEnableOneTouchLockingWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeEnableOneTouchLockingWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEnableInsideStatusLEDWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeEnableInsideStatusLEDWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEnablePrivacyModeButtonWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeEnablePrivacyModeButtonWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLocalProgrammingFeaturesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeLocalProgrammingFeaturesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeWrongCodeEntryLimitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeWrongCodeEntryLimitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUserCodeTemporaryDisableTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeUserCodeTemporaryDisableTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSendPINOverTheAirWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeSendPINOverTheAirWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRequirePINforRemoteOperationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeRequirePINforRemoteOperationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeExpiringUserTimeoutWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeExpiringUserTimeoutWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAliroReaderVerificationKeyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAliroReaderVerificationKeyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAliroReaderGroupIdentifierWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAliroReaderGroupIdentifierWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAliroReaderGroupSubIdentifierWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAliroReaderGroupSubIdentifierWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAliroExpeditedTransactionSupportedProtocolVersionsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAliroExpeditedTransactionSupportedProtocolVersionsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAliroGroupResolvingKeyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAliroGroupResolvingKeyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAliroSupportedBLEUWBProtocolVersionsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAliroSupportedBLEUWBProtocolVersionsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAliroBLEAdvertisingVersionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAliroBLEAdvertisingVersionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNumberOfAliroCredentialIssuerKeysSupportedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeNumberOfAliroCredentialIssuerKeysSupportedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNumberOfAliroEndpointKeysSupportedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeNumberOfAliroEndpointKeysSupportedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAppleAliroReaderVerificationKeyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAppleAliroReaderVerificationKeyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAppleAliroReaderGroupIdentifierWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAppleAliroReaderGroupIdentifierWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAppleAliroReaderGroupSubIdentifierWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAppleAliroReaderGroupSubIdentifierWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAppleAliroExpeditedTransactionSupportedProtocolVersionsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAppleAliroExpeditedTransactionSupportedProtocolVersionsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAppleAliroGroupResolvingKeyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAppleAliroGroupResolvingKeyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAppleAliroSupportedBLEUWBProtocolVersionsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAppleAliroSupportedBLEUWBProtocolVersionsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAppleAliroBLEAdvertisingVersionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAppleAliroBLEAdvertisingVersionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAppleNumberOfAliroCredentialIssuerKeysSupportedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAppleNumberOfAliroCredentialIssuerKeysSupportedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAppleNumberOfAliroEndpointKeysSupportedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAppleNumberOfAliroEndpointKeysSupportedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), new)
    }
}
impl MTRBaseClusterDoorLock_Availability for MTRBaseClusterDoorLock {}
pub trait MTRBaseClusterDoorLock_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterWindowCovering(pub id);
impl std::ops::Deref for MTRBaseClusterWindowCovering {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterWindowCovering {}
impl MTRBaseClusterWindowCovering {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterWindowCovering {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterWindowCovering {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterWindowCovering, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterWindowCovering(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterWindowCovering")
        }
    }
}
impl IMTRCluster for MTRBaseClusterWindowCovering {}
impl INSObject for MTRBaseClusterWindowCovering {}
impl PNSObject for MTRBaseClusterWindowCovering {}
impl IMTRBaseClusterWindowCovering for MTRBaseClusterWindowCovering {}
pub trait IMTRBaseClusterWindowCovering: Sized + std::ops::Deref {
    unsafe fn upOrOpenWithParams_completion_(
        &self,
        params: MTRWindowCoveringClusterUpOrOpenParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, upOrOpenWithParams : params, completion : completion)
    }
    unsafe fn upOrOpenWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, upOrOpenWithCompletion : completion)
    }
    unsafe fn downOrCloseWithParams_completion_(
        &self,
        params: MTRWindowCoveringClusterDownOrCloseParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, downOrCloseWithParams : params, completion : completion)
    }
    unsafe fn downOrCloseWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, downOrCloseWithCompletion : completion)
    }
    unsafe fn stopMotionWithParams_completion_(
        &self,
        params: MTRWindowCoveringClusterStopMotionParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopMotionWithParams : params, completion : completion)
    }
    unsafe fn stopMotionWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopMotionWithCompletion : completion)
    }
    unsafe fn goToLiftValueWithParams_completion_(
        &self,
        params: MTRWindowCoveringClusterGoToLiftValueParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, goToLiftValueWithParams : params, completion : completion)
    }
    unsafe fn goToLiftPercentageWithParams_completion_(
        &self,
        params: MTRWindowCoveringClusterGoToLiftPercentageParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, goToLiftPercentageWithParams : params, completion : completion)
    }
    unsafe fn goToTiltValueWithParams_completion_(
        &self,
        params: MTRWindowCoveringClusterGoToTiltValueParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, goToTiltValueWithParams : params, completion : completion)
    }
    unsafe fn goToTiltPercentageWithParams_completion_(
        &self,
        params: MTRWindowCoveringClusterGoToTiltPercentageParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, goToTiltPercentageWithParams : params, completion : completion)
    }
    unsafe fn readAttributeTypeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTypeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTypeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTypeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePhysicalClosedLimitLiftWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhysicalClosedLimitLiftWithCompletion : completion)
    }
    unsafe fn subscribeAttributePhysicalClosedLimitLiftWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePhysicalClosedLimitLiftWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePhysicalClosedLimitTiltWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhysicalClosedLimitTiltWithCompletion : completion)
    }
    unsafe fn subscribeAttributePhysicalClosedLimitTiltWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePhysicalClosedLimitTiltWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentPositionLiftWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPositionLiftWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentPositionLiftWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentPositionLiftWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentPositionTiltWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPositionTiltWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentPositionTiltWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentPositionTiltWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfActuationsLiftWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfActuationsLiftWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNumberOfActuationsLiftWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfActuationsLiftWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfActuationsTiltWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfActuationsTiltWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNumberOfActuationsTiltWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfActuationsTiltWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeConfigStatusWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeConfigStatusWithCompletion : completion)
    }
    unsafe fn subscribeAttributeConfigStatusWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeConfigStatusWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentPositionLiftPercentageWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPositionLiftPercentageWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentPositionLiftPercentageWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentPositionLiftPercentageWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentPositionTiltPercentageWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPositionTiltPercentageWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentPositionTiltPercentageWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentPositionTiltPercentageWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOperationalStatusWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalStatusWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOperationalStatusWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOperationalStatusWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTargetPositionLiftPercent100thsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTargetPositionLiftPercent100thsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTargetPositionLiftPercent100thsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTargetPositionLiftPercent100thsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTargetPositionTiltPercent100thsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTargetPositionTiltPercent100thsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTargetPositionTiltPercent100thsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTargetPositionTiltPercent100thsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEndProductTypeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEndProductTypeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeEndProductTypeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEndProductTypeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentPositionLiftPercent100thsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPositionLiftPercent100thsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentPositionLiftPercent100thsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentPositionLiftPercent100thsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentPositionTiltPercent100thsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPositionTiltPercent100thsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentPositionTiltPercent100thsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentPositionTiltPercent100thsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInstalledOpenLimitLiftWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstalledOpenLimitLiftWithCompletion : completion)
    }
    unsafe fn subscribeAttributeInstalledOpenLimitLiftWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInstalledOpenLimitLiftWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInstalledClosedLimitLiftWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstalledClosedLimitLiftWithCompletion : completion)
    }
    unsafe fn subscribeAttributeInstalledClosedLimitLiftWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInstalledClosedLimitLiftWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInstalledOpenLimitTiltWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstalledOpenLimitTiltWithCompletion : completion)
    }
    unsafe fn subscribeAttributeInstalledOpenLimitTiltWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInstalledOpenLimitTiltWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInstalledClosedLimitTiltWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstalledClosedLimitTiltWithCompletion : completion)
    }
    unsafe fn subscribeAttributeInstalledClosedLimitTiltWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInstalledClosedLimitTiltWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeModeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeModeWithCompletion : completion)
    }
    unsafe fn writeAttributeModeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeModeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeModeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeModeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSafetyStatusWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSafetyStatusWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSafetyStatusWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSafetyStatusWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeTypeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeTypeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePhysicalClosedLimitLiftWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributePhysicalClosedLimitLiftWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePhysicalClosedLimitTiltWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributePhysicalClosedLimitTiltWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentPositionLiftWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeCurrentPositionLiftWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentPositionTiltWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeCurrentPositionTiltWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNumberOfActuationsLiftWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeNumberOfActuationsLiftWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNumberOfActuationsTiltWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeNumberOfActuationsTiltWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeConfigStatusWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeConfigStatusWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentPositionLiftPercentageWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeCurrentPositionLiftPercentageWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentPositionTiltPercentageWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeCurrentPositionTiltPercentageWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOperationalStatusWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeOperationalStatusWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTargetPositionLiftPercent100thsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeTargetPositionLiftPercent100thsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTargetPositionTiltPercent100thsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeTargetPositionTiltPercent100thsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEndProductTypeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeEndProductTypeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentPositionLiftPercent100thsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeCurrentPositionLiftPercent100thsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentPositionTiltPercent100thsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeCurrentPositionTiltPercent100thsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInstalledOpenLimitLiftWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeInstalledOpenLimitLiftWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInstalledClosedLimitLiftWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeInstalledClosedLimitLiftWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInstalledOpenLimitTiltWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeInstalledOpenLimitTiltWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInstalledClosedLimitTiltWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeInstalledClosedLimitTiltWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSafetyStatusWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeSafetyStatusWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), new)
    }
}
impl MTRBaseClusterWindowCovering_Availability for MTRBaseClusterWindowCovering {}
pub trait MTRBaseClusterWindowCovering_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterClosureControl(pub id);
impl std::ops::Deref for MTRBaseClusterClosureControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterClosureControl {}
impl MTRBaseClusterClosureControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureControl").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterClosureControl {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterClosureControl {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterClosureControl, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureControl").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterClosureControl(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterClosureControl")
        }
    }
}
impl IMTRCluster for MTRBaseClusterClosureControl {}
impl INSObject for MTRBaseClusterClosureControl {}
impl PNSObject for MTRBaseClusterClosureControl {}
impl IMTRBaseClusterClosureControl for MTRBaseClusterClosureControl {}
pub trait IMTRBaseClusterClosureControl: Sized + std::ops::Deref {
    unsafe fn stopWithParams_completion_(
        &self,
        params: MTRClosureControlClusterStopParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithParams : params, completion : completion)
    }
    unsafe fn stopWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithCompletion : completion)
    }
    unsafe fn moveToWithParams_completion_(
        &self,
        params: MTRClosureControlClusterMoveToParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToWithParams : params, completion : completion)
    }
    unsafe fn moveToWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToWithCompletion : completion)
    }
    unsafe fn calibrateWithParams_completion_(
        &self,
        params: MTRClosureControlClusterCalibrateParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, calibrateWithParams : params, completion : completion)
    }
    unsafe fn calibrateWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, calibrateWithCompletion : completion)
    }
    unsafe fn readAttributeCountdownTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCountdownTimeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCountdownTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCountdownTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMainStateWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMainStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMainStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMainStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentErrorListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentErrorListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentErrorListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentErrorListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOverallCurrentStateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOverallCurrentStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOverallCurrentStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOverallCurrentStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOverallTargetStateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOverallTargetStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOverallTargetStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOverallTargetStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLatchControlModesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLatchControlModesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLatchControlModesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLatchControlModesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeCountdownTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureControl").unwrap(), readAttributeCountdownTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMainStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureControl").unwrap(), readAttributeMainStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentErrorListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureControl").unwrap(), readAttributeCurrentErrorListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOverallCurrentStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureControl").unwrap(), readAttributeOverallCurrentStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOverallTargetStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureControl").unwrap(), readAttributeOverallTargetStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLatchControlModesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureControl").unwrap(), readAttributeLatchControlModesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureControl").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureControl").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureControl").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureControl").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureControl").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureControl").unwrap(), new)
    }
}
impl MTRBaseClusterClosureControl_Availability for MTRBaseClusterClosureControl {}
pub trait MTRBaseClusterClosureControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterClosureDimension(pub id);
impl std::ops::Deref for MTRBaseClusterClosureDimension {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterClosureDimension {}
impl MTRBaseClusterClosureDimension {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureDimension").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterClosureDimension {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterClosureDimension {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterClosureDimension, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureDimension").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterClosureDimension(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterClosureDimension")
        }
    }
}
impl IMTRCluster for MTRBaseClusterClosureDimension {}
impl INSObject for MTRBaseClusterClosureDimension {}
impl PNSObject for MTRBaseClusterClosureDimension {}
impl IMTRBaseClusterClosureDimension for MTRBaseClusterClosureDimension {}
pub trait IMTRBaseClusterClosureDimension: Sized + std::ops::Deref {
    unsafe fn setTargetWithParams_completion_(
        &self,
        params: MTRClosureDimensionClusterSetTargetParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTargetWithParams : params, completion : completion)
    }
    unsafe fn setTargetWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTargetWithCompletion : completion)
    }
    unsafe fn stepWithParams_completion_(
        &self,
        params: MTRClosureDimensionClusterStepParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepWithParams : params, completion : completion)
    }
    unsafe fn readAttributeCurrentStateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTargetStateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTargetStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTargetStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTargetStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeResolutionWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeResolutionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeResolutionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeResolutionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStepValueWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStepValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeStepValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStepValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUnitWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnitWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUnitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUnitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUnitRangeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnitRangeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUnitRangeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUnitRangeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLimitRangeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLimitRangeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLimitRangeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLimitRangeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTranslationDirectionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTranslationDirectionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTranslationDirectionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTranslationDirectionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRotationAxisWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRotationAxisWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRotationAxisWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRotationAxisWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOverflowWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOverflowWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOverflowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOverflowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeModulationTypeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeModulationTypeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeModulationTypeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeModulationTypeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLatchControlModesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLatchControlModesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLatchControlModesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLatchControlModesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeCurrentStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureDimension").unwrap(), readAttributeCurrentStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTargetStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureDimension").unwrap(), readAttributeTargetStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeResolutionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureDimension").unwrap(), readAttributeResolutionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeStepValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureDimension").unwrap(), readAttributeStepValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUnitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureDimension").unwrap(), readAttributeUnitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUnitRangeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureDimension").unwrap(), readAttributeUnitRangeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLimitRangeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureDimension").unwrap(), readAttributeLimitRangeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTranslationDirectionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureDimension").unwrap(), readAttributeTranslationDirectionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRotationAxisWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureDimension").unwrap(), readAttributeRotationAxisWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOverflowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureDimension").unwrap(), readAttributeOverflowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeModulationTypeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureDimension").unwrap(), readAttributeModulationTypeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLatchControlModesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureDimension").unwrap(), readAttributeLatchControlModesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureDimension").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureDimension").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureDimension").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureDimension").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureDimension").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterClosureDimension").unwrap(), new)
    }
}
impl MTRBaseClusterClosureDimension_Availability for MTRBaseClusterClosureDimension {}
pub trait MTRBaseClusterClosureDimension_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterServiceArea(pub id);
impl std::ops::Deref for MTRBaseClusterServiceArea {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterServiceArea {}
impl MTRBaseClusterServiceArea {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterServiceArea").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterServiceArea {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterServiceArea {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterServiceArea, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterServiceArea").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterServiceArea(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterServiceArea")
        }
    }
}
impl IMTRCluster for MTRBaseClusterServiceArea {}
impl INSObject for MTRBaseClusterServiceArea {}
impl PNSObject for MTRBaseClusterServiceArea {}
impl IMTRBaseClusterServiceArea for MTRBaseClusterServiceArea {}
pub trait IMTRBaseClusterServiceArea: Sized + std::ops::Deref {
    unsafe fn selectAreasWithParams_completion_(
        &self,
        params: MTRServiceAreaClusterSelectAreasParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, selectAreasWithParams : params, completion : completion)
    }
    unsafe fn skipAreaWithParams_completion_(
        &self,
        params: MTRServiceAreaClusterSkipAreaParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, skipAreaWithParams : params, completion : completion)
    }
    unsafe fn readAttributeSupportedAreasWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedAreasWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedAreasWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedAreasWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedMapsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedMapsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedMapsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedMapsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSelectedAreasWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSelectedAreasWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSelectedAreasWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSelectedAreasWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentAreaWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentAreaWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentAreaWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentAreaWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEstimatedEndTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEstimatedEndTimeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeEstimatedEndTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEstimatedEndTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProgressWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProgressWithCompletion : completion)
    }
    unsafe fn subscribeAttributeProgressWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProgressWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSupportedAreasWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterServiceArea").unwrap(), readAttributeSupportedAreasWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSupportedMapsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterServiceArea").unwrap(), readAttributeSupportedMapsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSelectedAreasWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterServiceArea").unwrap(), readAttributeSelectedAreasWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentAreaWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterServiceArea").unwrap(), readAttributeCurrentAreaWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEstimatedEndTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterServiceArea").unwrap(), readAttributeEstimatedEndTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeProgressWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterServiceArea").unwrap(), readAttributeProgressWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterServiceArea").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterServiceArea").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterServiceArea").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterServiceArea").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterServiceArea").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterServiceArea").unwrap(), new)
    }
}
impl MTRBaseClusterServiceArea_Availability for MTRBaseClusterServiceArea {}
pub trait MTRBaseClusterServiceArea_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterPumpConfigurationAndControl(pub id);
impl std::ops::Deref for MTRBaseClusterPumpConfigurationAndControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterPumpConfigurationAndControl {}
impl MTRBaseClusterPumpConfigurationAndControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterPumpConfigurationAndControl {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterPumpConfigurationAndControl {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterPumpConfigurationAndControl, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterPumpConfigurationAndControl(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterPumpConfigurationAndControl" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterPumpConfigurationAndControl {}
impl INSObject for MTRBaseClusterPumpConfigurationAndControl {}
impl PNSObject for MTRBaseClusterPumpConfigurationAndControl {}
impl IMTRBaseClusterPumpConfigurationAndControl for MTRBaseClusterPumpConfigurationAndControl {}
pub trait IMTRBaseClusterPumpConfigurationAndControl: Sized + std::ops::Deref {
    unsafe fn readAttributeMaxPressureWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxPressureWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxPressureWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxPressureWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxSpeedWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxSpeedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxSpeedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxSpeedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxFlowWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxFlowWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxFlowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxFlowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinConstPressureWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinConstPressureWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinConstPressureWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinConstPressureWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxConstPressureWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxConstPressureWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxConstPressureWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxConstPressureWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinCompPressureWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinCompPressureWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinCompPressureWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinCompPressureWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxCompPressureWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxCompPressureWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxCompPressureWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxCompPressureWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinConstSpeedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinConstSpeedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinConstSpeedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinConstSpeedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxConstSpeedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxConstSpeedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxConstSpeedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxConstSpeedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinConstFlowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinConstFlowWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinConstFlowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinConstFlowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxConstFlowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxConstFlowWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxConstFlowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxConstFlowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinConstTempWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinConstTempWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinConstTempWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinConstTempWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxConstTempWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxConstTempWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxConstTempWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxConstTempWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePumpStatusWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePumpStatusWithCompletion : completion)
    }
    unsafe fn subscribeAttributePumpStatusWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePumpStatusWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEffectiveOperationModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEffectiveOperationModeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeEffectiveOperationModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEffectiveOperationModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEffectiveControlModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEffectiveControlModeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeEffectiveControlModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEffectiveControlModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCapacityWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCapacityWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCapacityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCapacityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSpeedWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSpeedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSpeedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLifetimeRunningHoursWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLifetimeRunningHoursWithCompletion : completion)
    }
    unsafe fn writeAttributeLifetimeRunningHoursWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLifetimeRunningHoursWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLifetimeRunningHoursWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLifetimeRunningHoursWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLifetimeRunningHoursWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLifetimeRunningHoursWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePowerWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerWithCompletion : completion)
    }
    unsafe fn subscribeAttributePowerWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePowerWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLifetimeEnergyConsumedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLifetimeEnergyConsumedWithCompletion : completion)
    }
    unsafe fn writeAttributeLifetimeEnergyConsumedWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLifetimeEnergyConsumedWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLifetimeEnergyConsumedWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLifetimeEnergyConsumedWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLifetimeEnergyConsumedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLifetimeEnergyConsumedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOperationModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationModeWithCompletion : completion)
    }
    unsafe fn writeAttributeOperationModeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOperationModeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeOperationModeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOperationModeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeOperationModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOperationModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeControlModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeControlModeWithCompletion : completion)
    }
    unsafe fn writeAttributeControlModeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeControlModeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeControlModeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeControlModeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeControlModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeControlModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMaxPressureWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMaxPressureWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxSpeedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMaxSpeedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxFlowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMaxFlowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinConstPressureWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMinConstPressureWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxConstPressureWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMaxConstPressureWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinCompPressureWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMinCompPressureWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxCompPressureWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMaxCompPressureWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinConstSpeedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMinConstSpeedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxConstSpeedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMaxConstSpeedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinConstFlowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMinConstFlowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxConstFlowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMaxConstFlowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinConstTempWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMinConstTempWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxConstTempWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMaxConstTempWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePumpStatusWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributePumpStatusWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEffectiveOperationModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeEffectiveOperationModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEffectiveControlModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeEffectiveControlModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCapacityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeCapacityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSpeedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeSpeedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLifetimeRunningHoursWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeLifetimeRunningHoursWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePowerWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributePowerWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLifetimeEnergyConsumedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeLifetimeEnergyConsumedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOperationModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeOperationModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeControlModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeControlModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), new)
    }
}
impl MTRBaseClusterPumpConfigurationAndControl_Availability
    for MTRBaseClusterPumpConfigurationAndControl
{
}
pub trait MTRBaseClusterPumpConfigurationAndControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterThermostat(pub id);
impl std::ops::Deref for MTRBaseClusterThermostat {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterThermostat {}
impl MTRBaseClusterThermostat {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterThermostat {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterThermostat {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterThermostat, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterThermostat(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterThermostat")
        }
    }
}
impl IMTRCluster for MTRBaseClusterThermostat {}
impl INSObject for MTRBaseClusterThermostat {}
impl PNSObject for MTRBaseClusterThermostat {}
impl IMTRBaseClusterThermostat for MTRBaseClusterThermostat {}
pub trait IMTRBaseClusterThermostat: Sized + std::ops::Deref {
    unsafe fn setpointRaiseLowerWithParams_completion_(
        &self,
        params: MTRThermostatClusterSetpointRaiseLowerParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setpointRaiseLowerWithParams : params, completion : completion)
    }
    unsafe fn setWeeklyScheduleWithParams_completion_(
        &self,
        params: MTRThermostatClusterSetWeeklyScheduleParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWeeklyScheduleWithParams : params, completion : completion)
    }
    unsafe fn getWeeklyScheduleWithParams_completion_(
        &self,
        params: MTRThermostatClusterGetWeeklyScheduleParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getWeeklyScheduleWithParams : params, completion : completion)
    }
    unsafe fn clearWeeklyScheduleWithParams_completion_(
        &self,
        params: MTRThermostatClusterClearWeeklyScheduleParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearWeeklyScheduleWithParams : params, completion : completion)
    }
    unsafe fn clearWeeklyScheduleWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearWeeklyScheduleWithCompletion : completion)
    }
    unsafe fn setActiveScheduleRequestWithParams_completion_(
        &self,
        params: MTRThermostatClusterSetActiveScheduleRequestParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActiveScheduleRequestWithParams : params, completion : completion)
    }
    unsafe fn setActivePresetRequestWithParams_completion_(
        &self,
        params: MTRThermostatClusterSetActivePresetRequestParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActivePresetRequestWithParams : params, completion : completion)
    }
    unsafe fn addThermostatSuggestionWithParams_completion_(
        &self,
        params: MTRThermostatClusterAddThermostatSuggestionParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addThermostatSuggestionWithParams : params, completion : completion)
    }
    unsafe fn removeThermostatSuggestionWithParams_completion_(
        &self,
        params: MTRThermostatClusterRemoveThermostatSuggestionParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeThermostatSuggestionWithParams : params, completion : completion)
    }
    unsafe fn atomicRequestWithParams_completion_(
        &self,
        params: MTRThermostatClusterAtomicRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, atomicRequestWithParams : params, completion : completion)
    }
    unsafe fn readAttributeLocalTemperatureWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocalTemperatureWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLocalTemperatureWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLocalTemperatureWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOutdoorTemperatureWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOutdoorTemperatureWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOutdoorTemperatureWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOutdoorTemperatureWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOccupancyWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupancyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOccupancyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOccupancyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAbsMinHeatSetpointLimitWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAbsMinHeatSetpointLimitWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAbsMinHeatSetpointLimitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAbsMinHeatSetpointLimitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAbsMaxHeatSetpointLimitWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAbsMaxHeatSetpointLimitWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAbsMaxHeatSetpointLimitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAbsMaxHeatSetpointLimitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAbsMinCoolSetpointLimitWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAbsMinCoolSetpointLimitWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAbsMinCoolSetpointLimitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAbsMinCoolSetpointLimitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAbsMaxCoolSetpointLimitWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAbsMaxCoolSetpointLimitWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAbsMaxCoolSetpointLimitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAbsMaxCoolSetpointLimitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePICoolingDemandWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePICoolingDemandWithCompletion : completion)
    }
    unsafe fn subscribeAttributePICoolingDemandWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePICoolingDemandWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePIHeatingDemandWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePIHeatingDemandWithCompletion : completion)
    }
    unsafe fn subscribeAttributePIHeatingDemandWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePIHeatingDemandWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeHVACSystemTypeConfigurationWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHVACSystemTypeConfigurationWithCompletion : completion)
    }
    unsafe fn writeAttributeHVACSystemTypeConfigurationWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeHVACSystemTypeConfigurationWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeHVACSystemTypeConfigurationWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeHVACSystemTypeConfigurationWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeHVACSystemTypeConfigurationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHVACSystemTypeConfigurationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLocalTemperatureCalibrationWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocalTemperatureCalibrationWithCompletion : completion)
    }
    unsafe fn writeAttributeLocalTemperatureCalibrationWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalTemperatureCalibrationWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLocalTemperatureCalibrationWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalTemperatureCalibrationWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLocalTemperatureCalibrationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLocalTemperatureCalibrationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOccupiedCoolingSetpointWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupiedCoolingSetpointWithCompletion : completion)
    }
    unsafe fn writeAttributeOccupiedCoolingSetpointWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOccupiedCoolingSetpointWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeOccupiedCoolingSetpointWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOccupiedCoolingSetpointWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeOccupiedCoolingSetpointWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOccupiedCoolingSetpointWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOccupiedHeatingSetpointWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupiedHeatingSetpointWithCompletion : completion)
    }
    unsafe fn writeAttributeOccupiedHeatingSetpointWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOccupiedHeatingSetpointWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeOccupiedHeatingSetpointWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOccupiedHeatingSetpointWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeOccupiedHeatingSetpointWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOccupiedHeatingSetpointWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUnoccupiedCoolingSetpointWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnoccupiedCoolingSetpointWithCompletion : completion)
    }
    unsafe fn writeAttributeUnoccupiedCoolingSetpointWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnoccupiedCoolingSetpointWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeUnoccupiedCoolingSetpointWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnoccupiedCoolingSetpointWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeUnoccupiedCoolingSetpointWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUnoccupiedCoolingSetpointWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUnoccupiedHeatingSetpointWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnoccupiedHeatingSetpointWithCompletion : completion)
    }
    unsafe fn writeAttributeUnoccupiedHeatingSetpointWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnoccupiedHeatingSetpointWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeUnoccupiedHeatingSetpointWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnoccupiedHeatingSetpointWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeUnoccupiedHeatingSetpointWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUnoccupiedHeatingSetpointWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinHeatSetpointLimitWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinHeatSetpointLimitWithCompletion : completion)
    }
    unsafe fn writeAttributeMinHeatSetpointLimitWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinHeatSetpointLimitWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeMinHeatSetpointLimitWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinHeatSetpointLimitWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeMinHeatSetpointLimitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinHeatSetpointLimitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxHeatSetpointLimitWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxHeatSetpointLimitWithCompletion : completion)
    }
    unsafe fn writeAttributeMaxHeatSetpointLimitWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMaxHeatSetpointLimitWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeMaxHeatSetpointLimitWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMaxHeatSetpointLimitWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeMaxHeatSetpointLimitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxHeatSetpointLimitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinCoolSetpointLimitWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinCoolSetpointLimitWithCompletion : completion)
    }
    unsafe fn writeAttributeMinCoolSetpointLimitWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinCoolSetpointLimitWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeMinCoolSetpointLimitWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinCoolSetpointLimitWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeMinCoolSetpointLimitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinCoolSetpointLimitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxCoolSetpointLimitWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxCoolSetpointLimitWithCompletion : completion)
    }
    unsafe fn writeAttributeMaxCoolSetpointLimitWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMaxCoolSetpointLimitWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeMaxCoolSetpointLimitWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMaxCoolSetpointLimitWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeMaxCoolSetpointLimitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxCoolSetpointLimitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinSetpointDeadBandWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinSetpointDeadBandWithCompletion : completion)
    }
    unsafe fn writeAttributeMinSetpointDeadBandWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinSetpointDeadBandWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeMinSetpointDeadBandWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinSetpointDeadBandWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeMinSetpointDeadBandWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinSetpointDeadBandWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRemoteSensingWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRemoteSensingWithCompletion : completion)
    }
    unsafe fn writeAttributeRemoteSensingWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRemoteSensingWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeRemoteSensingWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRemoteSensingWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeRemoteSensingWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRemoteSensingWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeControlSequenceOfOperationWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeControlSequenceOfOperationWithCompletion : completion)
    }
    unsafe fn writeAttributeControlSequenceOfOperationWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeControlSequenceOfOperationWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeControlSequenceOfOperationWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeControlSequenceOfOperationWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeControlSequenceOfOperationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeControlSequenceOfOperationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSystemModeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSystemModeWithCompletion : completion)
    }
    unsafe fn writeAttributeSystemModeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSystemModeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeSystemModeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSystemModeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeSystemModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSystemModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeThermostatRunningModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThermostatRunningModeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeThermostatRunningModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeThermostatRunningModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStartOfWeekWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStartOfWeekWithCompletion : completion)
    }
    unsafe fn subscribeAttributeStartOfWeekWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStartOfWeekWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfWeeklyTransitionsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfWeeklyTransitionsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNumberOfWeeklyTransitionsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfWeeklyTransitionsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfDailyTransitionsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfDailyTransitionsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNumberOfDailyTransitionsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfDailyTransitionsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTemperatureSetpointHoldWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTemperatureSetpointHoldWithCompletion : completion)
    }
    unsafe fn writeAttributeTemperatureSetpointHoldWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureSetpointHoldWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeTemperatureSetpointHoldWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureSetpointHoldWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeTemperatureSetpointHoldWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTemperatureSetpointHoldWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTemperatureSetpointHoldDurationWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTemperatureSetpointHoldDurationWithCompletion : completion)
    }
    unsafe fn writeAttributeTemperatureSetpointHoldDurationWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureSetpointHoldDurationWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeTemperatureSetpointHoldDurationWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureSetpointHoldDurationWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeTemperatureSetpointHoldDurationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTemperatureSetpointHoldDurationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeThermostatProgrammingOperationModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThermostatProgrammingOperationModeWithCompletion : completion)
    }
    unsafe fn writeAttributeThermostatProgrammingOperationModeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeThermostatProgrammingOperationModeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeThermostatProgrammingOperationModeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeThermostatProgrammingOperationModeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeThermostatProgrammingOperationModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeThermostatProgrammingOperationModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeThermostatRunningStateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThermostatRunningStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeThermostatRunningStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeThermostatRunningStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSetpointChangeSourceWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSetpointChangeSourceWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSetpointChangeSourceWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSetpointChangeSourceWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSetpointChangeAmountWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSetpointChangeAmountWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSetpointChangeAmountWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSetpointChangeAmountWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSetpointChangeSourceTimestampWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSetpointChangeSourceTimestampWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSetpointChangeSourceTimestampWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSetpointChangeSourceTimestampWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOccupiedSetbackWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupiedSetbackWithCompletion : completion)
    }
    unsafe fn writeAttributeOccupiedSetbackWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOccupiedSetbackWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeOccupiedSetbackWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOccupiedSetbackWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeOccupiedSetbackWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOccupiedSetbackWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOccupiedSetbackMinWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupiedSetbackMinWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOccupiedSetbackMinWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOccupiedSetbackMinWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOccupiedSetbackMaxWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupiedSetbackMaxWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOccupiedSetbackMaxWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOccupiedSetbackMaxWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUnoccupiedSetbackWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnoccupiedSetbackWithCompletion : completion)
    }
    unsafe fn writeAttributeUnoccupiedSetbackWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnoccupiedSetbackWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeUnoccupiedSetbackWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnoccupiedSetbackWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeUnoccupiedSetbackWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUnoccupiedSetbackWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUnoccupiedSetbackMinWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnoccupiedSetbackMinWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUnoccupiedSetbackMinWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUnoccupiedSetbackMinWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUnoccupiedSetbackMaxWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnoccupiedSetbackMaxWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUnoccupiedSetbackMaxWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUnoccupiedSetbackMaxWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEmergencyHeatDeltaWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEmergencyHeatDeltaWithCompletion : completion)
    }
    unsafe fn writeAttributeEmergencyHeatDeltaWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEmergencyHeatDeltaWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeEmergencyHeatDeltaWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEmergencyHeatDeltaWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeEmergencyHeatDeltaWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEmergencyHeatDeltaWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeACTypeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACTypeWithCompletion : completion)
    }
    unsafe fn writeAttributeACTypeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACTypeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeACTypeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACTypeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeACTypeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeACTypeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeACCapacityWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACCapacityWithCompletion : completion)
    }
    unsafe fn writeAttributeACCapacityWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACCapacityWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeACCapacityWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACCapacityWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeACCapacityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeACCapacityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeACRefrigerantTypeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACRefrigerantTypeWithCompletion : completion)
    }
    unsafe fn writeAttributeACRefrigerantTypeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACRefrigerantTypeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeACRefrigerantTypeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACRefrigerantTypeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeACRefrigerantTypeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeACRefrigerantTypeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeACCompressorTypeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACCompressorTypeWithCompletion : completion)
    }
    unsafe fn writeAttributeACCompressorTypeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACCompressorTypeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeACCompressorTypeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACCompressorTypeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeACCompressorTypeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeACCompressorTypeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeACErrorCodeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACErrorCodeWithCompletion : completion)
    }
    unsafe fn writeAttributeACErrorCodeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACErrorCodeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeACErrorCodeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACErrorCodeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeACErrorCodeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeACErrorCodeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeACLouverPositionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACLouverPositionWithCompletion : completion)
    }
    unsafe fn writeAttributeACLouverPositionWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACLouverPositionWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeACLouverPositionWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACLouverPositionWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeACLouverPositionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeACLouverPositionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeACCoilTemperatureWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACCoilTemperatureWithCompletion : completion)
    }
    unsafe fn subscribeAttributeACCoilTemperatureWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeACCoilTemperatureWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeACCapacityformatWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACCapacityformatWithCompletion : completion)
    }
    unsafe fn writeAttributeACCapacityformatWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACCapacityformatWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeACCapacityformatWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACCapacityformatWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeACCapacityformatWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeACCapacityformatWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePresetTypesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePresetTypesWithCompletion : completion)
    }
    unsafe fn subscribeAttributePresetTypesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePresetTypesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeScheduleTypesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScheduleTypesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeScheduleTypesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeScheduleTypesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfPresetsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfPresetsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNumberOfPresetsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfPresetsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfSchedulesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfSchedulesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNumberOfSchedulesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfSchedulesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfScheduleTransitionsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfScheduleTransitionsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNumberOfScheduleTransitionsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfScheduleTransitionsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfScheduleTransitionPerDayWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfScheduleTransitionPerDayWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNumberOfScheduleTransitionPerDayWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfScheduleTransitionPerDayWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActivePresetHandleWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePresetHandleWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActivePresetHandleWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActivePresetHandleWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveScheduleHandleWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveScheduleHandleWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActiveScheduleHandleWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveScheduleHandleWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePresetsWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePresetsWithCompletion : completion)
    }
    unsafe fn writeAttributePresetsWithValue_completion_(
        &self,
        value: NSArray,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePresetsWithValue : value, completion : completion)
    }
    unsafe fn writeAttributePresetsWithValue_params_completion_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePresetsWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributePresetsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePresetsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSchedulesWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSchedulesWithCompletion : completion)
    }
    unsafe fn writeAttributeSchedulesWithValue_completion_(
        &self,
        value: NSArray,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSchedulesWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeSchedulesWithValue_params_completion_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSchedulesWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeSchedulesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSchedulesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSetpointHoldExpiryTimestampWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSetpointHoldExpiryTimestampWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSetpointHoldExpiryTimestampWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSetpointHoldExpiryTimestampWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxThermostatSuggestionsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxThermostatSuggestionsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxThermostatSuggestionsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxThermostatSuggestionsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeThermostatSuggestionsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThermostatSuggestionsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeThermostatSuggestionsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeThermostatSuggestionsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentThermostatSuggestionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentThermostatSuggestionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentThermostatSuggestionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentThermostatSuggestionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeThermostatSuggestionNotFollowingReasonWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThermostatSuggestionNotFollowingReasonWithCompletion : completion)
    }
    unsafe fn subscribeAttributeThermostatSuggestionNotFollowingReasonWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeThermostatSuggestionNotFollowingReasonWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeLocalTemperatureWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeLocalTemperatureWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOutdoorTemperatureWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeOutdoorTemperatureWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOccupancyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeOccupancyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAbsMinHeatSetpointLimitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeAbsMinHeatSetpointLimitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAbsMaxHeatSetpointLimitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeAbsMaxHeatSetpointLimitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAbsMinCoolSetpointLimitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeAbsMinCoolSetpointLimitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAbsMaxCoolSetpointLimitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeAbsMaxCoolSetpointLimitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePICoolingDemandWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributePICoolingDemandWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePIHeatingDemandWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributePIHeatingDemandWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeHVACSystemTypeConfigurationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeHVACSystemTypeConfigurationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLocalTemperatureCalibrationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeLocalTemperatureCalibrationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOccupiedCoolingSetpointWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeOccupiedCoolingSetpointWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOccupiedHeatingSetpointWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeOccupiedHeatingSetpointWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUnoccupiedCoolingSetpointWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeUnoccupiedCoolingSetpointWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUnoccupiedHeatingSetpointWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeUnoccupiedHeatingSetpointWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinHeatSetpointLimitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeMinHeatSetpointLimitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxHeatSetpointLimitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeMaxHeatSetpointLimitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinCoolSetpointLimitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeMinCoolSetpointLimitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxCoolSetpointLimitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeMaxCoolSetpointLimitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinSetpointDeadBandWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeMinSetpointDeadBandWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRemoteSensingWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeRemoteSensingWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeControlSequenceOfOperationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeControlSequenceOfOperationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSystemModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeSystemModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeThermostatRunningModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeThermostatRunningModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeStartOfWeekWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeStartOfWeekWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNumberOfWeeklyTransitionsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeNumberOfWeeklyTransitionsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNumberOfDailyTransitionsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeNumberOfDailyTransitionsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTemperatureSetpointHoldWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeTemperatureSetpointHoldWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTemperatureSetpointHoldDurationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeTemperatureSetpointHoldDurationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeThermostatProgrammingOperationModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeThermostatProgrammingOperationModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeThermostatRunningStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeThermostatRunningStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSetpointChangeSourceWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeSetpointChangeSourceWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSetpointChangeAmountWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeSetpointChangeAmountWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSetpointChangeSourceTimestampWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeSetpointChangeSourceTimestampWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOccupiedSetbackWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeOccupiedSetbackWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOccupiedSetbackMinWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeOccupiedSetbackMinWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOccupiedSetbackMaxWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeOccupiedSetbackMaxWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUnoccupiedSetbackWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeUnoccupiedSetbackWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUnoccupiedSetbackMinWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeUnoccupiedSetbackMinWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUnoccupiedSetbackMaxWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeUnoccupiedSetbackMaxWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEmergencyHeatDeltaWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeEmergencyHeatDeltaWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeACTypeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeACTypeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeACCapacityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeACCapacityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeACRefrigerantTypeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeACRefrigerantTypeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeACCompressorTypeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeACCompressorTypeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeACErrorCodeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeACErrorCodeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeACLouverPositionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeACLouverPositionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeACCoilTemperatureWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeACCoilTemperatureWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeACCapacityformatWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeACCapacityformatWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePresetTypesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributePresetTypesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeScheduleTypesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeScheduleTypesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNumberOfPresetsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeNumberOfPresetsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNumberOfSchedulesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeNumberOfSchedulesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNumberOfScheduleTransitionsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeNumberOfScheduleTransitionsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNumberOfScheduleTransitionPerDayWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeNumberOfScheduleTransitionPerDayWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActivePresetHandleWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeActivePresetHandleWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActiveScheduleHandleWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeActiveScheduleHandleWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePresetsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributePresetsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSchedulesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeSchedulesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSetpointHoldExpiryTimestampWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeSetpointHoldExpiryTimestampWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxThermostatSuggestionsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeMaxThermostatSuggestionsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeThermostatSuggestionsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeThermostatSuggestionsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentThermostatSuggestionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeCurrentThermostatSuggestionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeThermostatSuggestionNotFollowingReasonWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeThermostatSuggestionNotFollowingReasonWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), new)
    }
}
impl MTRBaseClusterThermostat_Availability for MTRBaseClusterThermostat {}
pub trait MTRBaseClusterThermostat_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterFanControl(pub id);
impl std::ops::Deref for MTRBaseClusterFanControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterFanControl {}
impl MTRBaseClusterFanControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterFanControl {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterFanControl {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterFanControl, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterFanControl(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterFanControl")
        }
    }
}
impl IMTRCluster for MTRBaseClusterFanControl {}
impl INSObject for MTRBaseClusterFanControl {}
impl PNSObject for MTRBaseClusterFanControl {}
impl IMTRBaseClusterFanControl for MTRBaseClusterFanControl {}
pub trait IMTRBaseClusterFanControl: Sized + std::ops::Deref {
    unsafe fn stepWithParams_completion_(
        &self,
        params: MTRFanControlClusterStepParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepWithParams : params, completion : completion)
    }
    unsafe fn readAttributeFanModeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFanModeWithCompletion : completion)
    }
    unsafe fn writeAttributeFanModeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFanModeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeFanModeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFanModeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeFanModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFanModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFanModeSequenceWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFanModeSequenceWithCompletion : completion)
    }
    unsafe fn writeAttributeFanModeSequenceWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFanModeSequenceWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeFanModeSequenceWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFanModeSequenceWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeFanModeSequenceWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFanModeSequenceWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePercentSettingWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePercentSettingWithCompletion : completion)
    }
    unsafe fn writeAttributePercentSettingWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePercentSettingWithValue : value, completion : completion)
    }
    unsafe fn writeAttributePercentSettingWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePercentSettingWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributePercentSettingWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePercentSettingWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePercentCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePercentCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributePercentCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePercentCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSpeedMaxWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeedMaxWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSpeedMaxWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSpeedMaxWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSpeedSettingWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeedSettingWithCompletion : completion)
    }
    unsafe fn writeAttributeSpeedSettingWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSpeedSettingWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeSpeedSettingWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSpeedSettingWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeSpeedSettingWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSpeedSettingWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSpeedCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeedCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSpeedCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSpeedCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRockSupportWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRockSupportWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRockSupportWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRockSupportWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRockSettingWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRockSettingWithCompletion : completion)
    }
    unsafe fn writeAttributeRockSettingWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRockSettingWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeRockSettingWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRockSettingWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeRockSettingWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRockSettingWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWindSupportWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWindSupportWithCompletion : completion)
    }
    unsafe fn subscribeAttributeWindSupportWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWindSupportWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWindSettingWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWindSettingWithCompletion : completion)
    }
    unsafe fn writeAttributeWindSettingWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWindSettingWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeWindSettingWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWindSettingWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeWindSettingWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWindSettingWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAirflowDirectionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAirflowDirectionWithCompletion : completion)
    }
    unsafe fn writeAttributeAirflowDirectionWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAirflowDirectionWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeAirflowDirectionWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAirflowDirectionWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeAirflowDirectionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAirflowDirectionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeFanModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeFanModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFanModeSequenceWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeFanModeSequenceWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePercentSettingWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributePercentSettingWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePercentCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributePercentCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSpeedMaxWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeSpeedMaxWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSpeedSettingWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeSpeedSettingWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSpeedCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeSpeedCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRockSupportWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeRockSupportWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRockSettingWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeRockSettingWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeWindSupportWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeWindSupportWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeWindSettingWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeWindSettingWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAirflowDirectionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeAirflowDirectionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), new)
    }
}
impl MTRBaseClusterFanControl_Availability for MTRBaseClusterFanControl {}
pub trait MTRBaseClusterFanControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterThermostatUserInterfaceConfiguration(pub id);
impl std::ops::Deref for MTRBaseClusterThermostatUserInterfaceConfiguration {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterThermostatUserInterfaceConfiguration {}
impl MTRBaseClusterThermostatUserInterfaceConfiguration {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostatUserInterfaceConfiguration").unwrap(), alloc)
        })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterThermostatUserInterfaceConfiguration {}
impl std::convert::TryFrom<MTRGenericBaseCluster>
    for MTRBaseClusterThermostatUserInterfaceConfiguration
{
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterThermostatUserInterfaceConfiguration, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostatUserInterfaceConfiguration").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterThermostatUserInterfaceConfiguration(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterThermostatUserInterfaceConfiguration" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterThermostatUserInterfaceConfiguration {}
impl INSObject for MTRBaseClusterThermostatUserInterfaceConfiguration {}
impl PNSObject for MTRBaseClusterThermostatUserInterfaceConfiguration {}
impl IMTRBaseClusterThermostatUserInterfaceConfiguration
    for MTRBaseClusterThermostatUserInterfaceConfiguration
{
}
pub trait IMTRBaseClusterThermostatUserInterfaceConfiguration: Sized + std::ops::Deref {
    unsafe fn readAttributeTemperatureDisplayModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTemperatureDisplayModeWithCompletion : completion)
    }
    unsafe fn writeAttributeTemperatureDisplayModeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureDisplayModeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeTemperatureDisplayModeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureDisplayModeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeTemperatureDisplayModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTemperatureDisplayModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeKeypadLockoutWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeKeypadLockoutWithCompletion : completion)
    }
    unsafe fn writeAttributeKeypadLockoutWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeKeypadLockoutWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeKeypadLockoutWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeKeypadLockoutWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeKeypadLockoutWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeKeypadLockoutWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeScheduleProgrammingVisibilityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScheduleProgrammingVisibilityWithCompletion : completion)
    }
    unsafe fn writeAttributeScheduleProgrammingVisibilityWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeScheduleProgrammingVisibilityWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeScheduleProgrammingVisibilityWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeScheduleProgrammingVisibilityWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeScheduleProgrammingVisibilityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeScheduleProgrammingVisibilityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeTemperatureDisplayModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostatUserInterfaceConfiguration").unwrap(), readAttributeTemperatureDisplayModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeKeypadLockoutWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostatUserInterfaceConfiguration").unwrap(), readAttributeKeypadLockoutWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeScheduleProgrammingVisibilityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostatUserInterfaceConfiguration").unwrap(), readAttributeScheduleProgrammingVisibilityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostatUserInterfaceConfiguration").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostatUserInterfaceConfiguration").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostatUserInterfaceConfiguration").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostatUserInterfaceConfiguration").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostatUserInterfaceConfiguration").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostatUserInterfaceConfiguration").unwrap(), new)
    }
}
impl MTRBaseClusterThermostatUserInterfaceConfiguration_Availability
    for MTRBaseClusterThermostatUserInterfaceConfiguration
{
}
pub trait MTRBaseClusterThermostatUserInterfaceConfiguration_Availability:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterColorControl(pub id);
impl std::ops::Deref for MTRBaseClusterColorControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterColorControl {}
impl MTRBaseClusterColorControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterColorControl {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterColorControl {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterColorControl, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterColorControl(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterColorControl")
        }
    }
}
impl IMTRCluster for MTRBaseClusterColorControl {}
impl INSObject for MTRBaseClusterColorControl {}
impl PNSObject for MTRBaseClusterColorControl {}
impl IMTRBaseClusterColorControl for MTRBaseClusterColorControl {}
pub trait IMTRBaseClusterColorControl: Sized + std::ops::Deref {
    unsafe fn moveToHueWithParams_completion_(
        &self,
        params: MTRColorControlClusterMoveToHueParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToHueWithParams : params, completion : completion)
    }
    unsafe fn moveHueWithParams_completion_(
        &self,
        params: MTRColorControlClusterMoveHueParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveHueWithParams : params, completion : completion)
    }
    unsafe fn stepHueWithParams_completion_(
        &self,
        params: MTRColorControlClusterStepHueParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepHueWithParams : params, completion : completion)
    }
    unsafe fn moveToSaturationWithParams_completion_(
        &self,
        params: MTRColorControlClusterMoveToSaturationParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToSaturationWithParams : params, completion : completion)
    }
    unsafe fn moveSaturationWithParams_completion_(
        &self,
        params: MTRColorControlClusterMoveSaturationParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveSaturationWithParams : params, completion : completion)
    }
    unsafe fn stepSaturationWithParams_completion_(
        &self,
        params: MTRColorControlClusterStepSaturationParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepSaturationWithParams : params, completion : completion)
    }
    unsafe fn moveToHueAndSaturationWithParams_completion_(
        &self,
        params: MTRColorControlClusterMoveToHueAndSaturationParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToHueAndSaturationWithParams : params, completion : completion)
    }
    unsafe fn moveToColorWithParams_completion_(
        &self,
        params: MTRColorControlClusterMoveToColorParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToColorWithParams : params, completion : completion)
    }
    unsafe fn moveColorWithParams_completion_(
        &self,
        params: MTRColorControlClusterMoveColorParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveColorWithParams : params, completion : completion)
    }
    unsafe fn stepColorWithParams_completion_(
        &self,
        params: MTRColorControlClusterStepColorParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepColorWithParams : params, completion : completion)
    }
    unsafe fn moveToColorTemperatureWithParams_completion_(
        &self,
        params: MTRColorControlClusterMoveToColorTemperatureParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToColorTemperatureWithParams : params, completion : completion)
    }
    unsafe fn enhancedMoveToHueWithParams_completion_(
        &self,
        params: MTRColorControlClusterEnhancedMoveToHueParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enhancedMoveToHueWithParams : params, completion : completion)
    }
    unsafe fn enhancedMoveHueWithParams_completion_(
        &self,
        params: MTRColorControlClusterEnhancedMoveHueParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enhancedMoveHueWithParams : params, completion : completion)
    }
    unsafe fn enhancedStepHueWithParams_completion_(
        &self,
        params: MTRColorControlClusterEnhancedStepHueParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enhancedStepHueWithParams : params, completion : completion)
    }
    unsafe fn enhancedMoveToHueAndSaturationWithParams_completion_(
        &self,
        params: MTRColorControlClusterEnhancedMoveToHueAndSaturationParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enhancedMoveToHueAndSaturationWithParams : params, completion : completion)
    }
    unsafe fn colorLoopSetWithParams_completion_(
        &self,
        params: MTRColorControlClusterColorLoopSetParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, colorLoopSetWithParams : params, completion : completion)
    }
    unsafe fn stopMoveStepWithParams_completion_(
        &self,
        params: MTRColorControlClusterStopMoveStepParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopMoveStepWithParams : params, completion : completion)
    }
    unsafe fn moveColorTemperatureWithParams_completion_(
        &self,
        params: MTRColorControlClusterMoveColorTemperatureParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveColorTemperatureWithParams : params, completion : completion)
    }
    unsafe fn stepColorTemperatureWithParams_completion_(
        &self,
        params: MTRColorControlClusterStepColorTemperatureParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepColorTemperatureWithParams : params, completion : completion)
    }
    unsafe fn readAttributeCurrentHueWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentHueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentHueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentHueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentSaturationWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentSaturationWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentSaturationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentSaturationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRemainingTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRemainingTimeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRemainingTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRemainingTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentXWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentXWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentXWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentXWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentYWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentYWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentYWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentYWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDriftCompensationWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDriftCompensationWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDriftCompensationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDriftCompensationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCompensationTextWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCompensationTextWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCompensationTextWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCompensationTextWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorTemperatureMiredsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorTemperatureMiredsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeColorTemperatureMiredsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorTemperatureMiredsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorModeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorModeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeColorModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOptionsWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOptionsWithCompletion : completion)
    }
    unsafe fn writeAttributeOptionsWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOptionsWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeOptionsWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOptionsWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeOptionsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOptionsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfPrimariesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfPrimariesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNumberOfPrimariesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfPrimariesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary1XWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary1XWithCompletion : completion)
    }
    unsafe fn subscribeAttributePrimary1XWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary1XWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary1YWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary1YWithCompletion : completion)
    }
    unsafe fn subscribeAttributePrimary1YWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary1YWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary1IntensityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary1IntensityWithCompletion : completion)
    }
    unsafe fn subscribeAttributePrimary1IntensityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary1IntensityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary2XWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary2XWithCompletion : completion)
    }
    unsafe fn subscribeAttributePrimary2XWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary2XWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary2YWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary2YWithCompletion : completion)
    }
    unsafe fn subscribeAttributePrimary2YWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary2YWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary2IntensityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary2IntensityWithCompletion : completion)
    }
    unsafe fn subscribeAttributePrimary2IntensityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary2IntensityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary3XWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary3XWithCompletion : completion)
    }
    unsafe fn subscribeAttributePrimary3XWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary3XWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary3YWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary3YWithCompletion : completion)
    }
    unsafe fn subscribeAttributePrimary3YWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary3YWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary3IntensityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary3IntensityWithCompletion : completion)
    }
    unsafe fn subscribeAttributePrimary3IntensityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary3IntensityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary4XWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary4XWithCompletion : completion)
    }
    unsafe fn subscribeAttributePrimary4XWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary4XWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary4YWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary4YWithCompletion : completion)
    }
    unsafe fn subscribeAttributePrimary4YWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary4YWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary4IntensityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary4IntensityWithCompletion : completion)
    }
    unsafe fn subscribeAttributePrimary4IntensityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary4IntensityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary5XWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary5XWithCompletion : completion)
    }
    unsafe fn subscribeAttributePrimary5XWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary5XWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary5YWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary5YWithCompletion : completion)
    }
    unsafe fn subscribeAttributePrimary5YWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary5YWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary5IntensityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary5IntensityWithCompletion : completion)
    }
    unsafe fn subscribeAttributePrimary5IntensityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary5IntensityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary6XWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary6XWithCompletion : completion)
    }
    unsafe fn subscribeAttributePrimary6XWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary6XWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary6YWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary6YWithCompletion : completion)
    }
    unsafe fn subscribeAttributePrimary6YWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary6YWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary6IntensityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary6IntensityWithCompletion : completion)
    }
    unsafe fn subscribeAttributePrimary6IntensityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary6IntensityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWhitePointXWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWhitePointXWithCompletion : completion)
    }
    unsafe fn subscribeAttributeWhitePointXWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWhitePointXWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWhitePointYWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWhitePointYWithCompletion : completion)
    }
    unsafe fn subscribeAttributeWhitePointYWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWhitePointYWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorPointRXWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointRXWithCompletion : completion)
    }
    unsafe fn subscribeAttributeColorPointRXWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorPointRXWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorPointRYWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointRYWithCompletion : completion)
    }
    unsafe fn subscribeAttributeColorPointRYWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorPointRYWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorPointRIntensityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointRIntensityWithCompletion : completion)
    }
    unsafe fn subscribeAttributeColorPointRIntensityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorPointRIntensityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorPointGXWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointGXWithCompletion : completion)
    }
    unsafe fn subscribeAttributeColorPointGXWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorPointGXWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorPointGYWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointGYWithCompletion : completion)
    }
    unsafe fn subscribeAttributeColorPointGYWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorPointGYWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorPointGIntensityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointGIntensityWithCompletion : completion)
    }
    unsafe fn subscribeAttributeColorPointGIntensityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorPointGIntensityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorPointBXWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointBXWithCompletion : completion)
    }
    unsafe fn subscribeAttributeColorPointBXWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorPointBXWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorPointBYWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointBYWithCompletion : completion)
    }
    unsafe fn subscribeAttributeColorPointBYWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorPointBYWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorPointBIntensityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointBIntensityWithCompletion : completion)
    }
    unsafe fn subscribeAttributeColorPointBIntensityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorPointBIntensityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEnhancedCurrentHueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnhancedCurrentHueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeEnhancedCurrentHueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnhancedCurrentHueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEnhancedColorModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnhancedColorModeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeEnhancedColorModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnhancedColorModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorLoopActiveWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorLoopActiveWithCompletion : completion)
    }
    unsafe fn subscribeAttributeColorLoopActiveWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorLoopActiveWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorLoopDirectionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorLoopDirectionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeColorLoopDirectionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorLoopDirectionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorLoopTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorLoopTimeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeColorLoopTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorLoopTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorLoopStartEnhancedHueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorLoopStartEnhancedHueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeColorLoopStartEnhancedHueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorLoopStartEnhancedHueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorLoopStoredEnhancedHueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorLoopStoredEnhancedHueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeColorLoopStoredEnhancedHueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorLoopStoredEnhancedHueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorCapabilitiesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorCapabilitiesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeColorCapabilitiesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorCapabilitiesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorTempPhysicalMinMiredsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorTempPhysicalMinMiredsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeColorTempPhysicalMinMiredsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorTempPhysicalMinMiredsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorTempPhysicalMaxMiredsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorTempPhysicalMaxMiredsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeColorTempPhysicalMaxMiredsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorTempPhysicalMaxMiredsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCoupleColorTempToLevelMinMiredsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCoupleColorTempToLevelMinMiredsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCoupleColorTempToLevelMinMiredsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCoupleColorTempToLevelMinMiredsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStartUpColorTemperatureMiredsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStartUpColorTemperatureMiredsWithCompletion : completion)
    }
    unsafe fn writeAttributeStartUpColorTemperatureMiredsWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpColorTemperatureMiredsWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeStartUpColorTemperatureMiredsWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpColorTemperatureMiredsWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeStartUpColorTemperatureMiredsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStartUpColorTemperatureMiredsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeCurrentHueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeCurrentHueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentSaturationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeCurrentSaturationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRemainingTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeRemainingTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentXWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeCurrentXWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentYWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeCurrentYWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDriftCompensationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeDriftCompensationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCompensationTextWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeCompensationTextWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeColorTemperatureMiredsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorTemperatureMiredsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeColorModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOptionsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeOptionsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNumberOfPrimariesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeNumberOfPrimariesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePrimary1XWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary1XWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePrimary1YWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary1YWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePrimary1IntensityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary1IntensityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePrimary2XWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary2XWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePrimary2YWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary2YWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePrimary2IntensityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary2IntensityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePrimary3XWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary3XWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePrimary3YWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary3YWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePrimary3IntensityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary3IntensityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePrimary4XWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary4XWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePrimary4YWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary4YWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePrimary4IntensityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary4IntensityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePrimary5XWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary5XWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePrimary5YWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary5YWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePrimary5IntensityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary5IntensityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePrimary6XWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary6XWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePrimary6YWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary6YWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePrimary6IntensityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary6IntensityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeWhitePointXWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeWhitePointXWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeWhitePointYWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeWhitePointYWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeColorPointRXWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorPointRXWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeColorPointRYWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorPointRYWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeColorPointRIntensityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorPointRIntensityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeColorPointGXWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorPointGXWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeColorPointGYWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorPointGYWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeColorPointGIntensityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorPointGIntensityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeColorPointBXWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorPointBXWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeColorPointBYWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorPointBYWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeColorPointBIntensityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorPointBIntensityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEnhancedCurrentHueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeEnhancedCurrentHueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEnhancedColorModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeEnhancedColorModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeColorLoopActiveWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorLoopActiveWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeColorLoopDirectionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorLoopDirectionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeColorLoopTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorLoopTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeColorLoopStartEnhancedHueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorLoopStartEnhancedHueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeColorLoopStoredEnhancedHueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorLoopStoredEnhancedHueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeColorCapabilitiesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorCapabilitiesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeColorTempPhysicalMinMiredsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorTempPhysicalMinMiredsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeColorTempPhysicalMaxMiredsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorTempPhysicalMaxMiredsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCoupleColorTempToLevelMinMiredsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeCoupleColorTempToLevelMinMiredsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeStartUpColorTemperatureMiredsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeStartUpColorTemperatureMiredsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), new)
    }
}
impl MTRBaseClusterColorControl_Availability for MTRBaseClusterColorControl {}
pub trait MTRBaseClusterColorControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterBallastConfiguration(pub id);
impl std::ops::Deref for MTRBaseClusterBallastConfiguration {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterBallastConfiguration {}
impl MTRBaseClusterBallastConfiguration {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterBallastConfiguration {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterBallastConfiguration {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterBallastConfiguration, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterBallastConfiguration(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterBallastConfiguration" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterBallastConfiguration {}
impl INSObject for MTRBaseClusterBallastConfiguration {}
impl PNSObject for MTRBaseClusterBallastConfiguration {}
impl IMTRBaseClusterBallastConfiguration for MTRBaseClusterBallastConfiguration {}
pub trait IMTRBaseClusterBallastConfiguration: Sized + std::ops::Deref {
    unsafe fn readAttributePhysicalMinLevelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhysicalMinLevelWithCompletion : completion)
    }
    unsafe fn subscribeAttributePhysicalMinLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePhysicalMinLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePhysicalMaxLevelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhysicalMaxLevelWithCompletion : completion)
    }
    unsafe fn subscribeAttributePhysicalMaxLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePhysicalMaxLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBallastStatusWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBallastStatusWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBallastStatusWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBallastStatusWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinLevelWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinLevelWithCompletion : completion)
    }
    unsafe fn writeAttributeMinLevelWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinLevelWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeMinLevelWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinLevelWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeMinLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxLevelWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxLevelWithCompletion : completion)
    }
    unsafe fn writeAttributeMaxLevelWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMaxLevelWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeMaxLevelWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMaxLevelWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeMaxLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeIntrinsicBallastFactorWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeIntrinsicBallastFactorWithCompletion : completion)
    }
    unsafe fn writeAttributeIntrinsicBallastFactorWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeIntrinsicBallastFactorWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeIntrinsicBallastFactorWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeIntrinsicBallastFactorWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeIntrinsicBallastFactorWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeIntrinsicBallastFactorWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBallastFactorAdjustmentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBallastFactorAdjustmentWithCompletion : completion)
    }
    unsafe fn writeAttributeBallastFactorAdjustmentWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBallastFactorAdjustmentWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeBallastFactorAdjustmentWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBallastFactorAdjustmentWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeBallastFactorAdjustmentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBallastFactorAdjustmentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLampQuantityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLampQuantityWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLampQuantityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLampQuantityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLampTypeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLampTypeWithCompletion : completion)
    }
    unsafe fn writeAttributeLampTypeWithValue_completion_(
        &self,
        value: NSString,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampTypeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLampTypeWithValue_params_completion_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampTypeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLampTypeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLampTypeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLampManufacturerWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLampManufacturerWithCompletion : completion)
    }
    unsafe fn writeAttributeLampManufacturerWithValue_completion_(
        &self,
        value: NSString,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampManufacturerWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLampManufacturerWithValue_params_completion_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampManufacturerWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLampManufacturerWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLampManufacturerWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLampRatedHoursWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLampRatedHoursWithCompletion : completion)
    }
    unsafe fn writeAttributeLampRatedHoursWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampRatedHoursWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLampRatedHoursWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampRatedHoursWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLampRatedHoursWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLampRatedHoursWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLampBurnHoursWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLampBurnHoursWithCompletion : completion)
    }
    unsafe fn writeAttributeLampBurnHoursWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampBurnHoursWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLampBurnHoursWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampBurnHoursWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLampBurnHoursWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLampBurnHoursWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLampAlarmModeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLampAlarmModeWithCompletion : completion)
    }
    unsafe fn writeAttributeLampAlarmModeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampAlarmModeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLampAlarmModeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampAlarmModeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLampAlarmModeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLampAlarmModeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLampBurnHoursTripPointWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLampBurnHoursTripPointWithCompletion : completion)
    }
    unsafe fn writeAttributeLampBurnHoursTripPointWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampBurnHoursTripPointWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLampBurnHoursTripPointWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampBurnHoursTripPointWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLampBurnHoursTripPointWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLampBurnHoursTripPointWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributePhysicalMinLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributePhysicalMinLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePhysicalMaxLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributePhysicalMaxLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBallastStatusWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeBallastStatusWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeMinLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeMaxLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeIntrinsicBallastFactorWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeIntrinsicBallastFactorWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBallastFactorAdjustmentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeBallastFactorAdjustmentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLampQuantityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeLampQuantityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLampTypeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeLampTypeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLampManufacturerWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeLampManufacturerWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLampRatedHoursWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeLampRatedHoursWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLampBurnHoursWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeLampBurnHoursWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLampAlarmModeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeLampAlarmModeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLampBurnHoursTripPointWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeLampBurnHoursTripPointWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), new)
    }
}
impl MTRBaseClusterBallastConfiguration_Availability for MTRBaseClusterBallastConfiguration {}
pub trait MTRBaseClusterBallastConfiguration_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterIlluminanceMeasurement(pub id);
impl std::ops::Deref for MTRBaseClusterIlluminanceMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterIlluminanceMeasurement {}
impl MTRBaseClusterIlluminanceMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterIlluminanceMeasurement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterIlluminanceMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterIlluminanceMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterIlluminanceMeasurement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterIlluminanceMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterIlluminanceMeasurement {}
impl INSObject for MTRBaseClusterIlluminanceMeasurement {}
impl PNSObject for MTRBaseClusterIlluminanceMeasurement {}
impl IMTRBaseClusterIlluminanceMeasurement for MTRBaseClusterIlluminanceMeasurement {}
pub trait IMTRBaseClusterIlluminanceMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeToleranceWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeToleranceWithCompletion : completion)
    }
    unsafe fn subscribeAttributeToleranceWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeToleranceWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLightSensorTypeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLightSensorTypeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLightSensorTypeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLightSensorTypeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), readAttributeMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), readAttributeMinMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), readAttributeMaxMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeToleranceWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), readAttributeToleranceWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLightSensorTypeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), readAttributeLightSensorTypeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), new)
    }
}
impl MTRBaseClusterIlluminanceMeasurement_Availability for MTRBaseClusterIlluminanceMeasurement {}
pub trait MTRBaseClusterIlluminanceMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterTemperatureMeasurement(pub id);
impl std::ops::Deref for MTRBaseClusterTemperatureMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterTemperatureMeasurement {}
impl MTRBaseClusterTemperatureMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterTemperatureMeasurement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterTemperatureMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterTemperatureMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterTemperatureMeasurement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterTemperatureMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterTemperatureMeasurement {}
impl INSObject for MTRBaseClusterTemperatureMeasurement {}
impl PNSObject for MTRBaseClusterTemperatureMeasurement {}
impl IMTRBaseClusterTemperatureMeasurement for MTRBaseClusterTemperatureMeasurement {}
pub trait IMTRBaseClusterTemperatureMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeToleranceWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeToleranceWithCompletion : completion)
    }
    unsafe fn subscribeAttributeToleranceWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeToleranceWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureMeasurement").unwrap(), readAttributeMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureMeasurement").unwrap(), readAttributeMinMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureMeasurement").unwrap(), readAttributeMaxMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeToleranceWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureMeasurement").unwrap(), readAttributeToleranceWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureMeasurement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureMeasurement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureMeasurement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureMeasurement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureMeasurement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureMeasurement").unwrap(), new)
    }
}
impl MTRBaseClusterTemperatureMeasurement_Availability for MTRBaseClusterTemperatureMeasurement {}
pub trait MTRBaseClusterTemperatureMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterPressureMeasurement(pub id);
impl std::ops::Deref for MTRBaseClusterPressureMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterPressureMeasurement {}
impl MTRBaseClusterPressureMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterPressureMeasurement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterPressureMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterPressureMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterPressureMeasurement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterPressureMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterPressureMeasurement {}
impl INSObject for MTRBaseClusterPressureMeasurement {}
impl PNSObject for MTRBaseClusterPressureMeasurement {}
impl IMTRBaseClusterPressureMeasurement for MTRBaseClusterPressureMeasurement {}
pub trait IMTRBaseClusterPressureMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeToleranceWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeToleranceWithCompletion : completion)
    }
    unsafe fn subscribeAttributeToleranceWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeToleranceWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeScaledValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScaledValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeScaledValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeScaledValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinScaledValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinScaledValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinScaledValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinScaledValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxScaledValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxScaledValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxScaledValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxScaledValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeScaledToleranceWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScaledToleranceWithCompletion : completion)
    }
    unsafe fn subscribeAttributeScaledToleranceWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeScaledToleranceWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeScaleWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScaleWithCompletion : completion)
    }
    unsafe fn subscribeAttributeScaleWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeScaleWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeMinMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeMaxMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeToleranceWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeToleranceWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeScaledValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeScaledValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinScaledValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeMinScaledValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxScaledValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeMaxScaledValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeScaledToleranceWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeScaledToleranceWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeScaleWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeScaleWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), new)
    }
}
impl MTRBaseClusterPressureMeasurement_Availability for MTRBaseClusterPressureMeasurement {}
pub trait MTRBaseClusterPressureMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterFlowMeasurement(pub id);
impl std::ops::Deref for MTRBaseClusterFlowMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterFlowMeasurement {}
impl MTRBaseClusterFlowMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFlowMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterFlowMeasurement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterFlowMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterFlowMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterFlowMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterFlowMeasurement(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterFlowMeasurement")
        }
    }
}
impl IMTRCluster for MTRBaseClusterFlowMeasurement {}
impl INSObject for MTRBaseClusterFlowMeasurement {}
impl PNSObject for MTRBaseClusterFlowMeasurement {}
impl IMTRBaseClusterFlowMeasurement for MTRBaseClusterFlowMeasurement {}
pub trait IMTRBaseClusterFlowMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeToleranceWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeToleranceWithCompletion : completion)
    }
    unsafe fn subscribeAttributeToleranceWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeToleranceWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFlowMeasurement").unwrap(), readAttributeMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFlowMeasurement").unwrap(), readAttributeMinMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFlowMeasurement").unwrap(), readAttributeMaxMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeToleranceWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFlowMeasurement").unwrap(), readAttributeToleranceWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFlowMeasurement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFlowMeasurement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFlowMeasurement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFlowMeasurement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFlowMeasurement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFlowMeasurement").unwrap(), new)
    }
}
impl MTRBaseClusterFlowMeasurement_Availability for MTRBaseClusterFlowMeasurement {}
pub trait MTRBaseClusterFlowMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterRelativeHumidityMeasurement(pub id);
impl std::ops::Deref for MTRBaseClusterRelativeHumidityMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterRelativeHumidityMeasurement {}
impl MTRBaseClusterRelativeHumidityMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRelativeHumidityMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterRelativeHumidityMeasurement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterRelativeHumidityMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterRelativeHumidityMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterRelativeHumidityMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterRelativeHumidityMeasurement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterRelativeHumidityMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterRelativeHumidityMeasurement {}
impl INSObject for MTRBaseClusterRelativeHumidityMeasurement {}
impl PNSObject for MTRBaseClusterRelativeHumidityMeasurement {}
impl IMTRBaseClusterRelativeHumidityMeasurement for MTRBaseClusterRelativeHumidityMeasurement {}
pub trait IMTRBaseClusterRelativeHumidityMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeToleranceWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeToleranceWithCompletion : completion)
    }
    unsafe fn subscribeAttributeToleranceWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeToleranceWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRelativeHumidityMeasurement").unwrap(), readAttributeMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRelativeHumidityMeasurement").unwrap(), readAttributeMinMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRelativeHumidityMeasurement").unwrap(), readAttributeMaxMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeToleranceWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRelativeHumidityMeasurement").unwrap(), readAttributeToleranceWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRelativeHumidityMeasurement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRelativeHumidityMeasurement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRelativeHumidityMeasurement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRelativeHumidityMeasurement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRelativeHumidityMeasurement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRelativeHumidityMeasurement").unwrap(), new)
    }
}
impl MTRBaseClusterRelativeHumidityMeasurement_Availability
    for MTRBaseClusterRelativeHumidityMeasurement
{
}
pub trait MTRBaseClusterRelativeHumidityMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterOccupancySensing(pub id);
impl std::ops::Deref for MTRBaseClusterOccupancySensing {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterOccupancySensing {}
impl MTRBaseClusterOccupancySensing {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterOccupancySensing {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterOccupancySensing {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterOccupancySensing, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterOccupancySensing(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterOccupancySensing")
        }
    }
}
impl IMTRCluster for MTRBaseClusterOccupancySensing {}
impl INSObject for MTRBaseClusterOccupancySensing {}
impl PNSObject for MTRBaseClusterOccupancySensing {}
impl IMTRBaseClusterOccupancySensing for MTRBaseClusterOccupancySensing {}
pub trait IMTRBaseClusterOccupancySensing: Sized + std::ops::Deref {
    unsafe fn readAttributeOccupancyWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupancyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOccupancyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOccupancyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOccupancySensorTypeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupancySensorTypeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOccupancySensorTypeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOccupancySensorTypeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOccupancySensorTypeBitmapWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupancySensorTypeBitmapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOccupancySensorTypeBitmapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOccupancySensorTypeBitmapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeHoldTimeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHoldTimeWithCompletion : completion)
    }
    unsafe fn writeAttributeHoldTimeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeHoldTimeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeHoldTimeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeHoldTimeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeHoldTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHoldTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeHoldTimeLimitsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHoldTimeLimitsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeHoldTimeLimitsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHoldTimeLimitsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePIROccupiedToUnoccupiedDelayWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePIROccupiedToUnoccupiedDelayWithCompletion : completion)
    }
    unsafe fn writeAttributePIROccupiedToUnoccupiedDelayWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePIROccupiedToUnoccupiedDelayWithValue : value, completion : completion)
    }
    unsafe fn writeAttributePIROccupiedToUnoccupiedDelayWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePIROccupiedToUnoccupiedDelayWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributePIROccupiedToUnoccupiedDelayWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePIROccupiedToUnoccupiedDelayWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePIRUnoccupiedToOccupiedDelayWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePIRUnoccupiedToOccupiedDelayWithCompletion : completion)
    }
    unsafe fn writeAttributePIRUnoccupiedToOccupiedDelayWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePIRUnoccupiedToOccupiedDelayWithValue : value, completion : completion)
    }
    unsafe fn writeAttributePIRUnoccupiedToOccupiedDelayWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePIRUnoccupiedToOccupiedDelayWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributePIRUnoccupiedToOccupiedDelayWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePIRUnoccupiedToOccupiedDelayWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePIRUnoccupiedToOccupiedThresholdWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePIRUnoccupiedToOccupiedThresholdWithCompletion : completion)
    }
    unsafe fn writeAttributePIRUnoccupiedToOccupiedThresholdWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePIRUnoccupiedToOccupiedThresholdWithValue : value, completion : completion)
    }
    unsafe fn writeAttributePIRUnoccupiedToOccupiedThresholdWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePIRUnoccupiedToOccupiedThresholdWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributePIRUnoccupiedToOccupiedThresholdWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePIRUnoccupiedToOccupiedThresholdWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUltrasonicOccupiedToUnoccupiedDelayWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUltrasonicOccupiedToUnoccupiedDelayWithCompletion : completion)
    }
    unsafe fn writeAttributeUltrasonicOccupiedToUnoccupiedDelayWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUltrasonicOccupiedToUnoccupiedDelayWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeUltrasonicOccupiedToUnoccupiedDelayWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUltrasonicOccupiedToUnoccupiedDelayWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeUltrasonicOccupiedToUnoccupiedDelayWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUltrasonicOccupiedToUnoccupiedDelayWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUltrasonicUnoccupiedToOccupiedDelayWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUltrasonicUnoccupiedToOccupiedDelayWithCompletion : completion)
    }
    unsafe fn writeAttributeUltrasonicUnoccupiedToOccupiedDelayWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUltrasonicUnoccupiedToOccupiedDelayWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeUltrasonicUnoccupiedToOccupiedDelayWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUltrasonicUnoccupiedToOccupiedDelayWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeUltrasonicUnoccupiedToOccupiedDelayWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUltrasonicUnoccupiedToOccupiedDelayWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithCompletion : completion)
    }
    unsafe fn writeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePhysicalContactOccupiedToUnoccupiedDelayWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhysicalContactOccupiedToUnoccupiedDelayWithCompletion : completion)
    }
    unsafe fn writeAttributePhysicalContactOccupiedToUnoccupiedDelayWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePhysicalContactOccupiedToUnoccupiedDelayWithValue : value, completion : completion)
    }
    unsafe fn writeAttributePhysicalContactOccupiedToUnoccupiedDelayWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePhysicalContactOccupiedToUnoccupiedDelayWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributePhysicalContactOccupiedToUnoccupiedDelayWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePhysicalContactOccupiedToUnoccupiedDelayWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePhysicalContactUnoccupiedToOccupiedDelayWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhysicalContactUnoccupiedToOccupiedDelayWithCompletion : completion)
    }
    unsafe fn writeAttributePhysicalContactUnoccupiedToOccupiedDelayWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePhysicalContactUnoccupiedToOccupiedDelayWithValue : value, completion : completion)
    }
    unsafe fn writeAttributePhysicalContactUnoccupiedToOccupiedDelayWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePhysicalContactUnoccupiedToOccupiedDelayWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributePhysicalContactUnoccupiedToOccupiedDelayWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePhysicalContactUnoccupiedToOccupiedDelayWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithCompletion : completion)
    }
    unsafe fn writeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithValue : value, completion : completion)
    }
    unsafe fn writeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeOccupancyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeOccupancyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOccupancySensorTypeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeOccupancySensorTypeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOccupancySensorTypeBitmapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeOccupancySensorTypeBitmapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeHoldTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeHoldTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeHoldTimeLimitsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeHoldTimeLimitsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePIROccupiedToUnoccupiedDelayWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributePIROccupiedToUnoccupiedDelayWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePIRUnoccupiedToOccupiedDelayWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributePIRUnoccupiedToOccupiedDelayWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePIRUnoccupiedToOccupiedThresholdWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributePIRUnoccupiedToOccupiedThresholdWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUltrasonicOccupiedToUnoccupiedDelayWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeUltrasonicOccupiedToUnoccupiedDelayWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUltrasonicUnoccupiedToOccupiedDelayWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeUltrasonicUnoccupiedToOccupiedDelayWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePhysicalContactOccupiedToUnoccupiedDelayWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributePhysicalContactOccupiedToUnoccupiedDelayWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePhysicalContactUnoccupiedToOccupiedDelayWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributePhysicalContactUnoccupiedToOccupiedDelayWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), new)
    }
}
impl MTRBaseClusterOccupancySensing_Availability for MTRBaseClusterOccupancySensing {}
pub trait MTRBaseClusterOccupancySensing_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterCarbonMonoxideConcentrationMeasurement(pub id);
impl std::ops::Deref for MTRBaseClusterCarbonMonoxideConcentrationMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterCarbonMonoxideConcentrationMeasurement {}
impl MTRBaseClusterCarbonMonoxideConcentrationMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonMonoxideConcentrationMeasurement").unwrap(), alloc)
        })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterCarbonMonoxideConcentrationMeasurement {}
impl std::convert::TryFrom<MTRGenericBaseCluster>
    for MTRBaseClusterCarbonMonoxideConcentrationMeasurement
{
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterCarbonMonoxideConcentrationMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonMonoxideConcentrationMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterCarbonMonoxideConcentrationMeasurement(
                parent.0,
            ))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterCarbonMonoxideConcentrationMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterCarbonMonoxideConcentrationMeasurement {}
impl INSObject for MTRBaseClusterCarbonMonoxideConcentrationMeasurement {}
impl PNSObject for MTRBaseClusterCarbonMonoxideConcentrationMeasurement {}
impl IMTRBaseClusterCarbonMonoxideConcentrationMeasurement
    for MTRBaseClusterCarbonMonoxideConcentrationMeasurement
{
}
pub trait IMTRBaseClusterCarbonMonoxideConcentrationMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeakMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeakMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeakMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWindowWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeakMeasuredValueWindowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeakMeasuredValueWindowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWindowWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageMeasuredValueWindowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageMeasuredValueWindowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUncertaintyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUncertaintyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUncertaintyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUncertaintyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasurementUnitWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementUnitWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasurementUnitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementUnitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasurementMediumWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementMediumWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasurementMediumWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementMediumWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLevelValueWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLevelValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLevelValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonMonoxideConcentrationMeasurement").unwrap(), readAttributeMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonMonoxideConcentrationMeasurement").unwrap(), readAttributeMinMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonMonoxideConcentrationMeasurement").unwrap(), readAttributeMaxMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeakMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonMonoxideConcentrationMeasurement").unwrap(), readAttributePeakMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonMonoxideConcentrationMeasurement").unwrap(), readAttributePeakMeasuredValueWindowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonMonoxideConcentrationMeasurement").unwrap(), readAttributeAverageMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonMonoxideConcentrationMeasurement").unwrap(), readAttributeAverageMeasuredValueWindowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUncertaintyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonMonoxideConcentrationMeasurement").unwrap(), readAttributeUncertaintyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasurementUnitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonMonoxideConcentrationMeasurement").unwrap(), readAttributeMeasurementUnitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasurementMediumWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonMonoxideConcentrationMeasurement").unwrap(), readAttributeMeasurementMediumWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLevelValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonMonoxideConcentrationMeasurement").unwrap(), readAttributeLevelValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonMonoxideConcentrationMeasurement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonMonoxideConcentrationMeasurement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonMonoxideConcentrationMeasurement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonMonoxideConcentrationMeasurement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonMonoxideConcentrationMeasurement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonMonoxideConcentrationMeasurement").unwrap(), new)
    }
}
impl MTRBaseClusterCarbonMonoxideConcentrationMeasurement_Availability
    for MTRBaseClusterCarbonMonoxideConcentrationMeasurement
{
}
pub trait MTRBaseClusterCarbonMonoxideConcentrationMeasurement_Availability:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterCarbonDioxideConcentrationMeasurement(pub id);
impl std::ops::Deref for MTRBaseClusterCarbonDioxideConcentrationMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterCarbonDioxideConcentrationMeasurement {}
impl MTRBaseClusterCarbonDioxideConcentrationMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonDioxideConcentrationMeasurement").unwrap(), alloc)
        })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterCarbonDioxideConcentrationMeasurement {}
impl std::convert::TryFrom<MTRGenericBaseCluster>
    for MTRBaseClusterCarbonDioxideConcentrationMeasurement
{
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterCarbonDioxideConcentrationMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonDioxideConcentrationMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterCarbonDioxideConcentrationMeasurement(
                parent.0,
            ))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterCarbonDioxideConcentrationMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterCarbonDioxideConcentrationMeasurement {}
impl INSObject for MTRBaseClusterCarbonDioxideConcentrationMeasurement {}
impl PNSObject for MTRBaseClusterCarbonDioxideConcentrationMeasurement {}
impl IMTRBaseClusterCarbonDioxideConcentrationMeasurement
    for MTRBaseClusterCarbonDioxideConcentrationMeasurement
{
}
pub trait IMTRBaseClusterCarbonDioxideConcentrationMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeakMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeakMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeakMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWindowWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeakMeasuredValueWindowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeakMeasuredValueWindowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWindowWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageMeasuredValueWindowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageMeasuredValueWindowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUncertaintyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUncertaintyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUncertaintyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUncertaintyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasurementUnitWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementUnitWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasurementUnitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementUnitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasurementMediumWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementMediumWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasurementMediumWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementMediumWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLevelValueWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLevelValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLevelValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonDioxideConcentrationMeasurement").unwrap(), readAttributeMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonDioxideConcentrationMeasurement").unwrap(), readAttributeMinMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonDioxideConcentrationMeasurement").unwrap(), readAttributeMaxMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeakMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonDioxideConcentrationMeasurement").unwrap(), readAttributePeakMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonDioxideConcentrationMeasurement").unwrap(), readAttributePeakMeasuredValueWindowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonDioxideConcentrationMeasurement").unwrap(), readAttributeAverageMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonDioxideConcentrationMeasurement").unwrap(), readAttributeAverageMeasuredValueWindowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUncertaintyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonDioxideConcentrationMeasurement").unwrap(), readAttributeUncertaintyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasurementUnitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonDioxideConcentrationMeasurement").unwrap(), readAttributeMeasurementUnitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasurementMediumWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonDioxideConcentrationMeasurement").unwrap(), readAttributeMeasurementMediumWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLevelValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonDioxideConcentrationMeasurement").unwrap(), readAttributeLevelValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonDioxideConcentrationMeasurement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonDioxideConcentrationMeasurement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonDioxideConcentrationMeasurement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonDioxideConcentrationMeasurement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonDioxideConcentrationMeasurement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCarbonDioxideConcentrationMeasurement").unwrap(), new)
    }
}
impl MTRBaseClusterCarbonDioxideConcentrationMeasurement_Availability
    for MTRBaseClusterCarbonDioxideConcentrationMeasurement
{
}
pub trait MTRBaseClusterCarbonDioxideConcentrationMeasurement_Availability:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterNitrogenDioxideConcentrationMeasurement(pub id);
impl std::ops::Deref for MTRBaseClusterNitrogenDioxideConcentrationMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterNitrogenDioxideConcentrationMeasurement {}
impl MTRBaseClusterNitrogenDioxideConcentrationMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNitrogenDioxideConcentrationMeasurement").unwrap(), alloc)
        })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterNitrogenDioxideConcentrationMeasurement {}
impl std::convert::TryFrom<MTRGenericBaseCluster>
    for MTRBaseClusterNitrogenDioxideConcentrationMeasurement
{
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterNitrogenDioxideConcentrationMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterNitrogenDioxideConcentrationMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterNitrogenDioxideConcentrationMeasurement(
                parent.0,
            ))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterNitrogenDioxideConcentrationMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterNitrogenDioxideConcentrationMeasurement {}
impl INSObject for MTRBaseClusterNitrogenDioxideConcentrationMeasurement {}
impl PNSObject for MTRBaseClusterNitrogenDioxideConcentrationMeasurement {}
impl IMTRBaseClusterNitrogenDioxideConcentrationMeasurement
    for MTRBaseClusterNitrogenDioxideConcentrationMeasurement
{
}
pub trait IMTRBaseClusterNitrogenDioxideConcentrationMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeakMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeakMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeakMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWindowWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeakMeasuredValueWindowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeakMeasuredValueWindowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWindowWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageMeasuredValueWindowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageMeasuredValueWindowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUncertaintyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUncertaintyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUncertaintyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUncertaintyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasurementUnitWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementUnitWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasurementUnitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementUnitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasurementMediumWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementMediumWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasurementMediumWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementMediumWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLevelValueWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLevelValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLevelValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNitrogenDioxideConcentrationMeasurement").unwrap(), readAttributeMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNitrogenDioxideConcentrationMeasurement").unwrap(), readAttributeMinMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNitrogenDioxideConcentrationMeasurement").unwrap(), readAttributeMaxMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeakMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNitrogenDioxideConcentrationMeasurement").unwrap(), readAttributePeakMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNitrogenDioxideConcentrationMeasurement").unwrap(), readAttributePeakMeasuredValueWindowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNitrogenDioxideConcentrationMeasurement").unwrap(), readAttributeAverageMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNitrogenDioxideConcentrationMeasurement").unwrap(), readAttributeAverageMeasuredValueWindowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUncertaintyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNitrogenDioxideConcentrationMeasurement").unwrap(), readAttributeUncertaintyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasurementUnitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNitrogenDioxideConcentrationMeasurement").unwrap(), readAttributeMeasurementUnitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasurementMediumWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNitrogenDioxideConcentrationMeasurement").unwrap(), readAttributeMeasurementMediumWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLevelValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNitrogenDioxideConcentrationMeasurement").unwrap(), readAttributeLevelValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNitrogenDioxideConcentrationMeasurement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNitrogenDioxideConcentrationMeasurement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNitrogenDioxideConcentrationMeasurement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNitrogenDioxideConcentrationMeasurement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNitrogenDioxideConcentrationMeasurement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNitrogenDioxideConcentrationMeasurement").unwrap(), new)
    }
}
impl MTRBaseClusterNitrogenDioxideConcentrationMeasurement_Availability
    for MTRBaseClusterNitrogenDioxideConcentrationMeasurement
{
}
pub trait MTRBaseClusterNitrogenDioxideConcentrationMeasurement_Availability:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterOzoneConcentrationMeasurement(pub id);
impl std::ops::Deref for MTRBaseClusterOzoneConcentrationMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterOzoneConcentrationMeasurement {}
impl MTRBaseClusterOzoneConcentrationMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOzoneConcentrationMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterOzoneConcentrationMeasurement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterOzoneConcentrationMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterOzoneConcentrationMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterOzoneConcentrationMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterOzoneConcentrationMeasurement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterOzoneConcentrationMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterOzoneConcentrationMeasurement {}
impl INSObject for MTRBaseClusterOzoneConcentrationMeasurement {}
impl PNSObject for MTRBaseClusterOzoneConcentrationMeasurement {}
impl IMTRBaseClusterOzoneConcentrationMeasurement for MTRBaseClusterOzoneConcentrationMeasurement {}
pub trait IMTRBaseClusterOzoneConcentrationMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeakMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeakMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeakMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWindowWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeakMeasuredValueWindowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeakMeasuredValueWindowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWindowWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageMeasuredValueWindowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageMeasuredValueWindowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUncertaintyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUncertaintyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUncertaintyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUncertaintyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasurementUnitWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementUnitWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasurementUnitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementUnitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasurementMediumWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementMediumWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasurementMediumWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementMediumWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLevelValueWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLevelValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLevelValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOzoneConcentrationMeasurement").unwrap(), readAttributeMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOzoneConcentrationMeasurement").unwrap(), readAttributeMinMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOzoneConcentrationMeasurement").unwrap(), readAttributeMaxMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeakMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOzoneConcentrationMeasurement").unwrap(), readAttributePeakMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOzoneConcentrationMeasurement").unwrap(), readAttributePeakMeasuredValueWindowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOzoneConcentrationMeasurement").unwrap(), readAttributeAverageMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOzoneConcentrationMeasurement").unwrap(), readAttributeAverageMeasuredValueWindowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUncertaintyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOzoneConcentrationMeasurement").unwrap(), readAttributeUncertaintyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasurementUnitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOzoneConcentrationMeasurement").unwrap(), readAttributeMeasurementUnitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasurementMediumWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOzoneConcentrationMeasurement").unwrap(), readAttributeMeasurementMediumWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLevelValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOzoneConcentrationMeasurement").unwrap(), readAttributeLevelValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOzoneConcentrationMeasurement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOzoneConcentrationMeasurement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOzoneConcentrationMeasurement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOzoneConcentrationMeasurement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOzoneConcentrationMeasurement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOzoneConcentrationMeasurement").unwrap(), new)
    }
}
impl MTRBaseClusterOzoneConcentrationMeasurement_Availability
    for MTRBaseClusterOzoneConcentrationMeasurement
{
}
pub trait MTRBaseClusterOzoneConcentrationMeasurement_Availability:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterPM25ConcentrationMeasurement(pub id);
impl std::ops::Deref for MTRBaseClusterPM25ConcentrationMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterPM25ConcentrationMeasurement {}
impl MTRBaseClusterPM25ConcentrationMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM25ConcentrationMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterPM25ConcentrationMeasurement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterPM25ConcentrationMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterPM25ConcentrationMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterPM25ConcentrationMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterPM25ConcentrationMeasurement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterPM25ConcentrationMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterPM25ConcentrationMeasurement {}
impl INSObject for MTRBaseClusterPM25ConcentrationMeasurement {}
impl PNSObject for MTRBaseClusterPM25ConcentrationMeasurement {}
impl IMTRBaseClusterPM25ConcentrationMeasurement for MTRBaseClusterPM25ConcentrationMeasurement {}
pub trait IMTRBaseClusterPM25ConcentrationMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeakMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeakMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeakMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWindowWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeakMeasuredValueWindowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeakMeasuredValueWindowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWindowWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageMeasuredValueWindowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageMeasuredValueWindowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUncertaintyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUncertaintyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUncertaintyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUncertaintyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasurementUnitWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementUnitWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasurementUnitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementUnitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasurementMediumWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementMediumWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasurementMediumWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementMediumWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLevelValueWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLevelValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLevelValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM25ConcentrationMeasurement").unwrap(), readAttributeMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM25ConcentrationMeasurement").unwrap(), readAttributeMinMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM25ConcentrationMeasurement").unwrap(), readAttributeMaxMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeakMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM25ConcentrationMeasurement").unwrap(), readAttributePeakMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM25ConcentrationMeasurement").unwrap(), readAttributePeakMeasuredValueWindowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM25ConcentrationMeasurement").unwrap(), readAttributeAverageMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM25ConcentrationMeasurement").unwrap(), readAttributeAverageMeasuredValueWindowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUncertaintyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM25ConcentrationMeasurement").unwrap(), readAttributeUncertaintyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasurementUnitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM25ConcentrationMeasurement").unwrap(), readAttributeMeasurementUnitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasurementMediumWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM25ConcentrationMeasurement").unwrap(), readAttributeMeasurementMediumWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLevelValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM25ConcentrationMeasurement").unwrap(), readAttributeLevelValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM25ConcentrationMeasurement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM25ConcentrationMeasurement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM25ConcentrationMeasurement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM25ConcentrationMeasurement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM25ConcentrationMeasurement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM25ConcentrationMeasurement").unwrap(), new)
    }
}
impl MTRBaseClusterPM25ConcentrationMeasurement_Availability
    for MTRBaseClusterPM25ConcentrationMeasurement
{
}
pub trait MTRBaseClusterPM25ConcentrationMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterFormaldehydeConcentrationMeasurement(pub id);
impl std::ops::Deref for MTRBaseClusterFormaldehydeConcentrationMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterFormaldehydeConcentrationMeasurement {}
impl MTRBaseClusterFormaldehydeConcentrationMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFormaldehydeConcentrationMeasurement").unwrap(), alloc)
        })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterFormaldehydeConcentrationMeasurement {}
impl std::convert::TryFrom<MTRGenericBaseCluster>
    for MTRBaseClusterFormaldehydeConcentrationMeasurement
{
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterFormaldehydeConcentrationMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterFormaldehydeConcentrationMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterFormaldehydeConcentrationMeasurement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterFormaldehydeConcentrationMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterFormaldehydeConcentrationMeasurement {}
impl INSObject for MTRBaseClusterFormaldehydeConcentrationMeasurement {}
impl PNSObject for MTRBaseClusterFormaldehydeConcentrationMeasurement {}
impl IMTRBaseClusterFormaldehydeConcentrationMeasurement
    for MTRBaseClusterFormaldehydeConcentrationMeasurement
{
}
pub trait IMTRBaseClusterFormaldehydeConcentrationMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeakMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeakMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeakMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWindowWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeakMeasuredValueWindowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeakMeasuredValueWindowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWindowWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageMeasuredValueWindowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageMeasuredValueWindowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUncertaintyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUncertaintyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUncertaintyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUncertaintyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasurementUnitWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementUnitWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasurementUnitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementUnitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasurementMediumWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementMediumWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasurementMediumWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementMediumWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLevelValueWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLevelValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLevelValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFormaldehydeConcentrationMeasurement").unwrap(), readAttributeMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFormaldehydeConcentrationMeasurement").unwrap(), readAttributeMinMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFormaldehydeConcentrationMeasurement").unwrap(), readAttributeMaxMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeakMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFormaldehydeConcentrationMeasurement").unwrap(), readAttributePeakMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFormaldehydeConcentrationMeasurement").unwrap(), readAttributePeakMeasuredValueWindowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFormaldehydeConcentrationMeasurement").unwrap(), readAttributeAverageMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFormaldehydeConcentrationMeasurement").unwrap(), readAttributeAverageMeasuredValueWindowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUncertaintyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFormaldehydeConcentrationMeasurement").unwrap(), readAttributeUncertaintyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasurementUnitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFormaldehydeConcentrationMeasurement").unwrap(), readAttributeMeasurementUnitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasurementMediumWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFormaldehydeConcentrationMeasurement").unwrap(), readAttributeMeasurementMediumWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLevelValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFormaldehydeConcentrationMeasurement").unwrap(), readAttributeLevelValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFormaldehydeConcentrationMeasurement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFormaldehydeConcentrationMeasurement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFormaldehydeConcentrationMeasurement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFormaldehydeConcentrationMeasurement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFormaldehydeConcentrationMeasurement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFormaldehydeConcentrationMeasurement").unwrap(), new)
    }
}
impl MTRBaseClusterFormaldehydeConcentrationMeasurement_Availability
    for MTRBaseClusterFormaldehydeConcentrationMeasurement
{
}
pub trait MTRBaseClusterFormaldehydeConcentrationMeasurement_Availability:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterPM1ConcentrationMeasurement(pub id);
impl std::ops::Deref for MTRBaseClusterPM1ConcentrationMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterPM1ConcentrationMeasurement {}
impl MTRBaseClusterPM1ConcentrationMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM1ConcentrationMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterPM1ConcentrationMeasurement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterPM1ConcentrationMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterPM1ConcentrationMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterPM1ConcentrationMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterPM1ConcentrationMeasurement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterPM1ConcentrationMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterPM1ConcentrationMeasurement {}
impl INSObject for MTRBaseClusterPM1ConcentrationMeasurement {}
impl PNSObject for MTRBaseClusterPM1ConcentrationMeasurement {}
impl IMTRBaseClusterPM1ConcentrationMeasurement for MTRBaseClusterPM1ConcentrationMeasurement {}
pub trait IMTRBaseClusterPM1ConcentrationMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeakMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeakMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeakMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWindowWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeakMeasuredValueWindowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeakMeasuredValueWindowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWindowWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageMeasuredValueWindowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageMeasuredValueWindowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUncertaintyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUncertaintyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUncertaintyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUncertaintyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasurementUnitWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementUnitWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasurementUnitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementUnitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasurementMediumWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementMediumWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasurementMediumWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementMediumWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLevelValueWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLevelValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLevelValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM1ConcentrationMeasurement").unwrap(), readAttributeMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM1ConcentrationMeasurement").unwrap(), readAttributeMinMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM1ConcentrationMeasurement").unwrap(), readAttributeMaxMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeakMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM1ConcentrationMeasurement").unwrap(), readAttributePeakMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM1ConcentrationMeasurement").unwrap(), readAttributePeakMeasuredValueWindowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM1ConcentrationMeasurement").unwrap(), readAttributeAverageMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM1ConcentrationMeasurement").unwrap(), readAttributeAverageMeasuredValueWindowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUncertaintyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM1ConcentrationMeasurement").unwrap(), readAttributeUncertaintyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasurementUnitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM1ConcentrationMeasurement").unwrap(), readAttributeMeasurementUnitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasurementMediumWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM1ConcentrationMeasurement").unwrap(), readAttributeMeasurementMediumWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLevelValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM1ConcentrationMeasurement").unwrap(), readAttributeLevelValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM1ConcentrationMeasurement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM1ConcentrationMeasurement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM1ConcentrationMeasurement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM1ConcentrationMeasurement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM1ConcentrationMeasurement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM1ConcentrationMeasurement").unwrap(), new)
    }
}
impl MTRBaseClusterPM1ConcentrationMeasurement_Availability
    for MTRBaseClusterPM1ConcentrationMeasurement
{
}
pub trait MTRBaseClusterPM1ConcentrationMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterPM10ConcentrationMeasurement(pub id);
impl std::ops::Deref for MTRBaseClusterPM10ConcentrationMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterPM10ConcentrationMeasurement {}
impl MTRBaseClusterPM10ConcentrationMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM10ConcentrationMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterPM10ConcentrationMeasurement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterPM10ConcentrationMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterPM10ConcentrationMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterPM10ConcentrationMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterPM10ConcentrationMeasurement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterPM10ConcentrationMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterPM10ConcentrationMeasurement {}
impl INSObject for MTRBaseClusterPM10ConcentrationMeasurement {}
impl PNSObject for MTRBaseClusterPM10ConcentrationMeasurement {}
impl IMTRBaseClusterPM10ConcentrationMeasurement for MTRBaseClusterPM10ConcentrationMeasurement {}
pub trait IMTRBaseClusterPM10ConcentrationMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeakMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeakMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeakMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWindowWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeakMeasuredValueWindowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeakMeasuredValueWindowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWindowWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageMeasuredValueWindowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageMeasuredValueWindowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUncertaintyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUncertaintyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUncertaintyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUncertaintyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasurementUnitWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementUnitWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasurementUnitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementUnitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasurementMediumWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementMediumWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasurementMediumWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementMediumWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLevelValueWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLevelValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLevelValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM10ConcentrationMeasurement").unwrap(), readAttributeMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM10ConcentrationMeasurement").unwrap(), readAttributeMinMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM10ConcentrationMeasurement").unwrap(), readAttributeMaxMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeakMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM10ConcentrationMeasurement").unwrap(), readAttributePeakMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM10ConcentrationMeasurement").unwrap(), readAttributePeakMeasuredValueWindowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM10ConcentrationMeasurement").unwrap(), readAttributeAverageMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM10ConcentrationMeasurement").unwrap(), readAttributeAverageMeasuredValueWindowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUncertaintyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM10ConcentrationMeasurement").unwrap(), readAttributeUncertaintyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasurementUnitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM10ConcentrationMeasurement").unwrap(), readAttributeMeasurementUnitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasurementMediumWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM10ConcentrationMeasurement").unwrap(), readAttributeMeasurementMediumWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLevelValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM10ConcentrationMeasurement").unwrap(), readAttributeLevelValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM10ConcentrationMeasurement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM10ConcentrationMeasurement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM10ConcentrationMeasurement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM10ConcentrationMeasurement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM10ConcentrationMeasurement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPM10ConcentrationMeasurement").unwrap(), new)
    }
}
impl MTRBaseClusterPM10ConcentrationMeasurement_Availability
    for MTRBaseClusterPM10ConcentrationMeasurement
{
}
pub trait MTRBaseClusterPM10ConcentrationMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement(pub id);
impl std::ops::Deref for MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement {}
impl MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap(), alloc)
        })
    }
}
impl IMTRGenericBaseCluster
    for MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement
{
}
impl std::convert::TryFrom<MTRGenericBaseCluster>
    for MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement
{
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement {}
impl INSObject for MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement {}
impl PNSObject for MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement {}
impl IMTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement
    for MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement
{
}
pub trait IMTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement:
    Sized + std::ops::Deref
{
    unsafe fn readAttributeMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeakMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeakMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeakMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWindowWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeakMeasuredValueWindowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeakMeasuredValueWindowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWindowWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageMeasuredValueWindowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageMeasuredValueWindowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUncertaintyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUncertaintyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUncertaintyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUncertaintyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasurementUnitWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementUnitWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasurementUnitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementUnitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasurementMediumWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementMediumWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasurementMediumWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementMediumWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLevelValueWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLevelValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLevelValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap(), readAttributeMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap(), readAttributeMinMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap(), readAttributeMaxMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeakMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap(), readAttributePeakMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap(), readAttributePeakMeasuredValueWindowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap(), readAttributeAverageMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap(), readAttributeAverageMeasuredValueWindowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUncertaintyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap(), readAttributeUncertaintyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasurementUnitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap(), readAttributeMeasurementUnitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasurementMediumWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap(), readAttributeMeasurementMediumWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLevelValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap(), readAttributeLevelValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap(), new)
    }
}
impl MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement_Availability
    for MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement
{
}
pub trait MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement_Availability:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterRadonConcentrationMeasurement(pub id);
impl std::ops::Deref for MTRBaseClusterRadonConcentrationMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterRadonConcentrationMeasurement {}
impl MTRBaseClusterRadonConcentrationMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRadonConcentrationMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterRadonConcentrationMeasurement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterRadonConcentrationMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterRadonConcentrationMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterRadonConcentrationMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterRadonConcentrationMeasurement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterRadonConcentrationMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterRadonConcentrationMeasurement {}
impl INSObject for MTRBaseClusterRadonConcentrationMeasurement {}
impl PNSObject for MTRBaseClusterRadonConcentrationMeasurement {}
impl IMTRBaseClusterRadonConcentrationMeasurement for MTRBaseClusterRadonConcentrationMeasurement {}
pub trait IMTRBaseClusterRadonConcentrationMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeakMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeakMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeakMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWindowWithCompletion : completion)
    }
    unsafe fn subscribeAttributePeakMeasuredValueWindowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePeakMeasuredValueWindowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWindowWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageMeasuredValueWindowWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageMeasuredValueWindowWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUncertaintyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUncertaintyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeUncertaintyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUncertaintyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasurementUnitWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementUnitWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasurementUnitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementUnitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasurementMediumWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementMediumWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasurementMediumWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementMediumWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLevelValueWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLevelValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLevelValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRadonConcentrationMeasurement").unwrap(), readAttributeMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRadonConcentrationMeasurement").unwrap(), readAttributeMinMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRadonConcentrationMeasurement").unwrap(), readAttributeMaxMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeakMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRadonConcentrationMeasurement").unwrap(), readAttributePeakMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRadonConcentrationMeasurement").unwrap(), readAttributePeakMeasuredValueWindowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRadonConcentrationMeasurement").unwrap(), readAttributeAverageMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRadonConcentrationMeasurement").unwrap(), readAttributeAverageMeasuredValueWindowWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUncertaintyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRadonConcentrationMeasurement").unwrap(), readAttributeUncertaintyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasurementUnitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRadonConcentrationMeasurement").unwrap(), readAttributeMeasurementUnitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasurementMediumWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRadonConcentrationMeasurement").unwrap(), readAttributeMeasurementMediumWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLevelValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRadonConcentrationMeasurement").unwrap(), readAttributeLevelValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRadonConcentrationMeasurement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRadonConcentrationMeasurement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRadonConcentrationMeasurement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRadonConcentrationMeasurement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRadonConcentrationMeasurement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRadonConcentrationMeasurement").unwrap(), new)
    }
}
impl MTRBaseClusterRadonConcentrationMeasurement_Availability
    for MTRBaseClusterRadonConcentrationMeasurement
{
}
pub trait MTRBaseClusterRadonConcentrationMeasurement_Availability:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterSoilMeasurement(pub id);
impl std::ops::Deref for MTRBaseClusterSoilMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterSoilMeasurement {}
impl MTRBaseClusterSoilMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoilMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterSoilMeasurement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterSoilMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterSoilMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterSoilMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterSoilMeasurement(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterSoilMeasurement")
        }
    }
}
impl IMTRCluster for MTRBaseClusterSoilMeasurement {}
impl INSObject for MTRBaseClusterSoilMeasurement {}
impl PNSObject for MTRBaseClusterSoilMeasurement {}
impl IMTRBaseClusterSoilMeasurement for MTRBaseClusterSoilMeasurement {}
pub trait IMTRBaseClusterSoilMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeSoilMoistureMeasurementLimitsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoilMoistureMeasurementLimitsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSoilMoistureMeasurementLimitsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSoilMoistureMeasurementLimitsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSoilMoistureMeasuredValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoilMoistureMeasuredValueWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSoilMoistureMeasuredValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSoilMoistureMeasuredValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSoilMoistureMeasurementLimitsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoilMeasurement").unwrap(), readAttributeSoilMoistureMeasurementLimitsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSoilMoistureMeasuredValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoilMeasurement").unwrap(), readAttributeSoilMoistureMeasuredValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoilMeasurement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoilMeasurement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoilMeasurement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoilMeasurement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoilMeasurement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoilMeasurement").unwrap(), new)
    }
}
impl MTRBaseClusterSoilMeasurement_Availability for MTRBaseClusterSoilMeasurement {}
pub trait MTRBaseClusterSoilMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterWiFiNetworkManagement(pub id);
impl std::ops::Deref for MTRBaseClusterWiFiNetworkManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterWiFiNetworkManagement {}
impl MTRBaseClusterWiFiNetworkManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterWiFiNetworkManagement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterWiFiNetworkManagement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterWiFiNetworkManagement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkManagement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterWiFiNetworkManagement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterWiFiNetworkManagement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterWiFiNetworkManagement {}
impl INSObject for MTRBaseClusterWiFiNetworkManagement {}
impl PNSObject for MTRBaseClusterWiFiNetworkManagement {}
impl IMTRBaseClusterWiFiNetworkManagement for MTRBaseClusterWiFiNetworkManagement {}
pub trait IMTRBaseClusterWiFiNetworkManagement: Sized + std::ops::Deref {
    unsafe fn networkPassphraseRequestWithParams_completion_(
        &self,
        params: MTRWiFiNetworkManagementClusterNetworkPassphraseRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, networkPassphraseRequestWithParams : params, completion : completion)
    }
    unsafe fn networkPassphraseRequestWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, networkPassphraseRequestWithCompletion : completion)
    }
    unsafe fn readAttributeSSIDWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSSIDWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSSIDWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSSIDWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePassphraseSurrogateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePassphraseSurrogateWithCompletion : completion)
    }
    unsafe fn subscribeAttributePassphraseSurrogateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePassphraseSurrogateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSSIDWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkManagement").unwrap(), readAttributeSSIDWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePassphraseSurrogateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkManagement").unwrap(), readAttributePassphraseSurrogateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkManagement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkManagement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkManagement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkManagement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkManagement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkManagement").unwrap(), new)
    }
}
impl MTRBaseClusterWiFiNetworkManagement_Availability for MTRBaseClusterWiFiNetworkManagement {}
pub trait MTRBaseClusterWiFiNetworkManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterThreadBorderRouterManagement(pub id);
impl std::ops::Deref for MTRBaseClusterThreadBorderRouterManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterThreadBorderRouterManagement {}
impl MTRBaseClusterThreadBorderRouterManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadBorderRouterManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterThreadBorderRouterManagement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterThreadBorderRouterManagement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterThreadBorderRouterManagement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadBorderRouterManagement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterThreadBorderRouterManagement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterThreadBorderRouterManagement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterThreadBorderRouterManagement {}
impl INSObject for MTRBaseClusterThreadBorderRouterManagement {}
impl PNSObject for MTRBaseClusterThreadBorderRouterManagement {}
impl IMTRBaseClusterThreadBorderRouterManagement for MTRBaseClusterThreadBorderRouterManagement {}
pub trait IMTRBaseClusterThreadBorderRouterManagement: Sized + std::ops::Deref {
    unsafe fn getActiveDatasetRequestWithParams_completion_(
        &self,
        params: MTRThreadBorderRouterManagementClusterGetActiveDatasetRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getActiveDatasetRequestWithParams : params, completion : completion)
    }
    unsafe fn getActiveDatasetRequestWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getActiveDatasetRequestWithCompletion : completion)
    }
    unsafe fn getPendingDatasetRequestWithParams_completion_(
        &self,
        params: MTRThreadBorderRouterManagementClusterGetPendingDatasetRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getPendingDatasetRequestWithParams : params, completion : completion)
    }
    unsafe fn getPendingDatasetRequestWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getPendingDatasetRequestWithCompletion : completion)
    }
    unsafe fn setActiveDatasetRequestWithParams_completion_(
        &self,
        params: MTRThreadBorderRouterManagementClusterSetActiveDatasetRequestParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActiveDatasetRequestWithParams : params, completion : completion)
    }
    unsafe fn setPendingDatasetRequestWithParams_completion_(
        &self,
        params: MTRThreadBorderRouterManagementClusterSetPendingDatasetRequestParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPendingDatasetRequestWithParams : params, completion : completion)
    }
    unsafe fn readAttributeBorderRouterNameWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBorderRouterNameWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBorderRouterNameWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBorderRouterNameWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBorderAgentIDWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBorderAgentIDWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBorderAgentIDWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBorderAgentIDWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeThreadVersionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThreadVersionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeThreadVersionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeThreadVersionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInterfaceEnabledWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInterfaceEnabledWithCompletion : completion)
    }
    unsafe fn subscribeAttributeInterfaceEnabledWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInterfaceEnabledWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveDatasetTimestampWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveDatasetTimestampWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActiveDatasetTimestampWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveDatasetTimestampWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePendingDatasetTimestampWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePendingDatasetTimestampWithCompletion : completion)
    }
    unsafe fn subscribeAttributePendingDatasetTimestampWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePendingDatasetTimestampWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeBorderRouterNameWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadBorderRouterManagement").unwrap(), readAttributeBorderRouterNameWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBorderAgentIDWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadBorderRouterManagement").unwrap(), readAttributeBorderAgentIDWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeThreadVersionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadBorderRouterManagement").unwrap(), readAttributeThreadVersionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInterfaceEnabledWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadBorderRouterManagement").unwrap(), readAttributeInterfaceEnabledWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActiveDatasetTimestampWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadBorderRouterManagement").unwrap(), readAttributeActiveDatasetTimestampWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePendingDatasetTimestampWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadBorderRouterManagement").unwrap(), readAttributePendingDatasetTimestampWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadBorderRouterManagement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadBorderRouterManagement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadBorderRouterManagement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadBorderRouterManagement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadBorderRouterManagement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadBorderRouterManagement").unwrap(), new)
    }
}
impl MTRBaseClusterThreadBorderRouterManagement_Availability
    for MTRBaseClusterThreadBorderRouterManagement
{
}
pub trait MTRBaseClusterThreadBorderRouterManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterThreadNetworkDirectory(pub id);
impl std::ops::Deref for MTRBaseClusterThreadNetworkDirectory {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterThreadNetworkDirectory {}
impl MTRBaseClusterThreadNetworkDirectory {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDirectory").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterThreadNetworkDirectory {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterThreadNetworkDirectory {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterThreadNetworkDirectory, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDirectory").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterThreadNetworkDirectory(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterThreadNetworkDirectory" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterThreadNetworkDirectory {}
impl INSObject for MTRBaseClusterThreadNetworkDirectory {}
impl PNSObject for MTRBaseClusterThreadNetworkDirectory {}
impl IMTRBaseClusterThreadNetworkDirectory for MTRBaseClusterThreadNetworkDirectory {}
pub trait IMTRBaseClusterThreadNetworkDirectory: Sized + std::ops::Deref {
    unsafe fn addNetworkWithParams_completion_(
        &self,
        params: MTRThreadNetworkDirectoryClusterAddNetworkParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addNetworkWithParams : params, completion : completion)
    }
    unsafe fn removeNetworkWithParams_completion_(
        &self,
        params: MTRThreadNetworkDirectoryClusterRemoveNetworkParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeNetworkWithParams : params, completion : completion)
    }
    unsafe fn getOperationalDatasetWithParams_completion_(
        &self,
        params: MTRThreadNetworkDirectoryClusterGetOperationalDatasetParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getOperationalDatasetWithParams : params, completion : completion)
    }
    unsafe fn readAttributePreferredExtendedPanIDWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePreferredExtendedPanIDWithCompletion : completion)
    }
    unsafe fn writeAttributePreferredExtendedPanIDWithValue_completion_(
        &self,
        value: NSData,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePreferredExtendedPanIDWithValue : value, completion : completion)
    }
    unsafe fn writeAttributePreferredExtendedPanIDWithValue_params_completion_(
        &self,
        value: NSData,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePreferredExtendedPanIDWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributePreferredExtendedPanIDWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePreferredExtendedPanIDWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeThreadNetworksWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThreadNetworksWithCompletion : completion)
    }
    unsafe fn subscribeAttributeThreadNetworksWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeThreadNetworksWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeThreadNetworkTableSizeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThreadNetworkTableSizeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeThreadNetworkTableSizeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeThreadNetworkTableSizeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributePreferredExtendedPanIDWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDirectory").unwrap(), readAttributePreferredExtendedPanIDWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeThreadNetworksWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDirectory").unwrap(), readAttributeThreadNetworksWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeThreadNetworkTableSizeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDirectory").unwrap(), readAttributeThreadNetworkTableSizeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDirectory").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDirectory").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDirectory").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDirectory").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDirectory").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDirectory").unwrap(), new)
    }
}
impl MTRBaseClusterThreadNetworkDirectory_Availability for MTRBaseClusterThreadNetworkDirectory {}
pub trait MTRBaseClusterThreadNetworkDirectory_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterWakeOnLAN(pub id);
impl std::ops::Deref for MTRBaseClusterWakeOnLAN {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterWakeOnLAN {}
impl MTRBaseClusterWakeOnLAN {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWakeOnLAN").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterWakeOnLAN {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterWakeOnLAN {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterWakeOnLAN, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterWakeOnLAN").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterWakeOnLAN(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterWakeOnLAN")
        }
    }
}
impl IMTRCluster for MTRBaseClusterWakeOnLAN {}
impl INSObject for MTRBaseClusterWakeOnLAN {}
impl PNSObject for MTRBaseClusterWakeOnLAN {}
impl IMTRBaseClusterWakeOnLAN for MTRBaseClusterWakeOnLAN {}
pub trait IMTRBaseClusterWakeOnLAN: Sized + std::ops::Deref {
    unsafe fn readAttributeMACAddressWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMACAddressWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMACAddressWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMACAddressWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLinkLocalAddressWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLinkLocalAddressWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLinkLocalAddressWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLinkLocalAddressWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMACAddressWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWakeOnLAN").unwrap(), readAttributeMACAddressWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLinkLocalAddressWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWakeOnLAN").unwrap(), readAttributeLinkLocalAddressWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWakeOnLAN").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWakeOnLAN").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWakeOnLAN").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWakeOnLAN").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWakeOnLAN").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWakeOnLAN").unwrap(), new)
    }
}
impl MTRBaseClusterWakeOnLAN_Availability for MTRBaseClusterWakeOnLAN {}
pub trait MTRBaseClusterWakeOnLAN_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterChannel(pub id);
impl std::ops::Deref for MTRBaseClusterChannel {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterChannel {}
impl MTRBaseClusterChannel {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChannel").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterChannel {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterChannel {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterChannel, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterChannel").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterChannel(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterChannel")
        }
    }
}
impl IMTRCluster for MTRBaseClusterChannel {}
impl INSObject for MTRBaseClusterChannel {}
impl PNSObject for MTRBaseClusterChannel {}
impl IMTRBaseClusterChannel for MTRBaseClusterChannel {}
pub trait IMTRBaseClusterChannel: Sized + std::ops::Deref {
    unsafe fn changeChannelWithParams_completion_(
        &self,
        params: MTRChannelClusterChangeChannelParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeChannelWithParams : params, completion : completion)
    }
    unsafe fn changeChannelByNumberWithParams_completion_(
        &self,
        params: MTRChannelClusterChangeChannelByNumberParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeChannelByNumberWithParams : params, completion : completion)
    }
    unsafe fn skipChannelWithParams_completion_(
        &self,
        params: MTRChannelClusterSkipChannelParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, skipChannelWithParams : params, completion : completion)
    }
    unsafe fn getProgramGuideWithParams_completion_(
        &self,
        params: MTRChannelClusterGetProgramGuideParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getProgramGuideWithParams : params, completion : completion)
    }
    unsafe fn getProgramGuideWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getProgramGuideWithCompletion : completion)
    }
    unsafe fn recordProgramWithParams_completion_(
        &self,
        params: MTRChannelClusterRecordProgramParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, recordProgramWithParams : params, completion : completion)
    }
    unsafe fn cancelRecordProgramWithParams_completion_(
        &self,
        params: MTRChannelClusterCancelRecordProgramParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelRecordProgramWithParams : params, completion : completion)
    }
    unsafe fn readAttributeChannelListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeChannelListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeChannelListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeChannelListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLineupWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLineupWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLineupWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLineupWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentChannelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentChannelWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentChannelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentChannelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeChannelListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChannel").unwrap(), readAttributeChannelListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLineupWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChannel").unwrap(), readAttributeLineupWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentChannelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChannel").unwrap(), readAttributeCurrentChannelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChannel").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChannel").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChannel").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChannel").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChannel").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChannel").unwrap(), new)
    }
}
impl MTRBaseClusterChannel_Availability for MTRBaseClusterChannel {}
pub trait MTRBaseClusterChannel_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterTargetNavigator(pub id);
impl std::ops::Deref for MTRBaseClusterTargetNavigator {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterTargetNavigator {}
impl MTRBaseClusterTargetNavigator {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTargetNavigator").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterTargetNavigator {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterTargetNavigator {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterTargetNavigator, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterTargetNavigator").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterTargetNavigator(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterTargetNavigator")
        }
    }
}
impl IMTRCluster for MTRBaseClusterTargetNavigator {}
impl INSObject for MTRBaseClusterTargetNavigator {}
impl PNSObject for MTRBaseClusterTargetNavigator {}
impl IMTRBaseClusterTargetNavigator for MTRBaseClusterTargetNavigator {}
pub trait IMTRBaseClusterTargetNavigator: Sized + std::ops::Deref {
    unsafe fn navigateTargetWithParams_completion_(
        &self,
        params: MTRTargetNavigatorClusterNavigateTargetParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, navigateTargetWithParams : params, completion : completion)
    }
    unsafe fn readAttributeTargetListWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTargetListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTargetListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTargetListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentTargetWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentTargetWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentTargetWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentTargetWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeTargetListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTargetNavigator").unwrap(), readAttributeTargetListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentTargetWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTargetNavigator").unwrap(), readAttributeCurrentTargetWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTargetNavigator").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTargetNavigator").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTargetNavigator").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTargetNavigator").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTargetNavigator").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTargetNavigator").unwrap(), new)
    }
}
impl MTRBaseClusterTargetNavigator_Availability for MTRBaseClusterTargetNavigator {}
pub trait MTRBaseClusterTargetNavigator_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterMediaPlayback(pub id);
impl std::ops::Deref for MTRBaseClusterMediaPlayback {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterMediaPlayback {}
impl MTRBaseClusterMediaPlayback {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterMediaPlayback {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterMediaPlayback {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterMediaPlayback, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterMediaPlayback(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterMediaPlayback")
        }
    }
}
impl IMTRCluster for MTRBaseClusterMediaPlayback {}
impl INSObject for MTRBaseClusterMediaPlayback {}
impl PNSObject for MTRBaseClusterMediaPlayback {}
impl IMTRBaseClusterMediaPlayback for MTRBaseClusterMediaPlayback {}
pub trait IMTRBaseClusterMediaPlayback: Sized + std::ops::Deref {
    unsafe fn playWithParams_completion_(
        &self,
        params: MTRMediaPlaybackClusterPlayParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, playWithParams : params, completion : completion)
    }
    unsafe fn playWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, playWithCompletion : completion)
    }
    unsafe fn pauseWithParams_completion_(
        &self,
        params: MTRMediaPlaybackClusterPauseParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseWithParams : params, completion : completion)
    }
    unsafe fn pauseWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseWithCompletion : completion)
    }
    unsafe fn stopWithParams_completion_(
        &self,
        params: MTRMediaPlaybackClusterStopParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithParams : params, completion : completion)
    }
    unsafe fn stopWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithCompletion : completion)
    }
    unsafe fn startOverWithParams_completion_(
        &self,
        params: MTRMediaPlaybackClusterStartOverParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startOverWithParams : params, completion : completion)
    }
    unsafe fn startOverWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startOverWithCompletion : completion)
    }
    unsafe fn previousWithParams_completion_(
        &self,
        params: MTRMediaPlaybackClusterPreviousParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, previousWithParams : params, completion : completion)
    }
    unsafe fn previousWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, previousWithCompletion : completion)
    }
    unsafe fn nextWithParams_completion_(
        &self,
        params: MTRMediaPlaybackClusterNextParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, nextWithParams : params, completion : completion)
    }
    unsafe fn nextWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, nextWithCompletion : completion)
    }
    unsafe fn rewindWithParams_completion_(
        &self,
        params: MTRMediaPlaybackClusterRewindParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rewindWithParams : params, completion : completion)
    }
    unsafe fn rewindWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rewindWithCompletion : completion)
    }
    unsafe fn fastForwardWithParams_completion_(
        &self,
        params: MTRMediaPlaybackClusterFastForwardParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fastForwardWithParams : params, completion : completion)
    }
    unsafe fn fastForwardWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fastForwardWithCompletion : completion)
    }
    unsafe fn skipForwardWithParams_completion_(
        &self,
        params: MTRMediaPlaybackClusterSkipForwardParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, skipForwardWithParams : params, completion : completion)
    }
    unsafe fn skipBackwardWithParams_completion_(
        &self,
        params: MTRMediaPlaybackClusterSkipBackwardParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, skipBackwardWithParams : params, completion : completion)
    }
    unsafe fn seekWithParams_completion_(
        &self,
        params: MTRMediaPlaybackClusterSeekParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, seekWithParams : params, completion : completion)
    }
    unsafe fn activateAudioTrackWithParams_completion_(
        &self,
        params: MTRMediaPlaybackClusterActivateAudioTrackParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, activateAudioTrackWithParams : params, completion : completion)
    }
    unsafe fn activateTextTrackWithParams_completion_(
        &self,
        params: MTRMediaPlaybackClusterActivateTextTrackParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, activateTextTrackWithParams : params, completion : completion)
    }
    unsafe fn deactivateTextTrackWithParams_completion_(
        &self,
        params: MTRMediaPlaybackClusterDeactivateTextTrackParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deactivateTextTrackWithParams : params, completion : completion)
    }
    unsafe fn deactivateTextTrackWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deactivateTextTrackWithCompletion : completion)
    }
    unsafe fn readAttributeCurrentStateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStartTimeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStartTimeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeStartTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStartTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDurationWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDurationWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDurationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDurationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSampledPositionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSampledPositionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSampledPositionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSampledPositionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePlaybackSpeedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePlaybackSpeedWithCompletion : completion)
    }
    unsafe fn subscribeAttributePlaybackSpeedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePlaybackSpeedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSeekRangeEndWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSeekRangeEndWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSeekRangeEndWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSeekRangeEndWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSeekRangeStartWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSeekRangeStartWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSeekRangeStartWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSeekRangeStartWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveAudioTrackWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveAudioTrackWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActiveAudioTrackWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveAudioTrackWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAvailableAudioTracksWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAvailableAudioTracksWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAvailableAudioTracksWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAvailableAudioTracksWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveTextTrackWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveTextTrackWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActiveTextTrackWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveTextTrackWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAvailableTextTracksWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAvailableTextTracksWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAvailableTextTracksWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAvailableTextTracksWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeCurrentStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeCurrentStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeStartTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeStartTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDurationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeDurationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSampledPositionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeSampledPositionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePlaybackSpeedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributePlaybackSpeedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSeekRangeEndWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeSeekRangeEndWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSeekRangeStartWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeSeekRangeStartWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActiveAudioTrackWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeActiveAudioTrackWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAvailableAudioTracksWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeAvailableAudioTracksWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActiveTextTrackWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeActiveTextTrackWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAvailableTextTracksWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeAvailableTextTracksWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), new)
    }
}
impl MTRBaseClusterMediaPlayback_Availability for MTRBaseClusterMediaPlayback {}
pub trait MTRBaseClusterMediaPlayback_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterMediaInput(pub id);
impl std::ops::Deref for MTRBaseClusterMediaInput {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterMediaInput {}
impl MTRBaseClusterMediaInput {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaInput").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterMediaInput {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterMediaInput {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterMediaInput, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaInput").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterMediaInput(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterMediaInput")
        }
    }
}
impl IMTRCluster for MTRBaseClusterMediaInput {}
impl INSObject for MTRBaseClusterMediaInput {}
impl PNSObject for MTRBaseClusterMediaInput {}
impl IMTRBaseClusterMediaInput for MTRBaseClusterMediaInput {}
pub trait IMTRBaseClusterMediaInput: Sized + std::ops::Deref {
    unsafe fn selectInputWithParams_completion_(
        &self,
        params: MTRMediaInputClusterSelectInputParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, selectInputWithParams : params, completion : completion)
    }
    unsafe fn showInputStatusWithParams_completion_(
        &self,
        params: MTRMediaInputClusterShowInputStatusParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, showInputStatusWithParams : params, completion : completion)
    }
    unsafe fn showInputStatusWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, showInputStatusWithCompletion : completion)
    }
    unsafe fn hideInputStatusWithParams_completion_(
        &self,
        params: MTRMediaInputClusterHideInputStatusParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hideInputStatusWithParams : params, completion : completion)
    }
    unsafe fn hideInputStatusWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hideInputStatusWithCompletion : completion)
    }
    unsafe fn renameInputWithParams_completion_(
        &self,
        params: MTRMediaInputClusterRenameInputParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, renameInputWithParams : params, completion : completion)
    }
    unsafe fn readAttributeInputListWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInputListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeInputListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInputListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentInputWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentInputWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentInputWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentInputWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeInputListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaInput").unwrap(), readAttributeInputListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentInputWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaInput").unwrap(), readAttributeCurrentInputWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaInput").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaInput").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaInput").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaInput").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaInput").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaInput").unwrap(), new)
    }
}
impl MTRBaseClusterMediaInput_Availability for MTRBaseClusterMediaInput {}
pub trait MTRBaseClusterMediaInput_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterLowPower(pub id);
impl std::ops::Deref for MTRBaseClusterLowPower {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterLowPower {}
impl MTRBaseClusterLowPower {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLowPower").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterLowPower {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterLowPower {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterLowPower, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterLowPower").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterLowPower(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterLowPower")
        }
    }
}
impl IMTRCluster for MTRBaseClusterLowPower {}
impl INSObject for MTRBaseClusterLowPower {}
impl PNSObject for MTRBaseClusterLowPower {}
impl IMTRBaseClusterLowPower for MTRBaseClusterLowPower {}
pub trait IMTRBaseClusterLowPower: Sized + std::ops::Deref {
    unsafe fn sleepWithParams_completion_(
        &self,
        params: MTRLowPowerClusterSleepParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sleepWithParams : params, completion : completion)
    }
    unsafe fn sleepWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sleepWithCompletion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLowPower").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLowPower").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLowPower").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLowPower").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLowPower").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLowPower").unwrap(), new)
    }
}
impl MTRBaseClusterLowPower_Availability for MTRBaseClusterLowPower {}
pub trait MTRBaseClusterLowPower_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterKeypadInput(pub id);
impl std::ops::Deref for MTRBaseClusterKeypadInput {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterKeypadInput {}
impl MTRBaseClusterKeypadInput {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterKeypadInput").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterKeypadInput {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterKeypadInput {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterKeypadInput, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterKeypadInput").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterKeypadInput(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterKeypadInput")
        }
    }
}
impl IMTRCluster for MTRBaseClusterKeypadInput {}
impl INSObject for MTRBaseClusterKeypadInput {}
impl PNSObject for MTRBaseClusterKeypadInput {}
impl IMTRBaseClusterKeypadInput for MTRBaseClusterKeypadInput {}
pub trait IMTRBaseClusterKeypadInput: Sized + std::ops::Deref {
    unsafe fn sendKeyWithParams_completion_(
        &self,
        params: MTRKeypadInputClusterSendKeyParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sendKeyWithParams : params, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterKeypadInput").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterKeypadInput").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterKeypadInput").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterKeypadInput").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterKeypadInput").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterKeypadInput").unwrap(), new)
    }
}
impl MTRBaseClusterKeypadInput_Availability for MTRBaseClusterKeypadInput {}
pub trait MTRBaseClusterKeypadInput_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterContentLauncher(pub id);
impl std::ops::Deref for MTRBaseClusterContentLauncher {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterContentLauncher {}
impl MTRBaseClusterContentLauncher {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentLauncher").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterContentLauncher {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterContentLauncher {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterContentLauncher, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterContentLauncher").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterContentLauncher(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterContentLauncher")
        }
    }
}
impl IMTRCluster for MTRBaseClusterContentLauncher {}
impl INSObject for MTRBaseClusterContentLauncher {}
impl PNSObject for MTRBaseClusterContentLauncher {}
impl IMTRBaseClusterContentLauncher for MTRBaseClusterContentLauncher {}
pub trait IMTRBaseClusterContentLauncher: Sized + std::ops::Deref {
    unsafe fn launchContentWithParams_completion_(
        &self,
        params: MTRContentLauncherClusterLaunchContentParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, launchContentWithParams : params, completion : completion)
    }
    unsafe fn launchURLWithParams_completion_(
        &self,
        params: MTRContentLauncherClusterLaunchURLParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, launchURLWithParams : params, completion : completion)
    }
    unsafe fn readAttributeAcceptHeaderWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptHeaderWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptHeaderWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptHeaderWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedStreamingProtocolsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedStreamingProtocolsWithCompletion : completion)
    }
    unsafe fn writeAttributeSupportedStreamingProtocolsWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSupportedStreamingProtocolsWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeSupportedStreamingProtocolsWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSupportedStreamingProtocolsWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeSupportedStreamingProtocolsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedStreamingProtocolsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeAcceptHeaderWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentLauncher").unwrap(), readAttributeAcceptHeaderWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSupportedStreamingProtocolsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentLauncher").unwrap(), readAttributeSupportedStreamingProtocolsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentLauncher").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentLauncher").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentLauncher").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentLauncher").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentLauncher").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentLauncher").unwrap(), new)
    }
}
impl MTRBaseClusterContentLauncher_Availability for MTRBaseClusterContentLauncher {}
pub trait MTRBaseClusterContentLauncher_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterAudioOutput(pub id);
impl std::ops::Deref for MTRBaseClusterAudioOutput {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterAudioOutput {}
impl MTRBaseClusterAudioOutput {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAudioOutput").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterAudioOutput {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterAudioOutput {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterAudioOutput, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterAudioOutput").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterAudioOutput(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterAudioOutput")
        }
    }
}
impl IMTRCluster for MTRBaseClusterAudioOutput {}
impl INSObject for MTRBaseClusterAudioOutput {}
impl PNSObject for MTRBaseClusterAudioOutput {}
impl IMTRBaseClusterAudioOutput for MTRBaseClusterAudioOutput {}
pub trait IMTRBaseClusterAudioOutput: Sized + std::ops::Deref {
    unsafe fn selectOutputWithParams_completion_(
        &self,
        params: MTRAudioOutputClusterSelectOutputParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, selectOutputWithParams : params, completion : completion)
    }
    unsafe fn renameOutputWithParams_completion_(
        &self,
        params: MTRAudioOutputClusterRenameOutputParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, renameOutputWithParams : params, completion : completion)
    }
    unsafe fn readAttributeOutputListWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOutputListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOutputListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOutputListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentOutputWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentOutputWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentOutputWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentOutputWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeOutputListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAudioOutput").unwrap(), readAttributeOutputListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentOutputWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAudioOutput").unwrap(), readAttributeCurrentOutputWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAudioOutput").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAudioOutput").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAudioOutput").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAudioOutput").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAudioOutput").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAudioOutput").unwrap(), new)
    }
}
impl MTRBaseClusterAudioOutput_Availability for MTRBaseClusterAudioOutput {}
pub trait MTRBaseClusterAudioOutput_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterApplicationLauncher(pub id);
impl std::ops::Deref for MTRBaseClusterApplicationLauncher {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterApplicationLauncher {}
impl MTRBaseClusterApplicationLauncher {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationLauncher").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterApplicationLauncher {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterApplicationLauncher {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterApplicationLauncher, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationLauncher").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterApplicationLauncher(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterApplicationLauncher" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterApplicationLauncher {}
impl INSObject for MTRBaseClusterApplicationLauncher {}
impl PNSObject for MTRBaseClusterApplicationLauncher {}
impl IMTRBaseClusterApplicationLauncher for MTRBaseClusterApplicationLauncher {}
pub trait IMTRBaseClusterApplicationLauncher: Sized + std::ops::Deref {
    unsafe fn launchAppWithParams_completion_(
        &self,
        params: MTRApplicationLauncherClusterLaunchAppParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, launchAppWithParams : params, completion : completion)
    }
    unsafe fn launchAppWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, launchAppWithCompletion : completion)
    }
    unsafe fn stopAppWithParams_completion_(
        &self,
        params: MTRApplicationLauncherClusterStopAppParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopAppWithParams : params, completion : completion)
    }
    unsafe fn stopAppWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopAppWithCompletion : completion)
    }
    unsafe fn hideAppWithParams_completion_(
        &self,
        params: MTRApplicationLauncherClusterHideAppParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hideAppWithParams : params, completion : completion)
    }
    unsafe fn hideAppWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hideAppWithCompletion : completion)
    }
    unsafe fn readAttributeCatalogListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCatalogListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCatalogListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCatalogListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentAppWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentAppWithCompletion : completion)
    }
    unsafe fn writeAttributeCurrentAppWithValue_completion_(
        &self,
        value: MTRApplicationLauncherClusterApplicationEPStruct,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCurrentAppWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeCurrentAppWithValue_params_completion_(
        &self,
        value: MTRApplicationLauncherClusterApplicationEPStruct,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCurrentAppWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeCurrentAppWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentAppWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeCatalogListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationLauncher").unwrap(), readAttributeCatalogListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentAppWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationLauncher").unwrap(), readAttributeCurrentAppWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationLauncher").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationLauncher").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationLauncher").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationLauncher").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationLauncher").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationLauncher").unwrap(), new)
    }
}
impl MTRBaseClusterApplicationLauncher_Availability for MTRBaseClusterApplicationLauncher {}
pub trait MTRBaseClusterApplicationLauncher_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterApplicationBasic(pub id);
impl std::ops::Deref for MTRBaseClusterApplicationBasic {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterApplicationBasic {}
impl MTRBaseClusterApplicationBasic {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterApplicationBasic {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterApplicationBasic {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterApplicationBasic, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterApplicationBasic(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterApplicationBasic")
        }
    }
}
impl IMTRCluster for MTRBaseClusterApplicationBasic {}
impl INSObject for MTRBaseClusterApplicationBasic {}
impl PNSObject for MTRBaseClusterApplicationBasic {}
impl IMTRBaseClusterApplicationBasic for MTRBaseClusterApplicationBasic {}
pub trait IMTRBaseClusterApplicationBasic: Sized + std::ops::Deref {
    unsafe fn readAttributeVendorNameWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVendorNameWithCompletion : completion)
    }
    unsafe fn subscribeAttributeVendorNameWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeVendorNameWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeVendorIDWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVendorIDWithCompletion : completion)
    }
    unsafe fn subscribeAttributeVendorIDWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeVendorIDWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeApplicationNameWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApplicationNameWithCompletion : completion)
    }
    unsafe fn subscribeAttributeApplicationNameWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeApplicationNameWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProductIDWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductIDWithCompletion : completion)
    }
    unsafe fn subscribeAttributeProductIDWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProductIDWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeApplicationWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApplicationWithCompletion : completion)
    }
    unsafe fn subscribeAttributeApplicationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeApplicationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStatusWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStatusWithCompletion : completion)
    }
    unsafe fn subscribeAttributeStatusWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStatusWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeApplicationVersionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApplicationVersionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeApplicationVersionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeApplicationVersionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAllowedVendorListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAllowedVendorListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAllowedVendorListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAllowedVendorListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeVendorNameWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeVendorNameWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeVendorIDWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeVendorIDWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeApplicationNameWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeApplicationNameWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeProductIDWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeProductIDWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeApplicationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeApplicationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeStatusWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeStatusWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeApplicationVersionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeApplicationVersionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAllowedVendorListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeAllowedVendorListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), new)
    }
}
impl MTRBaseClusterApplicationBasic_Availability for MTRBaseClusterApplicationBasic {}
pub trait MTRBaseClusterApplicationBasic_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterAccountLogin(pub id);
impl std::ops::Deref for MTRBaseClusterAccountLogin {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterAccountLogin {}
impl MTRBaseClusterAccountLogin {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccountLogin").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterAccountLogin {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterAccountLogin {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterAccountLogin, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterAccountLogin").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterAccountLogin(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterAccountLogin")
        }
    }
}
impl IMTRCluster for MTRBaseClusterAccountLogin {}
impl INSObject for MTRBaseClusterAccountLogin {}
impl PNSObject for MTRBaseClusterAccountLogin {}
impl IMTRBaseClusterAccountLogin for MTRBaseClusterAccountLogin {}
pub trait IMTRBaseClusterAccountLogin: Sized + std::ops::Deref {
    unsafe fn getSetupPINWithParams_completion_(
        &self,
        params: MTRAccountLoginClusterGetSetupPINParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getSetupPINWithParams : params, completion : completion)
    }
    unsafe fn loginWithParams_completion_(
        &self,
        params: MTRAccountLoginClusterLoginParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, loginWithParams : params, completion : completion)
    }
    unsafe fn logoutWithParams_completion_(
        &self,
        params: MTRAccountLoginClusterLogoutParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, logoutWithParams : params, completion : completion)
    }
    unsafe fn logoutWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, logoutWithCompletion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccountLogin").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccountLogin").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccountLogin").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccountLogin").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccountLogin").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccountLogin").unwrap(), new)
    }
}
impl MTRBaseClusterAccountLogin_Availability for MTRBaseClusterAccountLogin {}
pub trait MTRBaseClusterAccountLogin_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterContentControl(pub id);
impl std::ops::Deref for MTRBaseClusterContentControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterContentControl {}
impl MTRBaseClusterContentControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentControl").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterContentControl {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterContentControl {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterContentControl, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterContentControl").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterContentControl(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterContentControl")
        }
    }
}
impl IMTRCluster for MTRBaseClusterContentControl {}
impl INSObject for MTRBaseClusterContentControl {}
impl PNSObject for MTRBaseClusterContentControl {}
impl IMTRBaseClusterContentControl for MTRBaseClusterContentControl {}
pub trait IMTRBaseClusterContentControl: Sized + std::ops::Deref {
    unsafe fn updatePINWithParams_completion_(
        &self,
        params: MTRContentControlClusterUpdatePINParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updatePINWithParams : params, completion : completion)
    }
    unsafe fn resetPINWithParams_completion_(
        &self,
        params: MTRContentControlClusterResetPINParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetPINWithParams : params, completion : completion)
    }
    unsafe fn resetPINWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetPINWithCompletion : completion)
    }
    unsafe fn enableWithParams_completion_(
        &self,
        params: MTRContentControlClusterEnableParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enableWithParams : params, completion : completion)
    }
    unsafe fn enableWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enableWithCompletion : completion)
    }
    unsafe fn disableWithParams_completion_(
        &self,
        params: MTRContentControlClusterDisableParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, disableWithParams : params, completion : completion)
    }
    unsafe fn disableWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, disableWithCompletion : completion)
    }
    unsafe fn addBonusTimeWithParams_completion_(
        &self,
        params: MTRContentControlClusterAddBonusTimeParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addBonusTimeWithParams : params, completion : completion)
    }
    unsafe fn addBonusTimeWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addBonusTimeWithCompletion : completion)
    }
    unsafe fn setScreenDailyTimeWithParams_completion_(
        &self,
        params: MTRContentControlClusterSetScreenDailyTimeParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setScreenDailyTimeWithParams : params, completion : completion)
    }
    unsafe fn blockUnratedContentWithParams_completion_(
        &self,
        params: MTRContentControlClusterBlockUnratedContentParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, blockUnratedContentWithParams : params, completion : completion)
    }
    unsafe fn blockUnratedContentWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, blockUnratedContentWithCompletion : completion)
    }
    unsafe fn unblockUnratedContentWithParams_completion_(
        &self,
        params: MTRContentControlClusterUnblockUnratedContentParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unblockUnratedContentWithParams : params, completion : completion)
    }
    unsafe fn unblockUnratedContentWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unblockUnratedContentWithCompletion : completion)
    }
    unsafe fn setOnDemandRatingThresholdWithParams_completion_(
        &self,
        params: MTRContentControlClusterSetOnDemandRatingThresholdParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOnDemandRatingThresholdWithParams : params, completion : completion)
    }
    unsafe fn setScheduledContentRatingThresholdWithParams_completion_(
        &self,
        params: MTRContentControlClusterSetScheduledContentRatingThresholdParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setScheduledContentRatingThresholdWithParams : params, completion : completion)
    }
    unsafe fn readAttributeEnabledWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnabledWithCompletion : completion)
    }
    unsafe fn subscribeAttributeEnabledWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnabledWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOnDemandRatingsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnDemandRatingsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOnDemandRatingsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOnDemandRatingsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOnDemandRatingThresholdWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnDemandRatingThresholdWithCompletion : completion)
    }
    unsafe fn subscribeAttributeOnDemandRatingThresholdWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOnDemandRatingThresholdWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeScheduledContentRatingsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScheduledContentRatingsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeScheduledContentRatingsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeScheduledContentRatingsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeScheduledContentRatingThresholdWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScheduledContentRatingThresholdWithCompletion : completion)
    }
    unsafe fn subscribeAttributeScheduledContentRatingThresholdWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeScheduledContentRatingThresholdWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeScreenDailyTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScreenDailyTimeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeScreenDailyTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeScreenDailyTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRemainingScreenTimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRemainingScreenTimeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRemainingScreenTimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRemainingScreenTimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBlockUnratedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBlockUnratedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBlockUnratedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBlockUnratedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeEnabledWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentControl").unwrap(), readAttributeEnabledWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOnDemandRatingsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentControl").unwrap(), readAttributeOnDemandRatingsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOnDemandRatingThresholdWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentControl").unwrap(), readAttributeOnDemandRatingThresholdWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeScheduledContentRatingsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentControl").unwrap(), readAttributeScheduledContentRatingsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeScheduledContentRatingThresholdWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentControl").unwrap(), readAttributeScheduledContentRatingThresholdWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeScreenDailyTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentControl").unwrap(), readAttributeScreenDailyTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRemainingScreenTimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentControl").unwrap(), readAttributeRemainingScreenTimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBlockUnratedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentControl").unwrap(), readAttributeBlockUnratedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentControl").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentControl").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentControl").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentControl").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentControl").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentControl").unwrap(), new)
    }
}
impl MTRBaseClusterContentControl_Availability for MTRBaseClusterContentControl {}
pub trait MTRBaseClusterContentControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterContentAppObserver(pub id);
impl std::ops::Deref for MTRBaseClusterContentAppObserver {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterContentAppObserver {}
impl MTRBaseClusterContentAppObserver {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentAppObserver").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterContentAppObserver {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterContentAppObserver {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterContentAppObserver, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterContentAppObserver").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterContentAppObserver(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterContentAppObserver" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterContentAppObserver {}
impl INSObject for MTRBaseClusterContentAppObserver {}
impl PNSObject for MTRBaseClusterContentAppObserver {}
impl IMTRBaseClusterContentAppObserver for MTRBaseClusterContentAppObserver {}
pub trait IMTRBaseClusterContentAppObserver: Sized + std::ops::Deref {
    unsafe fn contentAppMessageWithParams_completion_(
        &self,
        params: MTRContentAppObserverClusterContentAppMessageParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, contentAppMessageWithParams : params, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentAppObserver").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentAppObserver").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentAppObserver").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentAppObserver").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentAppObserver").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentAppObserver").unwrap(), new)
    }
}
impl MTRBaseClusterContentAppObserver_Availability for MTRBaseClusterContentAppObserver {}
pub trait MTRBaseClusterContentAppObserver_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterZoneManagement(pub id);
impl std::ops::Deref for MTRBaseClusterZoneManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterZoneManagement {}
impl MTRBaseClusterZoneManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterZoneManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterZoneManagement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterZoneManagement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterZoneManagement, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterZoneManagement").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterZoneManagement(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterZoneManagement")
        }
    }
}
impl IMTRCluster for MTRBaseClusterZoneManagement {}
impl INSObject for MTRBaseClusterZoneManagement {}
impl PNSObject for MTRBaseClusterZoneManagement {}
impl IMTRBaseClusterZoneManagement for MTRBaseClusterZoneManagement {}
pub trait IMTRBaseClusterZoneManagement: Sized + std::ops::Deref {
    unsafe fn createTwoDCartesianZoneWithParams_completion_(
        &self,
        params: MTRZoneManagementClusterCreateTwoDCartesianZoneParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, createTwoDCartesianZoneWithParams : params, completion : completion)
    }
    unsafe fn updateTwoDCartesianZoneWithParams_completion_(
        &self,
        params: MTRZoneManagementClusterUpdateTwoDCartesianZoneParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateTwoDCartesianZoneWithParams : params, completion : completion)
    }
    unsafe fn removeZoneWithParams_completion_(
        &self,
        params: MTRZoneManagementClusterRemoveZoneParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeZoneWithParams : params, completion : completion)
    }
    unsafe fn createOrUpdateTriggerWithParams_completion_(
        &self,
        params: MTRZoneManagementClusterCreateOrUpdateTriggerParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, createOrUpdateTriggerWithParams : params, completion : completion)
    }
    unsafe fn removeTriggerWithParams_completion_(
        &self,
        params: MTRZoneManagementClusterRemoveTriggerParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeTriggerWithParams : params, completion : completion)
    }
    unsafe fn readAttributeMaxUserDefinedZonesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxUserDefinedZonesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxUserDefinedZonesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxUserDefinedZonesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxZonesWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxZonesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxZonesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxZonesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeZonesWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeZonesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeZonesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeZonesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTriggersWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTriggersWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTriggersWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTriggersWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSensitivityMaxWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSensitivityMaxWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSensitivityMaxWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSensitivityMaxWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSensitivityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSensitivityWithCompletion : completion)
    }
    unsafe fn writeAttributeSensitivityWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSensitivityWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeSensitivityWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSensitivityWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeSensitivityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSensitivityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTwoDCartesianMaxWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTwoDCartesianMaxWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTwoDCartesianMaxWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTwoDCartesianMaxWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMaxUserDefinedZonesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterZoneManagement").unwrap(), readAttributeMaxUserDefinedZonesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxZonesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterZoneManagement").unwrap(), readAttributeMaxZonesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeZonesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterZoneManagement").unwrap(), readAttributeZonesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTriggersWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterZoneManagement").unwrap(), readAttributeTriggersWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSensitivityMaxWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterZoneManagement").unwrap(), readAttributeSensitivityMaxWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSensitivityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterZoneManagement").unwrap(), readAttributeSensitivityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTwoDCartesianMaxWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterZoneManagement").unwrap(), readAttributeTwoDCartesianMaxWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterZoneManagement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterZoneManagement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterZoneManagement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterZoneManagement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterZoneManagement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterZoneManagement").unwrap(), new)
    }
}
impl MTRBaseClusterZoneManagement_Availability for MTRBaseClusterZoneManagement {}
pub trait MTRBaseClusterZoneManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterCameraAVStreamManagement(pub id);
impl std::ops::Deref for MTRBaseClusterCameraAVStreamManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterCameraAVStreamManagement {}
impl MTRBaseClusterCameraAVStreamManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterCameraAVStreamManagement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterCameraAVStreamManagement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterCameraAVStreamManagement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterCameraAVStreamManagement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterCameraAVStreamManagement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterCameraAVStreamManagement {}
impl INSObject for MTRBaseClusterCameraAVStreamManagement {}
impl PNSObject for MTRBaseClusterCameraAVStreamManagement {}
impl IMTRBaseClusterCameraAVStreamManagement for MTRBaseClusterCameraAVStreamManagement {}
pub trait IMTRBaseClusterCameraAVStreamManagement: Sized + std::ops::Deref {
    unsafe fn audioStreamAllocateWithParams_completion_(
        &self,
        params: MTRCameraAVStreamManagementClusterAudioStreamAllocateParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, audioStreamAllocateWithParams : params, completion : completion)
    }
    unsafe fn audioStreamDeallocateWithParams_completion_(
        &self,
        params: MTRCameraAVStreamManagementClusterAudioStreamDeallocateParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, audioStreamDeallocateWithParams : params, completion : completion)
    }
    unsafe fn videoStreamAllocateWithParams_completion_(
        &self,
        params: MTRCameraAVStreamManagementClusterVideoStreamAllocateParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, videoStreamAllocateWithParams : params, completion : completion)
    }
    unsafe fn videoStreamModifyWithParams_completion_(
        &self,
        params: MTRCameraAVStreamManagementClusterVideoStreamModifyParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, videoStreamModifyWithParams : params, completion : completion)
    }
    unsafe fn videoStreamDeallocateWithParams_completion_(
        &self,
        params: MTRCameraAVStreamManagementClusterVideoStreamDeallocateParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, videoStreamDeallocateWithParams : params, completion : completion)
    }
    unsafe fn snapshotStreamAllocateWithParams_completion_(
        &self,
        params: MTRCameraAVStreamManagementClusterSnapshotStreamAllocateParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, snapshotStreamAllocateWithParams : params, completion : completion)
    }
    unsafe fn snapshotStreamModifyWithParams_completion_(
        &self,
        params: MTRCameraAVStreamManagementClusterSnapshotStreamModifyParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, snapshotStreamModifyWithParams : params, completion : completion)
    }
    unsafe fn snapshotStreamDeallocateWithParams_completion_(
        &self,
        params: MTRCameraAVStreamManagementClusterSnapshotStreamDeallocateParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, snapshotStreamDeallocateWithParams : params, completion : completion)
    }
    unsafe fn setStreamPrioritiesWithParams_completion_(
        &self,
        params: MTRCameraAVStreamManagementClusterSetStreamPrioritiesParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStreamPrioritiesWithParams : params, completion : completion)
    }
    unsafe fn captureSnapshotWithParams_completion_(
        &self,
        params: MTRCameraAVStreamManagementClusterCaptureSnapshotParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, captureSnapshotWithParams : params, completion : completion)
    }
    unsafe fn readAttributeMaxConcurrentEncodersWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxConcurrentEncodersWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxConcurrentEncodersWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxConcurrentEncodersWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxEncodedPixelRateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxEncodedPixelRateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxEncodedPixelRateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxEncodedPixelRateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeVideoSensorParamsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVideoSensorParamsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeVideoSensorParamsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeVideoSensorParamsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNightVisionUsesInfraredWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNightVisionUsesInfraredWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNightVisionUsesInfraredWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNightVisionUsesInfraredWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinViewportResolutionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinViewportResolutionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMinViewportResolutionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinViewportResolutionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRateDistortionTradeOffPointsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRateDistortionTradeOffPointsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRateDistortionTradeOffPointsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRateDistortionTradeOffPointsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxContentBufferSizeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxContentBufferSizeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxContentBufferSizeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxContentBufferSizeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMicrophoneCapabilitiesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMicrophoneCapabilitiesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMicrophoneCapabilitiesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMicrophoneCapabilitiesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSpeakerCapabilitiesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeakerCapabilitiesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSpeakerCapabilitiesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSpeakerCapabilitiesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTwoWayTalkSupportWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTwoWayTalkSupportWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTwoWayTalkSupportWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTwoWayTalkSupportWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSnapshotCapabilitiesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSnapshotCapabilitiesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSnapshotCapabilitiesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSnapshotCapabilitiesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxNetworkBandwidthWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxNetworkBandwidthWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxNetworkBandwidthWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxNetworkBandwidthWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentFrameRateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentFrameRateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentFrameRateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentFrameRateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeHDRModeEnabledWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHDRModeEnabledWithCompletion : completion)
    }
    unsafe fn writeAttributeHDRModeEnabledWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeHDRModeEnabledWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeHDRModeEnabledWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeHDRModeEnabledWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeHDRModeEnabledWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHDRModeEnabledWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedStreamUsagesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedStreamUsagesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedStreamUsagesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedStreamUsagesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAllocatedVideoStreamsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAllocatedVideoStreamsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAllocatedVideoStreamsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAllocatedVideoStreamsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAllocatedAudioStreamsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAllocatedAudioStreamsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAllocatedAudioStreamsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAllocatedAudioStreamsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAllocatedSnapshotStreamsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAllocatedSnapshotStreamsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAllocatedSnapshotStreamsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAllocatedSnapshotStreamsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStreamUsagePrioritiesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStreamUsagePrioritiesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeStreamUsagePrioritiesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStreamUsagePrioritiesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSoftRecordingPrivacyModeEnabledWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoftRecordingPrivacyModeEnabledWithCompletion : completion)
    }
    unsafe fn writeAttributeSoftRecordingPrivacyModeEnabledWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSoftRecordingPrivacyModeEnabledWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeSoftRecordingPrivacyModeEnabledWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSoftRecordingPrivacyModeEnabledWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeSoftRecordingPrivacyModeEnabledWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSoftRecordingPrivacyModeEnabledWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSoftLivestreamPrivacyModeEnabledWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoftLivestreamPrivacyModeEnabledWithCompletion : completion)
    }
    unsafe fn writeAttributeSoftLivestreamPrivacyModeEnabledWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSoftLivestreamPrivacyModeEnabledWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeSoftLivestreamPrivacyModeEnabledWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSoftLivestreamPrivacyModeEnabledWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeSoftLivestreamPrivacyModeEnabledWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSoftLivestreamPrivacyModeEnabledWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeHardPrivacyModeOnWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHardPrivacyModeOnWithCompletion : completion)
    }
    unsafe fn subscribeAttributeHardPrivacyModeOnWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHardPrivacyModeOnWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNightVisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNightVisionWithCompletion : completion)
    }
    unsafe fn writeAttributeNightVisionWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNightVisionWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNightVisionWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNightVisionWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNightVisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNightVisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNightVisionIllumWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNightVisionIllumWithCompletion : completion)
    }
    unsafe fn writeAttributeNightVisionIllumWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNightVisionIllumWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNightVisionIllumWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNightVisionIllumWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNightVisionIllumWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNightVisionIllumWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeViewportWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeViewportWithCompletion : completion)
    }
    unsafe fn writeAttributeViewportWithValue_completion_(
        &self,
        value: MTRDataTypeViewportStruct,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeViewportWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeViewportWithValue_params_completion_(
        &self,
        value: MTRDataTypeViewportStruct,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeViewportWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeViewportWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeViewportWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSpeakerMutedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeakerMutedWithCompletion : completion)
    }
    unsafe fn writeAttributeSpeakerMutedWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSpeakerMutedWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeSpeakerMutedWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSpeakerMutedWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeSpeakerMutedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSpeakerMutedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSpeakerVolumeLevelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeakerVolumeLevelWithCompletion : completion)
    }
    unsafe fn writeAttributeSpeakerVolumeLevelWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSpeakerVolumeLevelWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeSpeakerVolumeLevelWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSpeakerVolumeLevelWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeSpeakerVolumeLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSpeakerVolumeLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSpeakerMaxLevelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeakerMaxLevelWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSpeakerMaxLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSpeakerMaxLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSpeakerMinLevelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeakerMinLevelWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSpeakerMinLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSpeakerMinLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMicrophoneMutedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMicrophoneMutedWithCompletion : completion)
    }
    unsafe fn writeAttributeMicrophoneMutedWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMicrophoneMutedWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeMicrophoneMutedWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMicrophoneMutedWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeMicrophoneMutedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMicrophoneMutedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMicrophoneVolumeLevelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMicrophoneVolumeLevelWithCompletion : completion)
    }
    unsafe fn writeAttributeMicrophoneVolumeLevelWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMicrophoneVolumeLevelWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeMicrophoneVolumeLevelWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMicrophoneVolumeLevelWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeMicrophoneVolumeLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMicrophoneVolumeLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMicrophoneMaxLevelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMicrophoneMaxLevelWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMicrophoneMaxLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMicrophoneMaxLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMicrophoneMinLevelWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMicrophoneMinLevelWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMicrophoneMinLevelWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMicrophoneMinLevelWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMicrophoneAGCEnabledWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMicrophoneAGCEnabledWithCompletion : completion)
    }
    unsafe fn writeAttributeMicrophoneAGCEnabledWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMicrophoneAGCEnabledWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeMicrophoneAGCEnabledWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMicrophoneAGCEnabledWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeMicrophoneAGCEnabledWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMicrophoneAGCEnabledWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeImageRotationWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeImageRotationWithCompletion : completion)
    }
    unsafe fn writeAttributeImageRotationWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeImageRotationWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeImageRotationWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeImageRotationWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeImageRotationWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeImageRotationWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeImageFlipHorizontalWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeImageFlipHorizontalWithCompletion : completion)
    }
    unsafe fn writeAttributeImageFlipHorizontalWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeImageFlipHorizontalWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeImageFlipHorizontalWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeImageFlipHorizontalWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeImageFlipHorizontalWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeImageFlipHorizontalWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeImageFlipVerticalWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeImageFlipVerticalWithCompletion : completion)
    }
    unsafe fn writeAttributeImageFlipVerticalWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeImageFlipVerticalWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeImageFlipVerticalWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeImageFlipVerticalWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeImageFlipVerticalWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeImageFlipVerticalWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLocalVideoRecordingEnabledWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocalVideoRecordingEnabledWithCompletion : completion)
    }
    unsafe fn writeAttributeLocalVideoRecordingEnabledWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalVideoRecordingEnabledWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLocalVideoRecordingEnabledWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalVideoRecordingEnabledWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLocalVideoRecordingEnabledWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLocalVideoRecordingEnabledWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLocalSnapshotRecordingEnabledWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocalSnapshotRecordingEnabledWithCompletion : completion)
    }
    unsafe fn writeAttributeLocalSnapshotRecordingEnabledWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalSnapshotRecordingEnabledWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLocalSnapshotRecordingEnabledWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalSnapshotRecordingEnabledWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLocalSnapshotRecordingEnabledWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLocalSnapshotRecordingEnabledWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStatusLightEnabledWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStatusLightEnabledWithCompletion : completion)
    }
    unsafe fn writeAttributeStatusLightEnabledWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStatusLightEnabledWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeStatusLightEnabledWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStatusLightEnabledWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeStatusLightEnabledWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStatusLightEnabledWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStatusLightBrightnessWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStatusLightBrightnessWithCompletion : completion)
    }
    unsafe fn writeAttributeStatusLightBrightnessWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStatusLightBrightnessWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeStatusLightBrightnessWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStatusLightBrightnessWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeStatusLightBrightnessWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStatusLightBrightnessWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMaxConcurrentEncodersWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeMaxConcurrentEncodersWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxEncodedPixelRateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeMaxEncodedPixelRateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeVideoSensorParamsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeVideoSensorParamsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNightVisionUsesInfraredWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeNightVisionUsesInfraredWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMinViewportResolutionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeMinViewportResolutionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRateDistortionTradeOffPointsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeRateDistortionTradeOffPointsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxContentBufferSizeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeMaxContentBufferSizeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMicrophoneCapabilitiesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeMicrophoneCapabilitiesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSpeakerCapabilitiesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeSpeakerCapabilitiesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTwoWayTalkSupportWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeTwoWayTalkSupportWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSnapshotCapabilitiesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeSnapshotCapabilitiesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxNetworkBandwidthWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeMaxNetworkBandwidthWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentFrameRateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeCurrentFrameRateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeHDRModeEnabledWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeHDRModeEnabledWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSupportedStreamUsagesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeSupportedStreamUsagesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAllocatedVideoStreamsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeAllocatedVideoStreamsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAllocatedAudioStreamsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeAllocatedAudioStreamsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAllocatedSnapshotStreamsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeAllocatedSnapshotStreamsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeStreamUsagePrioritiesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeStreamUsagePrioritiesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSoftRecordingPrivacyModeEnabledWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeSoftRecordingPrivacyModeEnabledWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSoftLivestreamPrivacyModeEnabledWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeSoftLivestreamPrivacyModeEnabledWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeHardPrivacyModeOnWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeHardPrivacyModeOnWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNightVisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeNightVisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNightVisionIllumWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeNightVisionIllumWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeViewportWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeViewportWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSpeakerMutedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeSpeakerMutedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSpeakerVolumeLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeSpeakerVolumeLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSpeakerMaxLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeSpeakerMaxLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSpeakerMinLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeSpeakerMinLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMicrophoneMutedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeMicrophoneMutedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMicrophoneVolumeLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeMicrophoneVolumeLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMicrophoneMaxLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeMicrophoneMaxLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMicrophoneMinLevelWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeMicrophoneMinLevelWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMicrophoneAGCEnabledWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeMicrophoneAGCEnabledWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeImageRotationWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeImageRotationWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeImageFlipHorizontalWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeImageFlipHorizontalWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeImageFlipVerticalWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeImageFlipVerticalWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLocalVideoRecordingEnabledWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeLocalVideoRecordingEnabledWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLocalSnapshotRecordingEnabledWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeLocalSnapshotRecordingEnabledWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeStatusLightEnabledWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeStatusLightEnabledWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeStatusLightBrightnessWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeStatusLightBrightnessWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVStreamManagement").unwrap(), new)
    }
}
impl MTRBaseClusterCameraAVStreamManagement_Availability
    for MTRBaseClusterCameraAVStreamManagement
{
}
pub trait MTRBaseClusterCameraAVStreamManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterCameraAVSettingsUserLevelManagement(pub id);
impl std::ops::Deref for MTRBaseClusterCameraAVSettingsUserLevelManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterCameraAVSettingsUserLevelManagement {}
impl MTRBaseClusterCameraAVSettingsUserLevelManagement {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVSettingsUserLevelManagement").unwrap(), alloc)
        })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterCameraAVSettingsUserLevelManagement {}
impl std::convert::TryFrom<MTRGenericBaseCluster>
    for MTRBaseClusterCameraAVSettingsUserLevelManagement
{
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterCameraAVSettingsUserLevelManagement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVSettingsUserLevelManagement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterCameraAVSettingsUserLevelManagement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterCameraAVSettingsUserLevelManagement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterCameraAVSettingsUserLevelManagement {}
impl INSObject for MTRBaseClusterCameraAVSettingsUserLevelManagement {}
impl PNSObject for MTRBaseClusterCameraAVSettingsUserLevelManagement {}
impl IMTRBaseClusterCameraAVSettingsUserLevelManagement
    for MTRBaseClusterCameraAVSettingsUserLevelManagement
{
}
pub trait IMTRBaseClusterCameraAVSettingsUserLevelManagement: Sized + std::ops::Deref {
    unsafe fn MPTZSetPositionWithParams_completion_(
        &self,
        params: MTRCameraAVSettingsUserLevelManagementClusterMPTZSetPositionParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, MPTZSetPositionWithParams : params, completion : completion)
    }
    unsafe fn MPTZSetPositionWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, MPTZSetPositionWithCompletion : completion)
    }
    unsafe fn MPTZRelativeMoveWithParams_completion_(
        &self,
        params: MTRCameraAVSettingsUserLevelManagementClusterMPTZRelativeMoveParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, MPTZRelativeMoveWithParams : params, completion : completion)
    }
    unsafe fn MPTZRelativeMoveWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, MPTZRelativeMoveWithCompletion : completion)
    }
    unsafe fn MPTZMoveToPresetWithParams_completion_(
        &self,
        params: MTRCameraAVSettingsUserLevelManagementClusterMPTZMoveToPresetParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, MPTZMoveToPresetWithParams : params, completion : completion)
    }
    unsafe fn MPTZSavePresetWithParams_completion_(
        &self,
        params: MTRCameraAVSettingsUserLevelManagementClusterMPTZSavePresetParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, MPTZSavePresetWithParams : params, completion : completion)
    }
    unsafe fn MPTZRemovePresetWithParams_completion_(
        &self,
        params: MTRCameraAVSettingsUserLevelManagementClusterMPTZRemovePresetParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, MPTZRemovePresetWithParams : params, completion : completion)
    }
    unsafe fn DPTZSetViewportWithParams_completion_(
        &self,
        params: MTRCameraAVSettingsUserLevelManagementClusterDPTZSetViewportParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, DPTZSetViewportWithParams : params, completion : completion)
    }
    unsafe fn DPTZRelativeMoveWithParams_completion_(
        &self,
        params: MTRCameraAVSettingsUserLevelManagementClusterDPTZRelativeMoveParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, DPTZRelativeMoveWithParams : params, completion : completion)
    }
    unsafe fn readAttributeMPTZPositionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMPTZPositionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMPTZPositionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMPTZPositionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxPresetsWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxPresetsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxPresetsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxPresetsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMPTZPresetsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMPTZPresetsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMPTZPresetsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMPTZPresetsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDPTZStreamsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDPTZStreamsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDPTZStreamsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDPTZStreamsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeZoomMaxWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeZoomMaxWithCompletion : completion)
    }
    unsafe fn subscribeAttributeZoomMaxWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeZoomMaxWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTiltMinWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTiltMinWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTiltMinWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTiltMinWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTiltMaxWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTiltMaxWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTiltMaxWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTiltMaxWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePanMinWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePanMinWithCompletion : completion)
    }
    unsafe fn subscribeAttributePanMinWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePanMinWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePanMaxWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePanMaxWithCompletion : completion)
    }
    unsafe fn subscribeAttributePanMaxWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePanMaxWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMovementStateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMovementStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMovementStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMovementStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMPTZPositionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVSettingsUserLevelManagement").unwrap(), readAttributeMPTZPositionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxPresetsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVSettingsUserLevelManagement").unwrap(), readAttributeMaxPresetsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMPTZPresetsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVSettingsUserLevelManagement").unwrap(), readAttributeMPTZPresetsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDPTZStreamsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVSettingsUserLevelManagement").unwrap(), readAttributeDPTZStreamsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeZoomMaxWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVSettingsUserLevelManagement").unwrap(), readAttributeZoomMaxWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTiltMinWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVSettingsUserLevelManagement").unwrap(), readAttributeTiltMinWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTiltMaxWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVSettingsUserLevelManagement").unwrap(), readAttributeTiltMaxWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePanMinWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVSettingsUserLevelManagement").unwrap(), readAttributePanMinWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePanMaxWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVSettingsUserLevelManagement").unwrap(), readAttributePanMaxWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMovementStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVSettingsUserLevelManagement").unwrap(), readAttributeMovementStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVSettingsUserLevelManagement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVSettingsUserLevelManagement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVSettingsUserLevelManagement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVSettingsUserLevelManagement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVSettingsUserLevelManagement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCameraAVSettingsUserLevelManagement").unwrap(), new)
    }
}
impl MTRBaseClusterCameraAVSettingsUserLevelManagement_Availability
    for MTRBaseClusterCameraAVSettingsUserLevelManagement
{
}
pub trait MTRBaseClusterCameraAVSettingsUserLevelManagement_Availability:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterWebRTCTransportProvider(pub id);
impl std::ops::Deref for MTRBaseClusterWebRTCTransportProvider {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterWebRTCTransportProvider {}
impl MTRBaseClusterWebRTCTransportProvider {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWebRTCTransportProvider").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterWebRTCTransportProvider {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterWebRTCTransportProvider {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterWebRTCTransportProvider, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterWebRTCTransportProvider").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterWebRTCTransportProvider(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterWebRTCTransportProvider" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterWebRTCTransportProvider {}
impl INSObject for MTRBaseClusterWebRTCTransportProvider {}
impl PNSObject for MTRBaseClusterWebRTCTransportProvider {}
impl IMTRBaseClusterWebRTCTransportProvider for MTRBaseClusterWebRTCTransportProvider {}
pub trait IMTRBaseClusterWebRTCTransportProvider: Sized + std::ops::Deref {
    unsafe fn solicitOfferWithParams_completion_(
        &self,
        params: MTRWebRTCTransportProviderClusterSolicitOfferParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, solicitOfferWithParams : params, completion : completion)
    }
    unsafe fn provideOfferWithParams_completion_(
        &self,
        params: MTRWebRTCTransportProviderClusterProvideOfferParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, provideOfferWithParams : params, completion : completion)
    }
    unsafe fn provideAnswerWithParams_completion_(
        &self,
        params: MTRWebRTCTransportProviderClusterProvideAnswerParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, provideAnswerWithParams : params, completion : completion)
    }
    unsafe fn provideICECandidatesWithParams_completion_(
        &self,
        params: MTRWebRTCTransportProviderClusterProvideICECandidatesParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, provideICECandidatesWithParams : params, completion : completion)
    }
    unsafe fn endSessionWithParams_completion_(
        &self,
        params: MTRWebRTCTransportProviderClusterEndSessionParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, endSessionWithParams : params, completion : completion)
    }
    unsafe fn readAttributeCurrentSessionsWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentSessionsWithParams : params, completion : completion)
    }
    unsafe fn subscribeAttributeCurrentSessionsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentSessionsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeCurrentSessionsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWebRTCTransportProvider").unwrap(), readAttributeCurrentSessionsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWebRTCTransportProvider").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWebRTCTransportProvider").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWebRTCTransportProvider").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWebRTCTransportProvider").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWebRTCTransportProvider").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWebRTCTransportProvider").unwrap(), new)
    }
}
impl MTRBaseClusterWebRTCTransportProvider_Availability for MTRBaseClusterWebRTCTransportProvider {}
pub trait MTRBaseClusterWebRTCTransportProvider_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterWebRTCTransportRequestor(pub id);
impl std::ops::Deref for MTRBaseClusterWebRTCTransportRequestor {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterWebRTCTransportRequestor {}
impl MTRBaseClusterWebRTCTransportRequestor {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWebRTCTransportRequestor").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterWebRTCTransportRequestor {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterWebRTCTransportRequestor {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterWebRTCTransportRequestor, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterWebRTCTransportRequestor").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterWebRTCTransportRequestor(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterWebRTCTransportRequestor" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterWebRTCTransportRequestor {}
impl INSObject for MTRBaseClusterWebRTCTransportRequestor {}
impl PNSObject for MTRBaseClusterWebRTCTransportRequestor {}
impl IMTRBaseClusterWebRTCTransportRequestor for MTRBaseClusterWebRTCTransportRequestor {}
pub trait IMTRBaseClusterWebRTCTransportRequestor: Sized + std::ops::Deref {
    unsafe fn offerWithParams_completion_(
        &self,
        params: MTRWebRTCTransportRequestorClusterOfferParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, offerWithParams : params, completion : completion)
    }
    unsafe fn answerWithParams_completion_(
        &self,
        params: MTRWebRTCTransportRequestorClusterAnswerParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, answerWithParams : params, completion : completion)
    }
    unsafe fn ICECandidatesWithParams_completion_(
        &self,
        params: MTRWebRTCTransportRequestorClusterICECandidatesParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, ICECandidatesWithParams : params, completion : completion)
    }
    unsafe fn endWithParams_completion_(
        &self,
        params: MTRWebRTCTransportRequestorClusterEndParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, endWithParams : params, completion : completion)
    }
    unsafe fn readAttributeCurrentSessionsWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentSessionsWithParams : params, completion : completion)
    }
    unsafe fn subscribeAttributeCurrentSessionsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentSessionsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeCurrentSessionsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWebRTCTransportRequestor").unwrap(), readAttributeCurrentSessionsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWebRTCTransportRequestor").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWebRTCTransportRequestor").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWebRTCTransportRequestor").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWebRTCTransportRequestor").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWebRTCTransportRequestor").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWebRTCTransportRequestor").unwrap(), new)
    }
}
impl MTRBaseClusterWebRTCTransportRequestor_Availability
    for MTRBaseClusterWebRTCTransportRequestor
{
}
pub trait MTRBaseClusterWebRTCTransportRequestor_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterPushAVStreamTransport(pub id);
impl std::ops::Deref for MTRBaseClusterPushAVStreamTransport {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterPushAVStreamTransport {}
impl MTRBaseClusterPushAVStreamTransport {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPushAVStreamTransport").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterPushAVStreamTransport {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterPushAVStreamTransport {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterPushAVStreamTransport, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterPushAVStreamTransport").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterPushAVStreamTransport(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterPushAVStreamTransport" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterPushAVStreamTransport {}
impl INSObject for MTRBaseClusterPushAVStreamTransport {}
impl PNSObject for MTRBaseClusterPushAVStreamTransport {}
impl IMTRBaseClusterPushAVStreamTransport for MTRBaseClusterPushAVStreamTransport {}
pub trait IMTRBaseClusterPushAVStreamTransport: Sized + std::ops::Deref {
    unsafe fn allocatePushTransportWithParams_completion_(
        &self,
        params: MTRPushAVStreamTransportClusterAllocatePushTransportParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, allocatePushTransportWithParams : params, completion : completion)
    }
    unsafe fn deallocatePushTransportWithParams_completion_(
        &self,
        params: MTRPushAVStreamTransportClusterDeallocatePushTransportParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deallocatePushTransportWithParams : params, completion : completion)
    }
    unsafe fn modifyPushTransportWithParams_completion_(
        &self,
        params: MTRPushAVStreamTransportClusterModifyPushTransportParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, modifyPushTransportWithParams : params, completion : completion)
    }
    unsafe fn setTransportStatusWithParams_completion_(
        &self,
        params: MTRPushAVStreamTransportClusterSetTransportStatusParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransportStatusWithParams : params, completion : completion)
    }
    unsafe fn manuallyTriggerTransportWithParams_completion_(
        &self,
        params: MTRPushAVStreamTransportClusterManuallyTriggerTransportParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, manuallyTriggerTransportWithParams : params, completion : completion)
    }
    unsafe fn findTransportWithParams_completion_(
        &self,
        params: MTRPushAVStreamTransportClusterFindTransportParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, findTransportWithParams : params, completion : completion)
    }
    unsafe fn readAttributeSupportedFormatsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedFormatsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedFormatsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedFormatsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentConnectionsWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentConnectionsWithParams : params, completion : completion)
    }
    unsafe fn subscribeAttributeCurrentConnectionsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentConnectionsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSupportedFormatsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPushAVStreamTransport").unwrap(), readAttributeSupportedFormatsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentConnectionsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPushAVStreamTransport").unwrap(), readAttributeCurrentConnectionsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPushAVStreamTransport").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPushAVStreamTransport").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPushAVStreamTransport").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPushAVStreamTransport").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPushAVStreamTransport").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPushAVStreamTransport").unwrap(), new)
    }
}
impl MTRBaseClusterPushAVStreamTransport_Availability for MTRBaseClusterPushAVStreamTransport {}
pub trait MTRBaseClusterPushAVStreamTransport_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterChime(pub id);
impl std::ops::Deref for MTRBaseClusterChime {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterChime {}
impl MTRBaseClusterChime {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChime").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterChime {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterChime {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterChime, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterChime").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterChime(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterChime")
        }
    }
}
impl IMTRCluster for MTRBaseClusterChime {}
impl INSObject for MTRBaseClusterChime {}
impl PNSObject for MTRBaseClusterChime {}
impl IMTRBaseClusterChime for MTRBaseClusterChime {}
pub trait IMTRBaseClusterChime: Sized + std::ops::Deref {
    unsafe fn playChimeSoundWithParams_completion_(
        &self,
        params: MTRChimeClusterPlayChimeSoundParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, playChimeSoundWithParams : params, completion : completion)
    }
    unsafe fn playChimeSoundWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, playChimeSoundWithCompletion : completion)
    }
    unsafe fn readAttributeInstalledChimeSoundsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstalledChimeSoundsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeInstalledChimeSoundsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInstalledChimeSoundsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSelectedChimeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSelectedChimeWithCompletion : completion)
    }
    unsafe fn writeAttributeSelectedChimeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSelectedChimeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeSelectedChimeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSelectedChimeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeSelectedChimeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSelectedChimeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEnabledWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnabledWithCompletion : completion)
    }
    unsafe fn writeAttributeEnabledWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnabledWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeEnabledWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnabledWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeEnabledWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnabledWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeInstalledChimeSoundsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChime").unwrap(), readAttributeInstalledChimeSoundsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSelectedChimeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChime").unwrap(), readAttributeSelectedChimeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEnabledWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChime").unwrap(), readAttributeEnabledWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChime").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChime").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChime").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChime").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChime").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChime").unwrap(), new)
    }
}
impl MTRBaseClusterChime_Availability for MTRBaseClusterChime {}
pub trait MTRBaseClusterChime_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterCommodityTariff(pub id);
impl std::ops::Deref for MTRBaseClusterCommodityTariff {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterCommodityTariff {}
impl MTRBaseClusterCommodityTariff {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterCommodityTariff {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterCommodityTariff {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterCommodityTariff, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterCommodityTariff(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterCommodityTariff")
        }
    }
}
impl IMTRCluster for MTRBaseClusterCommodityTariff {}
impl INSObject for MTRBaseClusterCommodityTariff {}
impl PNSObject for MTRBaseClusterCommodityTariff {}
impl IMTRBaseClusterCommodityTariff for MTRBaseClusterCommodityTariff {}
pub trait IMTRBaseClusterCommodityTariff: Sized + std::ops::Deref {
    unsafe fn getTariffComponentWithParams_completion_(
        &self,
        params: MTRCommodityTariffClusterGetTariffComponentParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getTariffComponentWithParams : params, completion : completion)
    }
    unsafe fn getDayEntryWithParams_completion_(
        &self,
        params: MTRCommodityTariffClusterGetDayEntryParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getDayEntryWithParams : params, completion : completion)
    }
    unsafe fn readAttributeTariffInfoWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTariffInfoWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTariffInfoWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTariffInfoWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTariffUnitWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTariffUnitWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTariffUnitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTariffUnitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStartDateWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStartDateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeStartDateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStartDateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDayEntriesWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDayEntriesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDayEntriesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDayEntriesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDayPatternsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDayPatternsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDayPatternsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDayPatternsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCalendarPeriodsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCalendarPeriodsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCalendarPeriodsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCalendarPeriodsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeIndividualDaysWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeIndividualDaysWithCompletion : completion)
    }
    unsafe fn subscribeAttributeIndividualDaysWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeIndividualDaysWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentDayWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentDayWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentDayWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentDayWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNextDayWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNextDayWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNextDayWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNextDayWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentDayEntryWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentDayEntryWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentDayEntryWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentDayEntryWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentDayEntryDateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentDayEntryDateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentDayEntryDateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentDayEntryDateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNextDayEntryWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNextDayEntryWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNextDayEntryWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNextDayEntryWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNextDayEntryDateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNextDayEntryDateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNextDayEntryDateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNextDayEntryDateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTariffComponentsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTariffComponentsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTariffComponentsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTariffComponentsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTariffPeriodsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTariffPeriodsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTariffPeriodsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTariffPeriodsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentTariffComponentsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentTariffComponentsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentTariffComponentsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentTariffComponentsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNextTariffComponentsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNextTariffComponentsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNextTariffComponentsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNextTariffComponentsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDefaultRandomizationOffsetWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultRandomizationOffsetWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDefaultRandomizationOffsetWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDefaultRandomizationOffsetWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDefaultRandomizationTypeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultRandomizationTypeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDefaultRandomizationTypeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDefaultRandomizationTypeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeTariffInfoWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeTariffInfoWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTariffUnitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeTariffUnitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeStartDateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeStartDateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDayEntriesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeDayEntriesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDayPatternsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeDayPatternsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCalendarPeriodsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeCalendarPeriodsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeIndividualDaysWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeIndividualDaysWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentDayWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeCurrentDayWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNextDayWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeNextDayWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentDayEntryWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeCurrentDayEntryWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentDayEntryDateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeCurrentDayEntryDateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNextDayEntryWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeNextDayEntryWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNextDayEntryDateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeNextDayEntryDateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTariffComponentsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeTariffComponentsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTariffPeriodsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeTariffPeriodsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentTariffComponentsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeCurrentTariffComponentsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNextTariffComponentsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeNextTariffComponentsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDefaultRandomizationOffsetWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeDefaultRandomizationOffsetWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDefaultRandomizationTypeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeDefaultRandomizationTypeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityTariff").unwrap(), new)
    }
}
impl MTRBaseClusterCommodityTariff_Availability for MTRBaseClusterCommodityTariff {}
pub trait MTRBaseClusterCommodityTariff_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterEcosystemInformation(pub id);
impl std::ops::Deref for MTRBaseClusterEcosystemInformation {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterEcosystemInformation {}
impl MTRBaseClusterEcosystemInformation {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEcosystemInformation").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterEcosystemInformation {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterEcosystemInformation {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterEcosystemInformation, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterEcosystemInformation").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterEcosystemInformation(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterEcosystemInformation" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterEcosystemInformation {}
impl INSObject for MTRBaseClusterEcosystemInformation {}
impl PNSObject for MTRBaseClusterEcosystemInformation {}
impl IMTRBaseClusterEcosystemInformation for MTRBaseClusterEcosystemInformation {}
pub trait IMTRBaseClusterEcosystemInformation: Sized + std::ops::Deref {
    unsafe fn readAttributeDeviceDirectoryWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDeviceDirectoryWithParams : params, completion : completion)
    }
    unsafe fn subscribeAttributeDeviceDirectoryWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDeviceDirectoryWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLocationDirectoryWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocationDirectoryWithParams : params, completion : completion)
    }
    unsafe fn subscribeAttributeLocationDirectoryWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLocationDirectoryWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeDeviceDirectoryWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEcosystemInformation").unwrap(), readAttributeDeviceDirectoryWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLocationDirectoryWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEcosystemInformation").unwrap(), readAttributeLocationDirectoryWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEcosystemInformation").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEcosystemInformation").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEcosystemInformation").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEcosystemInformation").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEcosystemInformation").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEcosystemInformation").unwrap(), new)
    }
}
impl MTRBaseClusterEcosystemInformation_Availability for MTRBaseClusterEcosystemInformation {}
pub trait MTRBaseClusterEcosystemInformation_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterCommissionerControl(pub id);
impl std::ops::Deref for MTRBaseClusterCommissionerControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterCommissionerControl {}
impl MTRBaseClusterCommissionerControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommissionerControl").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterCommissionerControl {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterCommissionerControl {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterCommissionerControl, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterCommissionerControl").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterCommissionerControl(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterCommissionerControl" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterCommissionerControl {}
impl INSObject for MTRBaseClusterCommissionerControl {}
impl PNSObject for MTRBaseClusterCommissionerControl {}
impl IMTRBaseClusterCommissionerControl for MTRBaseClusterCommissionerControl {}
pub trait IMTRBaseClusterCommissionerControl: Sized + std::ops::Deref {
    unsafe fn requestCommissioningApprovalWithParams_completion_(
        &self,
        params: MTRCommissionerControlClusterRequestCommissioningApprovalParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, requestCommissioningApprovalWithParams : params, completion : completion)
    }
    unsafe fn commissionNodeWithParams_completion_(
        &self,
        params: MTRCommissionerControlClusterCommissionNodeParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commissionNodeWithParams : params, completion : completion)
    }
    unsafe fn readAttributeSupportedDeviceCategoriesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedDeviceCategoriesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportedDeviceCategoriesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedDeviceCategoriesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSupportedDeviceCategoriesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommissionerControl").unwrap(), readAttributeSupportedDeviceCategoriesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommissionerControl").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommissionerControl").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommissionerControl").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommissionerControl").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommissionerControl").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommissionerControl").unwrap(), new)
    }
}
impl MTRBaseClusterCommissionerControl_Availability for MTRBaseClusterCommissionerControl {}
pub trait MTRBaseClusterCommissionerControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterJointFabricDatastore(pub id);
impl std::ops::Deref for MTRBaseClusterJointFabricDatastore {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterJointFabricDatastore {}
impl MTRBaseClusterJointFabricDatastore {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterJointFabricDatastore {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterJointFabricDatastore {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterJointFabricDatastore, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterJointFabricDatastore(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterJointFabricDatastore" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterJointFabricDatastore {}
impl INSObject for MTRBaseClusterJointFabricDatastore {}
impl PNSObject for MTRBaseClusterJointFabricDatastore {}
impl IMTRBaseClusterJointFabricDatastore for MTRBaseClusterJointFabricDatastore {}
pub trait IMTRBaseClusterJointFabricDatastore: Sized + std::ops::Deref {
    unsafe fn addKeySetWithParams_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterAddKeySetParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addKeySetWithParams : params, completion : completion)
    }
    unsafe fn updateKeySetWithParams_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterUpdateKeySetParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateKeySetWithParams : params, completion : completion)
    }
    unsafe fn removeKeySetWithParams_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterRemoveKeySetParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeKeySetWithParams : params, completion : completion)
    }
    unsafe fn addGroupWithParams_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterAddGroupParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addGroupWithParams : params, completion : completion)
    }
    unsafe fn updateGroupWithParams_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterUpdateGroupParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateGroupWithParams : params, completion : completion)
    }
    unsafe fn removeGroupWithParams_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterRemoveGroupParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeGroupWithParams : params, completion : completion)
    }
    unsafe fn addAdminWithParams_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterAddAdminParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addAdminWithParams : params, completion : completion)
    }
    unsafe fn updateAdminWithParams_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterUpdateAdminParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateAdminWithParams : params, completion : completion)
    }
    unsafe fn removeAdminWithParams_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterRemoveAdminParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeAdminWithParams : params, completion : completion)
    }
    unsafe fn addPendingNodeWithParams_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterAddPendingNodeParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addPendingNodeWithParams : params, completion : completion)
    }
    unsafe fn refreshNodeWithParams_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterRefreshNodeParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, refreshNodeWithParams : params, completion : completion)
    }
    unsafe fn updateNodeWithParams_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterUpdateNodeParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateNodeWithParams : params, completion : completion)
    }
    unsafe fn removeNodeWithParams_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterRemoveNodeParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeNodeWithParams : params, completion : completion)
    }
    unsafe fn updateEndpointForNodeWithParams_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterUpdateEndpointForNodeParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateEndpointForNodeWithParams : params, completion : completion)
    }
    unsafe fn addGroupIDToEndpointForNodeWithParams_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterAddGroupIDToEndpointForNodeParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addGroupIDToEndpointForNodeWithParams : params, completion : completion)
    }
    unsafe fn removeGroupIDFromEndpointForNodeWithParams_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterRemoveGroupIDFromEndpointForNodeParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeGroupIDFromEndpointForNodeWithParams : params, completion : completion)
    }
    unsafe fn addBindingToEndpointForNodeWithParams_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterAddBindingToEndpointForNodeParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addBindingToEndpointForNodeWithParams : params, completion : completion)
    }
    unsafe fn removeBindingFromEndpointForNodeWithParams_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterRemoveBindingFromEndpointForNodeParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeBindingFromEndpointForNodeWithParams : params, completion : completion)
    }
    unsafe fn addACLToNodeWithParams_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterAddACLToNodeParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addACLToNodeWithParams : params, completion : completion)
    }
    unsafe fn removeACLFromNodeWithParams_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterRemoveACLFromNodeParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeACLFromNodeWithParams : params, completion : completion)
    }
    unsafe fn readAttributeAnchorRootCAWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAnchorRootCAWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAnchorRootCAWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAnchorRootCAWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAnchorNodeIDWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAnchorNodeIDWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAnchorNodeIDWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAnchorNodeIDWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAnchorVendorIDWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAnchorVendorIDWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAnchorVendorIDWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAnchorVendorIDWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFriendlyNameWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFriendlyNameWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFriendlyNameWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFriendlyNameWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGroupKeySetListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGroupKeySetListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGroupKeySetListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGroupKeySetListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGroupListWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGroupListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGroupListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGroupListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNodeListWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNodeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNodeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNodeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAdminListWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAdminListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAdminListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAdminListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStatusWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStatusWithCompletion : completion)
    }
    unsafe fn subscribeAttributeStatusWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStatusWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEndpointGroupIDListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEndpointGroupIDListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeEndpointGroupIDListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEndpointGroupIDListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEndpointBindingListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEndpointBindingListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeEndpointBindingListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEndpointBindingListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNodeKeySetListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNodeKeySetListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNodeKeySetListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNodeKeySetListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNodeACLListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNodeACLListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNodeACLListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNodeACLListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNodeEndpointListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNodeEndpointListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNodeEndpointListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNodeEndpointListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeAnchorRootCAWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap(), readAttributeAnchorRootCAWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAnchorNodeIDWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap(), readAttributeAnchorNodeIDWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAnchorVendorIDWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap(), readAttributeAnchorVendorIDWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFriendlyNameWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap(), readAttributeFriendlyNameWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGroupKeySetListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap(), readAttributeGroupKeySetListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGroupListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap(), readAttributeGroupListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNodeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap(), readAttributeNodeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAdminListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap(), readAttributeAdminListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeStatusWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap(), readAttributeStatusWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEndpointGroupIDListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap(), readAttributeEndpointGroupIDListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEndpointBindingListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap(), readAttributeEndpointBindingListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNodeKeySetListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap(), readAttributeNodeKeySetListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNodeACLListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap(), readAttributeNodeACLListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNodeEndpointListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap(), readAttributeNodeEndpointListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricDatastore").unwrap(), new)
    }
}
impl MTRBaseClusterJointFabricDatastore_Availability for MTRBaseClusterJointFabricDatastore {}
pub trait MTRBaseClusterJointFabricDatastore_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterJointFabricAdministrator(pub id);
impl std::ops::Deref for MTRBaseClusterJointFabricAdministrator {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterJointFabricAdministrator {}
impl MTRBaseClusterJointFabricAdministrator {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricAdministrator").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterJointFabricAdministrator {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterJointFabricAdministrator {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterJointFabricAdministrator, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricAdministrator").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterJointFabricAdministrator(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterJointFabricAdministrator" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterJointFabricAdministrator {}
impl INSObject for MTRBaseClusterJointFabricAdministrator {}
impl PNSObject for MTRBaseClusterJointFabricAdministrator {}
impl IMTRBaseClusterJointFabricAdministrator for MTRBaseClusterJointFabricAdministrator {}
pub trait IMTRBaseClusterJointFabricAdministrator: Sized + std::ops::Deref {
    unsafe fn ICACCSRRequestWithParams_completion_(
        &self,
        params: MTRJointFabricAdministratorClusterICACCSRRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, ICACCSRRequestWithParams : params, completion : completion)
    }
    unsafe fn ICACCSRRequestWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, ICACCSRRequestWithCompletion : completion)
    }
    unsafe fn addICACWithParams_completion_(
        &self,
        params: MTRJointFabricAdministratorClusterAddICACParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addICACWithParams : params, completion : completion)
    }
    unsafe fn openJointCommissioningWindowWithParams_completion_(
        &self,
        params: MTRJointFabricAdministratorClusterOpenJointCommissioningWindowParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, openJointCommissioningWindowWithParams : params, completion : completion)
    }
    unsafe fn transferAnchorRequestWithParams_completion_(
        &self,
        params: MTRJointFabricAdministratorClusterTransferAnchorRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, transferAnchorRequestWithParams : params, completion : completion)
    }
    unsafe fn transferAnchorRequestWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, transferAnchorRequestWithCompletion : completion)
    }
    unsafe fn transferAnchorCompleteWithParams_completion_(
        &self,
        params: MTRJointFabricAdministratorClusterTransferAnchorCompleteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, transferAnchorCompleteWithParams : params, completion : completion)
    }
    unsafe fn transferAnchorCompleteWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, transferAnchorCompleteWithCompletion : completion)
    }
    unsafe fn announceJointFabricAdministratorWithParams_completion_(
        &self,
        params: MTRJointFabricAdministratorClusterAnnounceJointFabricAdministratorParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, announceJointFabricAdministratorWithParams : params, completion : completion)
    }
    unsafe fn readAttributeAdministratorFabricIndexWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAdministratorFabricIndexWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAdministratorFabricIndexWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAdministratorFabricIndexWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeAdministratorFabricIndexWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricAdministrator").unwrap(), readAttributeAdministratorFabricIndexWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricAdministrator").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricAdministrator").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricAdministrator").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricAdministrator").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricAdministrator").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterJointFabricAdministrator").unwrap(), new)
    }
}
impl MTRBaseClusterJointFabricAdministrator_Availability
    for MTRBaseClusterJointFabricAdministrator
{
}
pub trait MTRBaseClusterJointFabricAdministrator_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterTLSCertificateManagement(pub id);
impl std::ops::Deref for MTRBaseClusterTLSCertificateManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterTLSCertificateManagement {}
impl MTRBaseClusterTLSCertificateManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSCertificateManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterTLSCertificateManagement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterTLSCertificateManagement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterTLSCertificateManagement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSCertificateManagement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterTLSCertificateManagement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterTLSCertificateManagement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterTLSCertificateManagement {}
impl INSObject for MTRBaseClusterTLSCertificateManagement {}
impl PNSObject for MTRBaseClusterTLSCertificateManagement {}
impl IMTRBaseClusterTLSCertificateManagement for MTRBaseClusterTLSCertificateManagement {}
pub trait IMTRBaseClusterTLSCertificateManagement: Sized + std::ops::Deref {
    unsafe fn provisionRootCertificateWithParams_completion_(
        &self,
        params: MTRTLSCertificateManagementClusterProvisionRootCertificateParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, provisionRootCertificateWithParams : params, completion : completion)
    }
    unsafe fn findRootCertificateWithParams_completion_(
        &self,
        params: MTRTLSCertificateManagementClusterFindRootCertificateParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, findRootCertificateWithParams : params, completion : completion)
    }
    unsafe fn lookupRootCertificateWithParams_completion_(
        &self,
        params: MTRTLSCertificateManagementClusterLookupRootCertificateParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, lookupRootCertificateWithParams : params, completion : completion)
    }
    unsafe fn removeRootCertificateWithParams_completion_(
        &self,
        params: MTRTLSCertificateManagementClusterRemoveRootCertificateParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeRootCertificateWithParams : params, completion : completion)
    }
    unsafe fn clientCSRWithParams_completion_(
        &self,
        params: MTRTLSCertificateManagementClusterClientCSRParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clientCSRWithParams : params, completion : completion)
    }
    unsafe fn provisionClientCertificateWithParams_completion_(
        &self,
        params: MTRTLSCertificateManagementClusterProvisionClientCertificateParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, provisionClientCertificateWithParams : params, completion : completion)
    }
    unsafe fn findClientCertificateWithParams_completion_(
        &self,
        params: MTRTLSCertificateManagementClusterFindClientCertificateParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, findClientCertificateWithParams : params, completion : completion)
    }
    unsafe fn lookupClientCertificateWithParams_completion_(
        &self,
        params: MTRTLSCertificateManagementClusterLookupClientCertificateParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, lookupClientCertificateWithParams : params, completion : completion)
    }
    unsafe fn removeClientCertificateWithParams_completion_(
        &self,
        params: MTRTLSCertificateManagementClusterRemoveClientCertificateParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeClientCertificateWithParams : params, completion : completion)
    }
    unsafe fn readAttributeMaxRootCertificatesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxRootCertificatesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxRootCertificatesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxRootCertificatesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProvisionedRootCertificatesWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProvisionedRootCertificatesWithParams : params, completion : completion)
    }
    unsafe fn subscribeAttributeProvisionedRootCertificatesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProvisionedRootCertificatesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxClientCertificatesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxClientCertificatesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxClientCertificatesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxClientCertificatesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProvisionedClientCertificatesWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProvisionedClientCertificatesWithParams : params, completion : completion)
    }
    unsafe fn subscribeAttributeProvisionedClientCertificatesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProvisionedClientCertificatesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMaxRootCertificatesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSCertificateManagement").unwrap(), readAttributeMaxRootCertificatesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeProvisionedRootCertificatesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSCertificateManagement").unwrap(), readAttributeProvisionedRootCertificatesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaxClientCertificatesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSCertificateManagement").unwrap(), readAttributeMaxClientCertificatesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeProvisionedClientCertificatesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSCertificateManagement").unwrap(), readAttributeProvisionedClientCertificatesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSCertificateManagement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSCertificateManagement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSCertificateManagement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSCertificateManagement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSCertificateManagement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSCertificateManagement").unwrap(), new)
    }
}
impl MTRBaseClusterTLSCertificateManagement_Availability
    for MTRBaseClusterTLSCertificateManagement
{
}
pub trait MTRBaseClusterTLSCertificateManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterTLSClientManagement(pub id);
impl std::ops::Deref for MTRBaseClusterTLSClientManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterTLSClientManagement {}
impl MTRBaseClusterTLSClientManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSClientManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterTLSClientManagement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterTLSClientManagement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterTLSClientManagement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSClientManagement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterTLSClientManagement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterTLSClientManagement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterTLSClientManagement {}
impl INSObject for MTRBaseClusterTLSClientManagement {}
impl PNSObject for MTRBaseClusterTLSClientManagement {}
impl IMTRBaseClusterTLSClientManagement for MTRBaseClusterTLSClientManagement {}
pub trait IMTRBaseClusterTLSClientManagement: Sized + std::ops::Deref {
    unsafe fn provisionEndpointWithParams_completion_(
        &self,
        params: MTRTLSClientManagementClusterProvisionEndpointParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, provisionEndpointWithParams : params, completion : completion)
    }
    unsafe fn findEndpointWithParams_completion_(
        &self,
        params: MTRTLSClientManagementClusterFindEndpointParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, findEndpointWithParams : params, completion : completion)
    }
    unsafe fn removeEndpointWithParams_completion_(
        &self,
        params: MTRTLSClientManagementClusterRemoveEndpointParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeEndpointWithParams : params, completion : completion)
    }
    unsafe fn readAttributeMaxProvisionedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxProvisionedWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaxProvisionedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxProvisionedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProvisionedEndpointsWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProvisionedEndpointsWithParams : params, completion : completion)
    }
    unsafe fn subscribeAttributeProvisionedEndpointsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProvisionedEndpointsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMaxProvisionedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSClientManagement").unwrap(), readAttributeMaxProvisionedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeProvisionedEndpointsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSClientManagement").unwrap(), readAttributeProvisionedEndpointsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSClientManagement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSClientManagement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSClientManagement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSClientManagement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSClientManagement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTLSClientManagement").unwrap(), new)
    }
}
impl MTRBaseClusterTLSClientManagement_Availability for MTRBaseClusterTLSClientManagement {}
pub trait MTRBaseClusterTLSClientManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterMeterIdentification(pub id);
impl std::ops::Deref for MTRBaseClusterMeterIdentification {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterMeterIdentification {}
impl MTRBaseClusterMeterIdentification {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMeterIdentification").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterMeterIdentification {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterMeterIdentification {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterMeterIdentification, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterMeterIdentification").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterMeterIdentification(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterMeterIdentification" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterMeterIdentification {}
impl INSObject for MTRBaseClusterMeterIdentification {}
impl PNSObject for MTRBaseClusterMeterIdentification {}
impl IMTRBaseClusterMeterIdentification for MTRBaseClusterMeterIdentification {}
pub trait IMTRBaseClusterMeterIdentification: Sized + std::ops::Deref {
    unsafe fn readAttributeMeterTypeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeterTypeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeterTypeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeterTypeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePointOfDeliveryWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePointOfDeliveryWithCompletion : completion)
    }
    unsafe fn subscribeAttributePointOfDeliveryWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePointOfDeliveryWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeterSerialNumberWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeterSerialNumberWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeterSerialNumberWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeterSerialNumberWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProtocolVersionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProtocolVersionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeProtocolVersionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProtocolVersionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePowerThresholdWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerThresholdWithCompletion : completion)
    }
    unsafe fn subscribeAttributePowerThresholdWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePowerThresholdWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMeterTypeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMeterIdentification").unwrap(), readAttributeMeterTypeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePointOfDeliveryWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMeterIdentification").unwrap(), readAttributePointOfDeliveryWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeterSerialNumberWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMeterIdentification").unwrap(), readAttributeMeterSerialNumberWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeProtocolVersionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMeterIdentification").unwrap(), readAttributeProtocolVersionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePowerThresholdWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMeterIdentification").unwrap(), readAttributePowerThresholdWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMeterIdentification").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMeterIdentification").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMeterIdentification").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMeterIdentification").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMeterIdentification").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMeterIdentification").unwrap(), new)
    }
}
impl MTRBaseClusterMeterIdentification_Availability for MTRBaseClusterMeterIdentification {}
pub trait MTRBaseClusterMeterIdentification_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterCommodityMetering(pub id);
impl std::ops::Deref for MTRBaseClusterCommodityMetering {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterCommodityMetering {}
impl MTRBaseClusterCommodityMetering {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityMetering").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterCommodityMetering {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterCommodityMetering {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterCommodityMetering, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityMetering").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterCommodityMetering(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterCommodityMetering" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterCommodityMetering {}
impl INSObject for MTRBaseClusterCommodityMetering {}
impl PNSObject for MTRBaseClusterCommodityMetering {}
impl IMTRBaseClusterCommodityMetering for MTRBaseClusterCommodityMetering {}
pub trait IMTRBaseClusterCommodityMetering: Sized + std::ops::Deref {
    unsafe fn readAttributeMeteredQuantityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeteredQuantityWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeteredQuantityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeteredQuantityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeteredQuantityTimestampWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeteredQuantityTimestampWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeteredQuantityTimestampWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeteredQuantityTimestampWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTariffUnitWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTariffUnitWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTariffUnitWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTariffUnitWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaximumMeteredQuantitiesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaximumMeteredQuantitiesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMaximumMeteredQuantitiesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaximumMeteredQuantitiesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMeteredQuantityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityMetering").unwrap(), readAttributeMeteredQuantityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeteredQuantityTimestampWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityMetering").unwrap(), readAttributeMeteredQuantityTimestampWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTariffUnitWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityMetering").unwrap(), readAttributeTariffUnitWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMaximumMeteredQuantitiesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityMetering").unwrap(), readAttributeMaximumMeteredQuantitiesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityMetering").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityMetering").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityMetering").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityMetering").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityMetering").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterCommodityMetering").unwrap(), new)
    }
}
impl MTRBaseClusterCommodityMetering_Availability for MTRBaseClusterCommodityMetering {}
pub trait MTRBaseClusterCommodityMetering_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterAppleDeviceInformation(pub id);
impl std::ops::Deref for MTRBaseClusterAppleDeviceInformation {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterAppleDeviceInformation {}
impl MTRBaseClusterAppleDeviceInformation {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAppleDeviceInformation").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterAppleDeviceInformation {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterAppleDeviceInformation {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterAppleDeviceInformation, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterAppleDeviceInformation").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterAppleDeviceInformation(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterAppleDeviceInformation" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterAppleDeviceInformation {}
impl INSObject for MTRBaseClusterAppleDeviceInformation {}
impl PNSObject for MTRBaseClusterAppleDeviceInformation {}
impl IMTRBaseClusterAppleDeviceInformation for MTRBaseClusterAppleDeviceInformation {}
pub trait IMTRBaseClusterAppleDeviceInformation: Sized + std::ops::Deref {
    unsafe fn readAttributeSupportsTapToUnlockWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportsTapToUnlockWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportsTapToUnlockWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportsTapToUnlockWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportsWEDWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportsWEDWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSupportsWEDWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportsWEDWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSupportsTapToUnlockWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAppleDeviceInformation").unwrap(), readAttributeSupportsTapToUnlockWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSupportsWEDWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAppleDeviceInformation").unwrap(), readAttributeSupportsWEDWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAppleDeviceInformation").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAppleDeviceInformation").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAppleDeviceInformation").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAppleDeviceInformation").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAppleDeviceInformation").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAppleDeviceInformation").unwrap(), new)
    }
}
impl MTRBaseClusterAppleDeviceInformation_Availability for MTRBaseClusterAppleDeviceInformation {}
pub trait MTRBaseClusterAppleDeviceInformation_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterAppleLockCluster(pub id);
impl std::ops::Deref for MTRBaseClusterAppleLockCluster {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterAppleLockCluster {}
impl MTRBaseClusterAppleLockCluster {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAppleLockCluster").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterAppleLockCluster {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterAppleLockCluster {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterAppleLockCluster, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterAppleLockCluster").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterAppleLockCluster(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterAppleLockCluster")
        }
    }
}
impl IMTRCluster for MTRBaseClusterAppleLockCluster {}
impl INSObject for MTRBaseClusterAppleLockCluster {}
impl PNSObject for MTRBaseClusterAppleLockCluster {}
impl IMTRBaseClusterAppleLockCluster for MTRBaseClusterAppleLockCluster {}
pub trait IMTRBaseClusterAppleLockCluster: Sized + std::ops::Deref {
    unsafe fn readAttributeIntentDetectionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeIntentDetectionWithCompletion : completion)
    }
    unsafe fn writeAttributeIntentDetectionWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeIntentDetectionWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeIntentDetectionWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeIntentDetectionWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeIntentDetectionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeIntentDetectionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeIntentDetectionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAppleLockCluster").unwrap(), readAttributeIntentDetectionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAppleLockCluster").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAppleLockCluster").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAppleLockCluster").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAppleLockCluster").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAppleLockCluster").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAppleLockCluster").unwrap(), new)
    }
}
impl MTRBaseClusterAppleLockCluster_Availability for MTRBaseClusterAppleLockCluster {}
pub trait MTRBaseClusterAppleLockCluster_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterUnitTesting(pub id);
impl std::ops::Deref for MTRBaseClusterUnitTesting {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterUnitTesting {}
impl MTRBaseClusterUnitTesting {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterUnitTesting {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterUnitTesting {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterUnitTesting, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterUnitTesting(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterUnitTesting")
        }
    }
}
impl IMTRCluster for MTRBaseClusterUnitTesting {}
impl INSObject for MTRBaseClusterUnitTesting {}
impl PNSObject for MTRBaseClusterUnitTesting {}
impl IMTRBaseClusterUnitTesting for MTRBaseClusterUnitTesting {}
pub trait IMTRBaseClusterUnitTesting: Sized + std::ops::Deref {
    unsafe fn testWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testWithParams : params, completion : completion)
    }
    unsafe fn testWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testWithCompletion : completion)
    }
    unsafe fn testNotHandledWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestNotHandledParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNotHandledWithParams : params, completion : completion)
    }
    unsafe fn testNotHandledWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNotHandledWithCompletion : completion)
    }
    unsafe fn testSpecificWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestSpecificParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSpecificWithParams : params, completion : completion)
    }
    unsafe fn testSpecificWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSpecificWithCompletion : completion)
    }
    unsafe fn testUnknownCommandWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestUnknownCommandParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testUnknownCommandWithParams : params, completion : completion)
    }
    unsafe fn testUnknownCommandWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testUnknownCommandWithCompletion : completion)
    }
    unsafe fn testAddArgumentsWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestAddArgumentsParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testAddArgumentsWithParams : params, completion : completion)
    }
    unsafe fn testSimpleArgumentRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestSimpleArgumentRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSimpleArgumentRequestWithParams : params, completion : completion)
    }
    unsafe fn testStructArrayArgumentRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestStructArrayArgumentRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testStructArrayArgumentRequestWithParams : params, completion : completion)
    }
    unsafe fn testStructArgumentRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestStructArgumentRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testStructArgumentRequestWithParams : params, completion : completion)
    }
    unsafe fn testNestedStructArgumentRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestNestedStructArgumentRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNestedStructArgumentRequestWithParams : params, completion : completion)
    }
    unsafe fn testListStructArgumentRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestListStructArgumentRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testListStructArgumentRequestWithParams : params, completion : completion)
    }
    unsafe fn testListInt8UArgumentRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestListInt8UArgumentRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testListInt8UArgumentRequestWithParams : params, completion : completion)
    }
    unsafe fn testNestedStructListArgumentRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestNestedStructListArgumentRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNestedStructListArgumentRequestWithParams : params, completion : completion)
    }
    unsafe fn testListNestedStructListArgumentRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testListNestedStructListArgumentRequestWithParams : params, completion : completion)
    }
    unsafe fn testListInt8UReverseRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestListInt8UReverseRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testListInt8UReverseRequestWithParams : params, completion : completion)
    }
    unsafe fn testEnumsRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestEnumsRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testEnumsRequestWithParams : params, completion : completion)
    }
    unsafe fn testNullableOptionalRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestNullableOptionalRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNullableOptionalRequestWithParams : params, completion : completion)
    }
    unsafe fn testNullableOptionalRequestWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNullableOptionalRequestWithCompletion : completion)
    }
    unsafe fn testComplexNullableOptionalRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestComplexNullableOptionalRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testComplexNullableOptionalRequestWithParams : params, completion : completion)
    }
    unsafe fn simpleStructEchoRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterSimpleStructEchoRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, simpleStructEchoRequestWithParams : params, completion : completion)
    }
    unsafe fn timedInvokeRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTimedInvokeRequestParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, timedInvokeRequestWithParams : params, completion : completion)
    }
    unsafe fn timedInvokeRequestWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, timedInvokeRequestWithCompletion : completion)
    }
    unsafe fn testSimpleOptionalArgumentRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSimpleOptionalArgumentRequestWithParams : params, completion : completion)
    }
    unsafe fn testSimpleOptionalArgumentRequestWithCompletion_(
        &self,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSimpleOptionalArgumentRequestWithCompletion : completion)
    }
    unsafe fn testEmitTestEventRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestEmitTestEventRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testEmitTestEventRequestWithParams : params, completion : completion)
    }
    unsafe fn testEmitTestFabricScopedEventRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testEmitTestFabricScopedEventRequestWithParams : params, completion : completion)
    }
    unsafe fn testBatchHelperRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestBatchHelperRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testBatchHelperRequestWithParams : params, completion : completion)
    }
    unsafe fn testSecondBatchHelperRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestSecondBatchHelperRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSecondBatchHelperRequestWithParams : params, completion : completion)
    }
    unsafe fn stringEchoRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterStringEchoRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringEchoRequestWithParams : params, completion : completion)
    }
    unsafe fn globalEchoRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterGlobalEchoRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, globalEchoRequestWithParams : params, completion : completion)
    }
    unsafe fn testCheckCommandFlagsWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestCheckCommandFlagsParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testCheckCommandFlagsWithParams : params, completion : completion)
    }
    unsafe fn testCheckCommandFlagsWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testCheckCommandFlagsWithCompletion : completion)
    }
    unsafe fn testDifferentVendorMeiRequestWithParams_completion_(
        &self,
        params: MTRUnitTestingClusterTestDifferentVendorMeiRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testDifferentVendorMeiRequestWithParams : params, completion : completion)
    }
    unsafe fn readAttributeBooleanWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBooleanWithCompletion : completion)
    }
    unsafe fn writeAttributeBooleanWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBooleanWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeBooleanWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBooleanWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeBooleanWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBooleanWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBitmap8WithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBitmap8WithCompletion : completion)
    }
    unsafe fn writeAttributeBitmap8WithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap8WithValue : value, completion : completion)
    }
    unsafe fn writeAttributeBitmap8WithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap8WithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeBitmap8WithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBitmap8WithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBitmap16WithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBitmap16WithCompletion : completion)
    }
    unsafe fn writeAttributeBitmap16WithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap16WithValue : value, completion : completion)
    }
    unsafe fn writeAttributeBitmap16WithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap16WithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeBitmap16WithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBitmap16WithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBitmap32WithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBitmap32WithCompletion : completion)
    }
    unsafe fn writeAttributeBitmap32WithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap32WithValue : value, completion : completion)
    }
    unsafe fn writeAttributeBitmap32WithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap32WithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeBitmap32WithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBitmap32WithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBitmap64WithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBitmap64WithCompletion : completion)
    }
    unsafe fn writeAttributeBitmap64WithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap64WithValue : value, completion : completion)
    }
    unsafe fn writeAttributeBitmap64WithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap64WithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeBitmap64WithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBitmap64WithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt8uWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt8uWithCompletion : completion)
    }
    unsafe fn writeAttributeInt8uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt8uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeInt8uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt8uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeInt8uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt8uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt16uWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt16uWithCompletion : completion)
    }
    unsafe fn writeAttributeInt16uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt16uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeInt16uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt16uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeInt16uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt16uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt24uWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt24uWithCompletion : completion)
    }
    unsafe fn writeAttributeInt24uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt24uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeInt24uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt24uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeInt24uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt24uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt32uWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt32uWithCompletion : completion)
    }
    unsafe fn writeAttributeInt32uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt32uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeInt32uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt32uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeInt32uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt32uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt40uWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt40uWithCompletion : completion)
    }
    unsafe fn writeAttributeInt40uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt40uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeInt40uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt40uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeInt40uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt40uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt48uWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt48uWithCompletion : completion)
    }
    unsafe fn writeAttributeInt48uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt48uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeInt48uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt48uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeInt48uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt48uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt56uWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt56uWithCompletion : completion)
    }
    unsafe fn writeAttributeInt56uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt56uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeInt56uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt56uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeInt56uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt56uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt64uWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt64uWithCompletion : completion)
    }
    unsafe fn writeAttributeInt64uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt64uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeInt64uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt64uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeInt64uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt64uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt8sWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt8sWithCompletion : completion)
    }
    unsafe fn writeAttributeInt8sWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt8sWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeInt8sWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt8sWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeInt8sWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt8sWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt16sWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt16sWithCompletion : completion)
    }
    unsafe fn writeAttributeInt16sWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt16sWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeInt16sWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt16sWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeInt16sWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt16sWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt24sWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt24sWithCompletion : completion)
    }
    unsafe fn writeAttributeInt24sWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt24sWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeInt24sWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt24sWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeInt24sWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt24sWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt32sWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt32sWithCompletion : completion)
    }
    unsafe fn writeAttributeInt32sWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt32sWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeInt32sWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt32sWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeInt32sWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt32sWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt40sWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt40sWithCompletion : completion)
    }
    unsafe fn writeAttributeInt40sWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt40sWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeInt40sWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt40sWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeInt40sWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt40sWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt48sWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt48sWithCompletion : completion)
    }
    unsafe fn writeAttributeInt48sWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt48sWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeInt48sWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt48sWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeInt48sWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt48sWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt56sWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt56sWithCompletion : completion)
    }
    unsafe fn writeAttributeInt56sWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt56sWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeInt56sWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt56sWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeInt56sWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt56sWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt64sWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt64sWithCompletion : completion)
    }
    unsafe fn writeAttributeInt64sWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt64sWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeInt64sWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt64sWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeInt64sWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt64sWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEnum8WithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnum8WithCompletion : completion)
    }
    unsafe fn writeAttributeEnum8WithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnum8WithValue : value, completion : completion)
    }
    unsafe fn writeAttributeEnum8WithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnum8WithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeEnum8WithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnum8WithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEnum16WithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnum16WithCompletion : completion)
    }
    unsafe fn writeAttributeEnum16WithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnum16WithValue : value, completion : completion)
    }
    unsafe fn writeAttributeEnum16WithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnum16WithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeEnum16WithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnum16WithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFloatSingleWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFloatSingleWithCompletion : completion)
    }
    unsafe fn writeAttributeFloatSingleWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFloatSingleWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeFloatSingleWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFloatSingleWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeFloatSingleWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFloatSingleWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFloatDoubleWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFloatDoubleWithCompletion : completion)
    }
    unsafe fn writeAttributeFloatDoubleWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFloatDoubleWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeFloatDoubleWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFloatDoubleWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeFloatDoubleWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFloatDoubleWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOctetStringWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOctetStringWithCompletion : completion)
    }
    unsafe fn writeAttributeOctetStringWithValue_completion_(
        &self,
        value: NSData,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOctetStringWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeOctetStringWithValue_params_completion_(
        &self,
        value: NSData,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOctetStringWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeOctetStringWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOctetStringWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeListInt8uWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeListInt8uWithCompletion : completion)
    }
    unsafe fn writeAttributeListInt8uWithValue_completion_(
        &self,
        value: NSArray,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListInt8uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeListInt8uWithValue_params_completion_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListInt8uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeListInt8uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeListInt8uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeListOctetStringWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeListOctetStringWithCompletion : completion)
    }
    unsafe fn writeAttributeListOctetStringWithValue_completion_(
        &self,
        value: NSArray,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListOctetStringWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeListOctetStringWithValue_params_completion_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListOctetStringWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeListOctetStringWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeListOctetStringWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeListStructOctetStringWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeListStructOctetStringWithCompletion : completion)
    }
    unsafe fn writeAttributeListStructOctetStringWithValue_completion_(
        &self,
        value: NSArray,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListStructOctetStringWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeListStructOctetStringWithValue_params_completion_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListStructOctetStringWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeListStructOctetStringWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeListStructOctetStringWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLongOctetStringWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLongOctetStringWithCompletion : completion)
    }
    unsafe fn writeAttributeLongOctetStringWithValue_completion_(
        &self,
        value: NSData,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLongOctetStringWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLongOctetStringWithValue_params_completion_(
        &self,
        value: NSData,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLongOctetStringWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLongOctetStringWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLongOctetStringWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCharStringWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCharStringWithCompletion : completion)
    }
    unsafe fn writeAttributeCharStringWithValue_completion_(
        &self,
        value: NSString,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCharStringWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeCharStringWithValue_params_completion_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCharStringWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeCharStringWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCharStringWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLongCharStringWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLongCharStringWithCompletion : completion)
    }
    unsafe fn writeAttributeLongCharStringWithValue_completion_(
        &self,
        value: NSString,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLongCharStringWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeLongCharStringWithValue_params_completion_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLongCharStringWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeLongCharStringWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLongCharStringWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEpochUsWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEpochUsWithCompletion : completion)
    }
    unsafe fn writeAttributeEpochUsWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEpochUsWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeEpochUsWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEpochUsWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeEpochUsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEpochUsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEpochSWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEpochSWithCompletion : completion)
    }
    unsafe fn writeAttributeEpochSWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEpochSWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeEpochSWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEpochSWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeEpochSWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEpochSWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeVendorIdWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVendorIdWithCompletion : completion)
    }
    unsafe fn writeAttributeVendorIdWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeVendorIdWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeVendorIdWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeVendorIdWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeVendorIdWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeVendorIdWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeListNullablesAndOptionalsStructWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeListNullablesAndOptionalsStructWithCompletion : completion)
    }
    unsafe fn writeAttributeListNullablesAndOptionalsStructWithValue_completion_(
        &self,
        value: NSArray,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListNullablesAndOptionalsStructWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeListNullablesAndOptionalsStructWithValue_params_completion_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListNullablesAndOptionalsStructWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeListNullablesAndOptionalsStructWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeListNullablesAndOptionalsStructWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEnumAttrWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnumAttrWithCompletion : completion)
    }
    unsafe fn writeAttributeEnumAttrWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnumAttrWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeEnumAttrWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnumAttrWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeEnumAttrWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnumAttrWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStructAttrWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStructAttrWithCompletion : completion)
    }
    unsafe fn writeAttributeStructAttrWithValue_completion_(
        &self,
        value: MTRUnitTestingClusterSimpleStruct,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStructAttrWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeStructAttrWithValue_params_completion_(
        &self,
        value: MTRUnitTestingClusterSimpleStruct,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStructAttrWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeStructAttrWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStructAttrWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRangeRestrictedInt8uWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRangeRestrictedInt8uWithCompletion : completion)
    }
    unsafe fn writeAttributeRangeRestrictedInt8uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt8uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeRangeRestrictedInt8uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt8uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeRangeRestrictedInt8uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRangeRestrictedInt8uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRangeRestrictedInt8sWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRangeRestrictedInt8sWithCompletion : completion)
    }
    unsafe fn writeAttributeRangeRestrictedInt8sWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt8sWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeRangeRestrictedInt8sWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt8sWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeRangeRestrictedInt8sWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRangeRestrictedInt8sWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRangeRestrictedInt16uWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRangeRestrictedInt16uWithCompletion : completion)
    }
    unsafe fn writeAttributeRangeRestrictedInt16uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt16uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeRangeRestrictedInt16uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt16uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeRangeRestrictedInt16uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRangeRestrictedInt16uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRangeRestrictedInt16sWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRangeRestrictedInt16sWithCompletion : completion)
    }
    unsafe fn writeAttributeRangeRestrictedInt16sWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt16sWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeRangeRestrictedInt16sWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt16sWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeRangeRestrictedInt16sWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRangeRestrictedInt16sWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeListLongOctetStringWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeListLongOctetStringWithCompletion : completion)
    }
    unsafe fn writeAttributeListLongOctetStringWithValue_completion_(
        &self,
        value: NSArray,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListLongOctetStringWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeListLongOctetStringWithValue_params_completion_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListLongOctetStringWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeListLongOctetStringWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeListLongOctetStringWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeListFabricScopedWithParams_completion_(
        &self,
        params: MTRReadParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeListFabricScopedWithParams : params, completion : completion)
    }
    unsafe fn writeAttributeListFabricScopedWithValue_completion_(
        &self,
        value: NSArray,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListFabricScopedWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeListFabricScopedWithValue_params_completion_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListFabricScopedWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeListFabricScopedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeListFabricScopedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTimedWriteBooleanWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTimedWriteBooleanWithCompletion : completion)
    }
    unsafe fn writeAttributeTimedWriteBooleanWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTimedWriteBooleanWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeTimedWriteBooleanWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTimedWriteBooleanWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeTimedWriteBooleanWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTimedWriteBooleanWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneralErrorBooleanWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneralErrorBooleanWithCompletion : completion)
    }
    unsafe fn writeAttributeGeneralErrorBooleanWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeGeneralErrorBooleanWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeGeneralErrorBooleanWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeGeneralErrorBooleanWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeGeneralErrorBooleanWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneralErrorBooleanWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterErrorBooleanWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterErrorBooleanWithCompletion : completion)
    }
    unsafe fn writeAttributeClusterErrorBooleanWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeClusterErrorBooleanWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeClusterErrorBooleanWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeClusterErrorBooleanWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeClusterErrorBooleanWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterErrorBooleanWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGlobalEnumWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGlobalEnumWithCompletion : completion)
    }
    unsafe fn writeAttributeGlobalEnumWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeGlobalEnumWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeGlobalEnumWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeGlobalEnumWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeGlobalEnumWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGlobalEnumWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGlobalStructWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGlobalStructWithCompletion : completion)
    }
    unsafe fn writeAttributeGlobalStructWithValue_completion_(
        &self,
        value: MTRDataTypeTestGlobalStruct,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeGlobalStructWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeGlobalStructWithValue_params_completion_(
        &self,
        value: MTRDataTypeTestGlobalStruct,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeGlobalStructWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeGlobalStructWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGlobalStructWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUnsupportedAttributeRequiringAdminPrivilegeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnsupportedAttributeRequiringAdminPrivilegeWithCompletion : completion)
    }
    unsafe fn writeAttributeUnsupportedAttributeRequiringAdminPrivilegeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnsupportedAttributeRequiringAdminPrivilegeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeUnsupportedAttributeRequiringAdminPrivilegeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnsupportedAttributeRequiringAdminPrivilegeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeUnsupportedAttributeRequiringAdminPrivilegeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUnsupportedAttributeRequiringAdminPrivilegeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUnsupportedWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnsupportedWithCompletion : completion)
    }
    unsafe fn writeAttributeUnsupportedWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnsupportedWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeUnsupportedWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnsupportedWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeUnsupportedWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUnsupportedWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeReadFailureCodeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReadFailureCodeWithCompletion : completion)
    }
    unsafe fn writeAttributeReadFailureCodeWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeReadFailureCodeWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeReadFailureCodeWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeReadFailureCodeWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeReadFailureCodeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeReadFailureCodeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFailureInt32UWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFailureInt32UWithCompletion : completion)
    }
    unsafe fn writeAttributeFailureInt32UWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFailureInt32UWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeFailureInt32UWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFailureInt32UWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeFailureInt32UWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFailureInt32UWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableBooleanWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableBooleanWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableBooleanWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBooleanWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableBooleanWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBooleanWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableBooleanWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableBooleanWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableBitmap8WithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableBitmap8WithCompletion : completion)
    }
    unsafe fn writeAttributeNullableBitmap8WithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap8WithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableBitmap8WithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap8WithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableBitmap8WithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableBitmap8WithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableBitmap16WithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableBitmap16WithCompletion : completion)
    }
    unsafe fn writeAttributeNullableBitmap16WithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap16WithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableBitmap16WithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap16WithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableBitmap16WithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableBitmap16WithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableBitmap32WithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableBitmap32WithCompletion : completion)
    }
    unsafe fn writeAttributeNullableBitmap32WithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap32WithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableBitmap32WithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap32WithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableBitmap32WithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableBitmap32WithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableBitmap64WithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableBitmap64WithCompletion : completion)
    }
    unsafe fn writeAttributeNullableBitmap64WithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap64WithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableBitmap64WithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap64WithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableBitmap64WithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableBitmap64WithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt8uWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt8uWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableInt8uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt8uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableInt8uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt8uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableInt8uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt8uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt16uWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt16uWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableInt16uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt16uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableInt16uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt16uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableInt16uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt16uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt24uWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt24uWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableInt24uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt24uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableInt24uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt24uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableInt24uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt24uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt32uWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt32uWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableInt32uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt32uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableInt32uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt32uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableInt32uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt32uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt40uWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt40uWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableInt40uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt40uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableInt40uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt40uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableInt40uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt40uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt48uWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt48uWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableInt48uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt48uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableInt48uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt48uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableInt48uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt48uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt56uWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt56uWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableInt56uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt56uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableInt56uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt56uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableInt56uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt56uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt64uWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt64uWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableInt64uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt64uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableInt64uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt64uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableInt64uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt64uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt8sWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt8sWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableInt8sWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt8sWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableInt8sWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt8sWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableInt8sWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt8sWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt16sWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt16sWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableInt16sWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt16sWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableInt16sWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt16sWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableInt16sWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt16sWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt24sWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt24sWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableInt24sWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt24sWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableInt24sWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt24sWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableInt24sWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt24sWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt32sWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt32sWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableInt32sWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt32sWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableInt32sWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt32sWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableInt32sWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt32sWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt40sWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt40sWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableInt40sWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt40sWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableInt40sWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt40sWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableInt40sWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt40sWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt48sWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt48sWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableInt48sWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt48sWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableInt48sWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt48sWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableInt48sWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt48sWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt56sWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt56sWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableInt56sWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt56sWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableInt56sWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt56sWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableInt56sWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt56sWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt64sWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt64sWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableInt64sWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt64sWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableInt64sWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt64sWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableInt64sWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt64sWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableEnum8WithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableEnum8WithCompletion : completion)
    }
    unsafe fn writeAttributeNullableEnum8WithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableEnum8WithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableEnum8WithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableEnum8WithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableEnum8WithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableEnum8WithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableEnum16WithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableEnum16WithCompletion : completion)
    }
    unsafe fn writeAttributeNullableEnum16WithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableEnum16WithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableEnum16WithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableEnum16WithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableEnum16WithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableEnum16WithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableFloatSingleWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableFloatSingleWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableFloatSingleWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableFloatSingleWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableFloatSingleWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableFloatSingleWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableFloatSingleWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableFloatSingleWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableFloatDoubleWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableFloatDoubleWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableFloatDoubleWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableFloatDoubleWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableFloatDoubleWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableFloatDoubleWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableFloatDoubleWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableFloatDoubleWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableOctetStringWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableOctetStringWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableOctetStringWithValue_completion_(
        &self,
        value: NSData,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableOctetStringWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableOctetStringWithValue_params_completion_(
        &self,
        value: NSData,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableOctetStringWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableOctetStringWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableOctetStringWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableCharStringWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableCharStringWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableCharStringWithValue_completion_(
        &self,
        value: NSString,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableCharStringWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableCharStringWithValue_params_completion_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableCharStringWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableCharStringWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableCharStringWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableEnumAttrWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableEnumAttrWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableEnumAttrWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableEnumAttrWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableEnumAttrWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableEnumAttrWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableEnumAttrWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableEnumAttrWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableStructWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableStructWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableStructWithValue_completion_(
        &self,
        value: MTRUnitTestingClusterSimpleStruct,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableStructWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableStructWithValue_params_completion_(
        &self,
        value: MTRUnitTestingClusterSimpleStruct,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableStructWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableStructWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableStructWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableRangeRestrictedInt8uWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableRangeRestrictedInt8uWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt8uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt8uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt8uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt8uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableRangeRestrictedInt8uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableRangeRestrictedInt8uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableRangeRestrictedInt8sWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableRangeRestrictedInt8sWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt8sWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt8sWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt8sWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt8sWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableRangeRestrictedInt8sWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableRangeRestrictedInt8sWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableRangeRestrictedInt16uWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableRangeRestrictedInt16uWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt16uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt16uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt16uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt16uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableRangeRestrictedInt16uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableRangeRestrictedInt16uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableRangeRestrictedInt16sWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableRangeRestrictedInt16sWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt16sWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt16sWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt16sWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt16sWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableRangeRestrictedInt16sWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableRangeRestrictedInt16sWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWriteOnlyInt8uWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWriteOnlyInt8uWithCompletion : completion)
    }
    unsafe fn writeAttributeWriteOnlyInt8uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWriteOnlyInt8uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeWriteOnlyInt8uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWriteOnlyInt8uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeWriteOnlyInt8uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWriteOnlyInt8uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableGlobalEnumWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableGlobalEnumWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableGlobalEnumWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableGlobalEnumWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableGlobalEnumWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableGlobalEnumWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableGlobalEnumWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableGlobalEnumWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableGlobalStructWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableGlobalStructWithCompletion : completion)
    }
    unsafe fn writeAttributeNullableGlobalStructWithValue_completion_(
        &self,
        value: MTRDataTypeTestGlobalStruct,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableGlobalStructWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeNullableGlobalStructWithValue_params_completion_(
        &self,
        value: MTRDataTypeTestGlobalStruct,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableGlobalStructWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeNullableGlobalStructWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableGlobalStructWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeiInt8uWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeiInt8uWithCompletion : completion)
    }
    unsafe fn writeAttributeMeiInt8uWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMeiInt8uWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeMeiInt8uWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMeiInt8uWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeMeiInt8uWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeiInt8uWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeBooleanWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeBooleanWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBitmap8WithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeBitmap8WithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBitmap16WithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeBitmap16WithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBitmap32WithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeBitmap32WithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBitmap64WithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeBitmap64WithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInt8uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeInt8uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInt16uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeInt16uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInt24uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeInt24uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInt32uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeInt32uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInt40uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeInt40uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInt48uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeInt48uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInt56uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeInt56uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInt64uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeInt64uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInt8sWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeInt8sWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInt16sWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeInt16sWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInt24sWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeInt24sWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInt32sWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeInt32sWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInt40sWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeInt40sWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInt48sWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeInt48sWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInt56sWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeInt56sWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInt64sWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeInt64sWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEnum8WithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeEnum8WithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEnum16WithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeEnum16WithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFloatSingleWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeFloatSingleWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFloatDoubleWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeFloatDoubleWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOctetStringWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeOctetStringWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeListInt8uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeListInt8uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeListOctetStringWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeListOctetStringWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeListStructOctetStringWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeListStructOctetStringWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLongOctetStringWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeLongOctetStringWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCharStringWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeCharStringWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLongCharStringWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeLongCharStringWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEpochUsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeEpochUsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEpochSWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeEpochSWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeVendorIdWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeVendorIdWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeListNullablesAndOptionalsStructWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeListNullablesAndOptionalsStructWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeEnumAttrWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeEnumAttrWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeStructAttrWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeStructAttrWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRangeRestrictedInt8uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeRangeRestrictedInt8uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRangeRestrictedInt8sWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeRangeRestrictedInt8sWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRangeRestrictedInt16uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeRangeRestrictedInt16uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRangeRestrictedInt16sWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeRangeRestrictedInt16sWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeListLongOctetStringWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeListLongOctetStringWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeListFabricScopedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeListFabricScopedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTimedWriteBooleanWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeTimedWriteBooleanWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneralErrorBooleanWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeGeneralErrorBooleanWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterErrorBooleanWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeClusterErrorBooleanWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGlobalEnumWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeGlobalEnumWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGlobalStructWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeGlobalStructWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUnsupportedAttributeRequiringAdminPrivilegeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeUnsupportedAttributeRequiringAdminPrivilegeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeUnsupportedWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeUnsupportedWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeReadFailureCodeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeReadFailureCodeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFailureInt32UWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeFailureInt32UWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableBooleanWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableBooleanWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableBitmap8WithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableBitmap8WithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableBitmap16WithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableBitmap16WithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableBitmap32WithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableBitmap32WithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableBitmap64WithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableBitmap64WithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableInt8uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableInt8uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableInt16uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableInt16uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableInt24uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableInt24uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableInt32uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableInt32uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableInt40uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableInt40uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableInt48uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableInt48uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableInt56uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableInt56uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableInt64uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableInt64uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableInt8sWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableInt8sWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableInt16sWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableInt16sWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableInt24sWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableInt24sWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableInt32sWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableInt32sWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableInt40sWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableInt40sWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableInt48sWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableInt48sWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableInt56sWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableInt56sWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableInt64sWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableInt64sWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableEnum8WithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableEnum8WithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableEnum16WithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableEnum16WithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableFloatSingleWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableFloatSingleWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableFloatDoubleWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableFloatDoubleWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableOctetStringWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableOctetStringWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableCharStringWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableCharStringWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableEnumAttrWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableEnumAttrWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableStructWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableStructWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableRangeRestrictedInt8uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableRangeRestrictedInt8uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableRangeRestrictedInt8sWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableRangeRestrictedInt8sWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableRangeRestrictedInt16uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableRangeRestrictedInt16uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableRangeRestrictedInt16sWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableRangeRestrictedInt16sWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeWriteOnlyInt8uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeWriteOnlyInt8uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableGlobalEnumWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableGlobalEnumWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNullableGlobalStructWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeNullableGlobalStructWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeiInt8uWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), readAttributeMeiInt8uWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitTesting").unwrap(), new)
    }
}
impl MTRBaseClusterUnitTesting_Availability for MTRBaseClusterUnitTesting {}
pub trait MTRBaseClusterUnitTesting_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterSampleMEI(pub id);
impl std::ops::Deref for MTRBaseClusterSampleMEI {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterSampleMEI {}
impl MTRBaseClusterSampleMEI {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSampleMEI").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterSampleMEI {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterSampleMEI {
    type Error = &'static str;
    fn try_from(parent: MTRGenericBaseCluster) -> Result<MTRBaseClusterSampleMEI, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterSampleMEI").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterSampleMEI(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterSampleMEI")
        }
    }
}
impl IMTRCluster for MTRBaseClusterSampleMEI {}
impl INSObject for MTRBaseClusterSampleMEI {}
impl PNSObject for MTRBaseClusterSampleMEI {}
impl IMTRBaseClusterSampleMEI for MTRBaseClusterSampleMEI {}
pub trait IMTRBaseClusterSampleMEI: Sized + std::ops::Deref {
    unsafe fn pingWithParams_completion_(
        &self,
        params: MTRSampleMEIClusterPingParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pingWithParams : params, completion : completion)
    }
    unsafe fn pingWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pingWithCompletion : completion)
    }
    unsafe fn addArgumentsWithParams_completion_(
        &self,
        params: MTRSampleMEIClusterAddArgumentsParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addArgumentsWithParams : params, completion : completion)
    }
    unsafe fn readAttributeFlipFlopWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFlipFlopWithCompletion : completion)
    }
    unsafe fn writeAttributeFlipFlopWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFlipFlopWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeFlipFlopWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFlipFlopWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeFlipFlopWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFlipFlopWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeFlipFlopWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSampleMEI").unwrap(), readAttributeFlipFlopWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSampleMEI").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSampleMEI").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSampleMEI").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSampleMEI").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSampleMEI").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSampleMEI").unwrap(), new)
    }
}
impl MTRBaseClusterSampleMEI_Availability for MTRBaseClusterSampleMEI {}
pub trait MTRBaseClusterSampleMEI_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterBasic(pub id);
impl std::ops::Deref for MTRBaseClusterBasic {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterBasic {}
impl MTRBaseClusterBasic {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), alloc) })
    }
}
impl IMTRBaseClusterBasicInformation for MTRBaseClusterBasic {}
impl From<MTRBaseClusterBasic> for MTRBaseClusterBasicInformation {
    fn from(child: MTRBaseClusterBasic) -> MTRBaseClusterBasicInformation {
        MTRBaseClusterBasicInformation(child.0)
    }
}
impl std::convert::TryFrom<MTRBaseClusterBasicInformation> for MTRBaseClusterBasic {
    type Error = &'static str;
    fn try_from(
        parent: MTRBaseClusterBasicInformation,
    ) -> Result<MTRBaseClusterBasic, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterBasic(parent.0))
        } else {
            Err("This MTRBaseClusterBasicInformation cannot be downcasted to MTRBaseClusterBasic")
        }
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterBasic {}
impl IMTRCluster for MTRBaseClusterBasic {}
impl INSObject for MTRBaseClusterBasic {}
impl PNSObject for MTRBaseClusterBasic {}
impl IMTRBaseClusterBasic for MTRBaseClusterBasic {}
pub trait IMTRBaseClusterBasic: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterOtaSoftwareUpdateProvider(pub id);
impl std::ops::Deref for MTRBaseClusterOtaSoftwareUpdateProvider {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterOtaSoftwareUpdateProvider {}
impl MTRBaseClusterOtaSoftwareUpdateProvider {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOtaSoftwareUpdateProvider").unwrap(), alloc) })
    }
}
impl IMTRBaseClusterOTASoftwareUpdateProvider for MTRBaseClusterOtaSoftwareUpdateProvider {}
impl From<MTRBaseClusterOtaSoftwareUpdateProvider> for MTRBaseClusterOTASoftwareUpdateProvider {
    fn from(
        child: MTRBaseClusterOtaSoftwareUpdateProvider,
    ) -> MTRBaseClusterOTASoftwareUpdateProvider {
        MTRBaseClusterOTASoftwareUpdateProvider(child.0)
    }
}
impl std::convert::TryFrom<MTRBaseClusterOTASoftwareUpdateProvider>
    for MTRBaseClusterOtaSoftwareUpdateProvider
{
    type Error = &'static str;
    fn try_from(
        parent: MTRBaseClusterOTASoftwareUpdateProvider,
    ) -> Result<MTRBaseClusterOtaSoftwareUpdateProvider, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterOtaSoftwareUpdateProvider").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterOtaSoftwareUpdateProvider(parent.0))
        } else {
            Err ("This MTRBaseClusterOTASoftwareUpdateProvider cannot be downcasted to MTRBaseClusterOtaSoftwareUpdateProvider" ,)
        }
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterOtaSoftwareUpdateProvider {}
impl IMTRCluster for MTRBaseClusterOtaSoftwareUpdateProvider {}
impl INSObject for MTRBaseClusterOtaSoftwareUpdateProvider {}
impl PNSObject for MTRBaseClusterOtaSoftwareUpdateProvider {}
impl IMTRBaseClusterOtaSoftwareUpdateProvider for MTRBaseClusterOtaSoftwareUpdateProvider {}
pub trait IMTRBaseClusterOtaSoftwareUpdateProvider: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterOtaSoftwareUpdateRequestor(pub id);
impl std::ops::Deref for MTRBaseClusterOtaSoftwareUpdateRequestor {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterOtaSoftwareUpdateRequestor {}
impl MTRBaseClusterOtaSoftwareUpdateRequestor {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOtaSoftwareUpdateRequestor").unwrap(), alloc) })
    }
}
impl IMTRBaseClusterOTASoftwareUpdateRequestor for MTRBaseClusterOtaSoftwareUpdateRequestor {}
impl From<MTRBaseClusterOtaSoftwareUpdateRequestor> for MTRBaseClusterOTASoftwareUpdateRequestor {
    fn from(
        child: MTRBaseClusterOtaSoftwareUpdateRequestor,
    ) -> MTRBaseClusterOTASoftwareUpdateRequestor {
        MTRBaseClusterOTASoftwareUpdateRequestor(child.0)
    }
}
impl std::convert::TryFrom<MTRBaseClusterOTASoftwareUpdateRequestor>
    for MTRBaseClusterOtaSoftwareUpdateRequestor
{
    type Error = &'static str;
    fn try_from(
        parent: MTRBaseClusterOTASoftwareUpdateRequestor,
    ) -> Result<MTRBaseClusterOtaSoftwareUpdateRequestor, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterOtaSoftwareUpdateRequestor").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterOtaSoftwareUpdateRequestor(parent.0))
        } else {
            Err ("This MTRBaseClusterOTASoftwareUpdateRequestor cannot be downcasted to MTRBaseClusterOtaSoftwareUpdateRequestor" ,)
        }
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterOtaSoftwareUpdateRequestor {}
impl IMTRCluster for MTRBaseClusterOtaSoftwareUpdateRequestor {}
impl INSObject for MTRBaseClusterOtaSoftwareUpdateRequestor {}
impl PNSObject for MTRBaseClusterOtaSoftwareUpdateRequestor {}
impl IMTRBaseClusterOtaSoftwareUpdateRequestor for MTRBaseClusterOtaSoftwareUpdateRequestor {}
pub trait IMTRBaseClusterOtaSoftwareUpdateRequestor: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterBridgedDeviceBasic(pub id);
impl std::ops::Deref for MTRBaseClusterBridgedDeviceBasic {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterBridgedDeviceBasic {}
impl MTRBaseClusterBridgedDeviceBasic {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap(), alloc) })
    }
}
impl IMTRBaseClusterBridgedDeviceBasicInformation for MTRBaseClusterBridgedDeviceBasic {}
impl From<MTRBaseClusterBridgedDeviceBasic> for MTRBaseClusterBridgedDeviceBasicInformation {
    fn from(
        child: MTRBaseClusterBridgedDeviceBasic,
    ) -> MTRBaseClusterBridgedDeviceBasicInformation {
        MTRBaseClusterBridgedDeviceBasicInformation(child.0)
    }
}
impl std::convert::TryFrom<MTRBaseClusterBridgedDeviceBasicInformation>
    for MTRBaseClusterBridgedDeviceBasic
{
    type Error = &'static str;
    fn try_from(
        parent: MTRBaseClusterBridgedDeviceBasicInformation,
    ) -> Result<MTRBaseClusterBridgedDeviceBasic, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterBridgedDeviceBasic(parent.0))
        } else {
            Err ("This MTRBaseClusterBridgedDeviceBasicInformation cannot be downcasted to MTRBaseClusterBridgedDeviceBasic" ,)
        }
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterBridgedDeviceBasic {}
impl IMTRCluster for MTRBaseClusterBridgedDeviceBasic {}
impl INSObject for MTRBaseClusterBridgedDeviceBasic {}
impl PNSObject for MTRBaseClusterBridgedDeviceBasic {}
impl IMTRBaseClusterBridgedDeviceBasic for MTRBaseClusterBridgedDeviceBasic {}
pub trait IMTRBaseClusterBridgedDeviceBasic: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterWakeOnLan(pub id);
impl std::ops::Deref for MTRBaseClusterWakeOnLan {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterWakeOnLan {}
impl MTRBaseClusterWakeOnLan {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWakeOnLan").unwrap(), alloc) })
    }
}
impl IMTRBaseClusterWakeOnLAN for MTRBaseClusterWakeOnLan {}
impl From<MTRBaseClusterWakeOnLan> for MTRBaseClusterWakeOnLAN {
    fn from(child: MTRBaseClusterWakeOnLan) -> MTRBaseClusterWakeOnLAN {
        MTRBaseClusterWakeOnLAN(child.0)
    }
}
impl std::convert::TryFrom<MTRBaseClusterWakeOnLAN> for MTRBaseClusterWakeOnLan {
    type Error = &'static str;
    fn try_from(parent: MTRBaseClusterWakeOnLAN) -> Result<MTRBaseClusterWakeOnLan, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterWakeOnLan").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterWakeOnLan(parent.0))
        } else {
            Err("This MTRBaseClusterWakeOnLAN cannot be downcasted to MTRBaseClusterWakeOnLan")
        }
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterWakeOnLan {}
impl IMTRCluster for MTRBaseClusterWakeOnLan {}
impl INSObject for MTRBaseClusterWakeOnLan {}
impl PNSObject for MTRBaseClusterWakeOnLan {}
impl IMTRBaseClusterWakeOnLan for MTRBaseClusterWakeOnLan {}
pub trait IMTRBaseClusterWakeOnLan: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterTestCluster(pub id);
impl std::ops::Deref for MTRBaseClusterTestCluster {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterTestCluster {}
impl MTRBaseClusterTestCluster {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), alloc) })
    }
}
impl IMTRBaseClusterUnitTesting for MTRBaseClusterTestCluster {}
impl From<MTRBaseClusterTestCluster> for MTRBaseClusterUnitTesting {
    fn from(child: MTRBaseClusterTestCluster) -> MTRBaseClusterUnitTesting {
        MTRBaseClusterUnitTesting(child.0)
    }
}
impl std::convert::TryFrom<MTRBaseClusterUnitTesting> for MTRBaseClusterTestCluster {
    type Error = &'static str;
    fn try_from(
        parent: MTRBaseClusterUnitTesting,
    ) -> Result<MTRBaseClusterTestCluster, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterTestCluster(parent.0))
        } else {
            Err("This MTRBaseClusterUnitTesting cannot be downcasted to MTRBaseClusterTestCluster")
        }
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterTestCluster {}
impl IMTRCluster for MTRBaseClusterTestCluster {}
impl INSObject for MTRBaseClusterTestCluster {}
impl PNSObject for MTRBaseClusterTestCluster {}
impl IMTRBaseClusterTestCluster for MTRBaseClusterTestCluster {}
pub trait IMTRBaseClusterTestCluster: Sized + std::ops::Deref {}
pub type MTRDataTypeAreaTypeTag = u8;
pub type MTRDataTypeAtomicRequestTypeEnum = u8;
pub type MTRDataTypeLandmarkTag = u8;
pub type MTRDataTypeLocationTag = u8;
pub type MTRDataTypeMeasurementTypeEnum = u16;
pub type MTRDataTypePositionTag = u8;
pub type MTRDataTypePowerThresholdSourceEnum = u8;
pub type MTRDataTypeRelativePositionTag = u8;
pub type MTRDataTypeStreamUsageEnum = u8;
pub type MTRDataTypeTariffPriceTypeEnum = u8;
pub type MTRDataTypeTariffUnitEnum = u8;
pub type MTRDataTypeTestGlobalEnum = u8;
pub type MTRDataTypeThreeLevelAutoEnum = u8;
pub type MTRDataTypeWebRTCEndReasonEnum = u8;
pub type MTRIdentifyEffectIdentifier = u8;
pub type MTRIdentifyEffectVariant = u8;
pub type MTRIdentifyType = u8;
pub type MTRGroupsFeature = u32;
pub type MTRGroupsGroupClusterFeature = u32;
pub type MTRGroupsNameSupportBitmap = u8;
pub type MTROnOffDelayedAllOffEffectVariant = u8;
pub type MTROnOffDyingLightEffectVariant = u8;
pub type MTROnOffEffectIdentifier = u8;
pub type MTROnOffStartUpOnOff = u8;
pub type MTROnOffFeature = u32;
pub type MTROnOffControlBitmap = u8;
pub type MTROnOffControl = u8;
pub type MTRLevelControlMoveMode = u8;
pub type MTRLevelControlStepMode = u8;
pub type MTRLevelControlFeature = u32;
pub type MTRLevelControlOptionsBitmap = u8;
pub type MTRLevelControlOptions = u8;
pub type MTRDescriptorFeature = u32;
pub type MTRAccessControlEntryAuthMode = u8;
pub type MTRAccessControlAuthMode = u8;
pub type MTRAccessControlEntryPrivilege = u8;
pub type MTRAccessControlPrivilege = u8;
pub type MTRAccessControlAccessRestrictionType = u8;
pub type MTRAccessControlChangeType = u8;
pub type MTRAccessControlFeature = u32;
pub type MTRActionsActionError = u8;
pub type MTRActionsActionState = u8;
pub type MTRActionsActionType = u8;
pub type MTRActionsEndpointListType = u8;
pub type MTRActionsCommandBits = u16;
pub type MTRBasicInformationColor = u8;
pub type MTRBasicInformationProductFinish = u8;
pub type MTROTASoftwareUpdateProviderApplyUpdateAction = u8;
pub type MTROtaSoftwareUpdateProviderOTAApplyUpdateAction = u8;
pub type MTROTASoftwareUpdateProviderDownloadProtocol = u8;
pub type MTROtaSoftwareUpdateProviderOTADownloadProtocol = u8;
pub type MTROTASoftwareUpdateProviderStatus = u8;
pub type MTROtaSoftwareUpdateProviderOTAQueryStatus = u8;
pub type MTROTASoftwareUpdateRequestorAnnouncementReason = u8;
pub type MTROtaSoftwareUpdateRequestorOTAAnnouncementReason = u8;
pub type MTROTASoftwareUpdateRequestorChangeReason = u8;
pub type MTROtaSoftwareUpdateRequestorOTAChangeReason = u8;
pub type MTROTASoftwareUpdateRequestorUpdateState = u8;
pub type MTROtaSoftwareUpdateRequestorOTAUpdateState = u8;
pub type MTRTimeFormatLocalizationCalendarType = u8;
pub type MTRTimeFormatLocalizationHourFormat = u8;
pub type MTRTimeFormatLocalizationFeature = u32;
pub type MTRUnitLocalizationTempUnit = u8;
pub type MTRUnitLocalizationFeature = u32;
pub type MTRPowerSourceBatApprovedChemistry = u16;
pub type MTRPowerSourceBatChargeFault = u8;
pub type MTRPowerSourceBatChargeLevel = u8;
pub type MTRPowerSourceBatChargeState = u8;
pub type MTRPowerSourceBatCommonDesignation = u16;
pub type MTRPowerSourceBatFault = u8;
pub type MTRPowerSourceBatReplaceability = u8;
pub type MTRPowerSourceStatus = u8;
pub type MTRPowerSourceWiredCurrentType = u8;
pub type MTRPowerSourceWiredFault = u8;
pub type MTRPowerSourceFeature = u32;
pub type MTRGeneralCommissioningCommissioningError = u8;
pub type MTRGeneralCommissioningNetworkRecoveryReason = u8;
pub type MTRGeneralCommissioningRegulatoryLocationType = u8;
pub type MTRGeneralCommissioningFeature = u32;
pub type MTRNetworkCommissioningStatus = u8;
pub type MTRNetworkCommissioningWiFiBand = u8;
pub type MTRNetworkCommissioningFeature = u32;
pub type MTRNetworkCommissioningThreadCapabilitiesBitmap = u16;
pub type MTRNetworkCommissioningWiFiSecurityBitmap = u8;
pub type MTRNetworkCommissioningWiFiSecurity = u8;
pub type MTRDiagnosticLogsIntent = u8;
pub type MTRDiagnosticLogsLogsIntent = u8;
pub type MTRDiagnosticLogsStatus = u8;
pub type MTRDiagnosticLogsLogsStatus = u8;
pub type MTRDiagnosticLogsTransferProtocol = u8;
pub type MTRDiagnosticLogsLogsTransferProtocol = u8;
pub type MTRGeneralDiagnosticsBootReason = u8;
pub type MTRGeneralDiagnosticsBootReasonType = u8;
pub type MTRGeneralDiagnosticsHardwareFault = u8;
pub type MTRGeneralDiagnosticsHardwareFaultType = u8;
pub type MTRGeneralDiagnosticsInterfaceType = u8;
pub type MTRGeneralDiagnosticsNetworkFault = u8;
pub type MTRGeneralDiagnosticsNetworkFaultType = u8;
pub type MTRGeneralDiagnosticsRadioFault = u8;
pub type MTRGeneralDiagnosticsRadioFaultType = u8;
pub type MTRGeneralDiagnosticsFeature = u32;
pub type MTRSoftwareDiagnosticsFeature = u32;
pub type MTRThreadNetworkDiagnosticsConnectionStatus = u8;
pub type MTRThreadNetworkDiagnosticsThreadConnectionStatus = u8;
pub type MTRThreadNetworkDiagnosticsNetworkFault = u8;
pub type MTRThreadNetworkDiagnosticsRoutingRole = u8;
pub type MTRThreadNetworkDiagnosticsFeature = u32;
pub type MTRWiFiNetworkDiagnosticsAssociationFailureCause = u8;
pub type MTRWiFiNetworkDiagnosticsConnectionStatus = u8;
pub type MTRWiFiNetworkDiagnosticsWiFiConnectionStatus = u8;
pub type MTRWiFiNetworkDiagnosticsSecurityType = u8;
pub type MTRWiFiNetworkDiagnosticsWiFiVersion = u8;
pub type MTRWiFiNetworkDiagnosticsWiFiVersionType = u8;
pub type MTRWiFiNetworkDiagnosticsFeature = u32;
pub type MTREthernetNetworkDiagnosticsPHYRate = u8;
pub type MTREthernetNetworkDiagnosticsPHYRateType = u8;
pub type MTREthernetNetworkDiagnosticsFeature = u32;
pub type MTRTimeSynchronizationGranularity = u8;
pub type MTRTimeSynchronizationStatusCode = u8;
pub type MTRTimeSynchronizationTimeSource = u8;
pub type MTRTimeSynchronizationTimeZoneDatabase = u8;
pub type MTRTimeSynchronizationFeature = u32;
pub type MTRBridgedDeviceBasicInformationColor = u8;
pub type MTRBridgedDeviceBasicInformationProductFinish = u8;
pub type MTRBridgedDeviceBasicInformationFeature = u32;
pub type MTRSwitchFeature = u32;
pub type MTRAdministratorCommissioningCommissioningWindowStatus = u8;
pub type MTRAdministratorCommissioningStatusCode = u8;
pub type MTRAdministratorCommissioningFeature = u32;
pub type MTROperationalCredentialsCertificateChainType = u8;
pub type MTROperationalCredentialsNodeOperationalCertStatus = u8;
pub type MTROperationalCredentialsOperationalCertStatus = u8;
pub type MTRGroupKeyManagementGroupKeySecurityPolicy = u8;
pub type MTRGroupKeyManagementFeature = u32;
pub type MTRICDManagementClientType = u8;
pub type MTRICDManagementOperatingMode = u8;
pub type MTRICDManagementFeature = u32;
pub type MTRICDManagementUserActiveModeTriggerBitmap = u32;
pub type MTRTimerStatus = u8;
pub type MTRTimerFeature = u32;
pub type MTROvenCavityOperationalStateErrorState = u8;
pub type MTROvenCavityOperationalStateOperationalState = u8;
pub type MTROvenModeModeTag = u16;
pub type MTRLaundryDryerControlsDrynessLevel = u8;
pub type MTRModeSelectFeature = u32;
pub type MTRLaundryWasherModeModeTag = u16;
pub type MTRRefrigeratorAndTemperatureControlledCabinetModeModeTag = u16;
pub type MTRLaundryWasherControlsNumberOfRinses = u8;
pub type MTRLaundryWasherControlsFeature = u32;
pub type MTRRVCRunModeModeTag = u16;
pub type MTRRVCRunModeStatusCode = u8;
pub type MTRRVCRunModeFeature = u32;
pub type MTRRVCCleanModeModeTag = u16;
pub type MTRRVCCleanModeStatusCode = u8;
pub type MTRRVCCleanModeFeature = u32;
pub type MTRTemperatureControlFeature = u32;
pub type MTRRefrigeratorAlarmAlarmBitmap = u32;
pub type MTRDishwasherModeModeTag = u16;
pub type MTRAirQuality = u8;
pub type MTRAirQualityFeature = u32;
pub type MTRSmokeCOAlarmAlarmState = u8;
pub type MTRSmokeCOAlarmContaminationState = u8;
pub type MTRSmokeCOAlarmEndOfService = u8;
pub type MTRSmokeCOAlarmExpressedState = u8;
pub type MTRSmokeCOAlarmMuteState = u8;
pub type MTRSmokeCOAlarmSensitivity = u8;
pub type MTRSmokeCOAlarmFeature = u32;
pub type MTRDishwasherAlarmAlarmBitmap = u32;
pub type MTRDishwasherAlarmFeature = u32;
pub type MTRMicrowaveOvenModeModeTag = u16;
pub type MTRMicrowaveOvenControlFeature = u32;
pub type MTROperationalStateErrorState = u8;
pub type MTROperationalState = u8;
pub type MTRRVCOperationalStateErrorState = u8;
pub type MTRRVCOperationalStateOperationalState = u8;
pub type MTRScenesManagementCopyModeBitmap = u8;
pub type MTRScenesManagementFeature = u32;
pub type MTRGroupcastFeature = u32;
pub type MTRHEPAFilterMonitoringChangeIndication = u8;
pub type MTRHEPAFilterMonitoringDegradationDirection = u8;
pub type MTRHEPAFilterMonitoringProductIdentifierType = u8;
pub type MTRHEPAFilterMonitoringFeature = u32;
pub type MTRActivatedCarbonFilterMonitoringChangeIndication = u8;
pub type MTRActivatedCarbonFilterMonitoringDegradationDirection = u8;
pub type MTRActivatedCarbonFilterMonitoringProductIdentifierType = u8;
pub type MTRActivatedCarbonFilterMonitoringFeature = u32;
pub type MTRBooleanStateConfigurationAlarmModeBitmap = u8;
pub type MTRBooleanStateConfigurationFeature = u32;
pub type MTRBooleanStateConfigurationSensorFaultBitmap = u16;
pub type MTRValveConfigurationAndControlStatusCode = u8;
pub type MTRValveConfigurationAndControlValveState = u8;
pub type MTRValveConfigurationAndControlFeature = u32;
pub type MTRValveConfigurationAndControlValveFaultBitmap = u16;
pub type MTRElectricalPowerMeasurementMeasurementType = u16;
pub type MTRElectricalPowerMeasurementPowerMode = u8;
pub type MTRElectricalPowerMeasurementFeature = u32;
pub type MTRElectricalEnergyMeasurementMeasurementType = u16;
pub type MTRElectricalEnergyMeasurementFeature = u32;
pub type MTRWaterHeaterManagementBoostState = u8;
pub type MTRWaterHeaterManagementFeature = u32;
pub type MTRWaterHeaterManagementWaterHeaterHeatSourceBitmap = u8;
pub type MTRCommodityPriceDetailBitmap = u16;
pub type MTRCommodityPriceFeature = u32;
pub type MTRMessagesFutureMessagePreference = u8;
pub type MTRMessagesMessagePriority = u8;
pub type MTRMessagesFeature = u32;
pub type MTRMessagesMessageControlBitmap = u8;
pub type MTRDeviceEnergyManagementAdjustmentCause = u8;
pub type MTRDeviceEnergyManagementCause = u8;
pub type MTRDeviceEnergyManagementCostType = u8;
pub type MTRDeviceEnergyManagementESAState = u8;
pub type MTRDeviceEnergyManagementESAType = u8;
pub type MTRDeviceEnergyManagementForecastUpdateReason = u8;
pub type MTRDeviceEnergyManagementOptOutState = u8;
pub type MTRDeviceEnergyManagementPowerAdjustReason = u8;
pub type MTRDeviceEnergyManagementFeature = u32;
pub type MTREnergyEVSEEnergyTransferStoppedReason = u8;
pub type MTREnergyEVSEFaultState = u8;
pub type MTREnergyEVSEState = u8;
pub type MTREnergyEVSESupplyState = u8;
pub type MTREnergyEVSEFeature = u32;
pub type MTREnergyEVSETargetDayOfWeekBitmap = u8;
pub type MTREnergyPreferenceEnergyPriority = u8;
pub type MTREnergyPreferenceFeature = u32;
pub type MTRPowerTopologyFeature = u32;
pub type MTREnergyEVSEModeModeTag = u16;
pub type MTRWaterHeaterModeModeTag = u16;
pub type MTRDeviceEnergyManagementModeModeTag = u16;
pub type MTRElectricalGridConditionsThreeLevel = u8;
pub type MTRElectricalGridConditionsFeature = u32;
pub type MTRDoorLockAlarmCode = u8;
pub type MTRDoorLockDlAlarmCode = u8;
pub type MTRDoorLockAppleAliroCredentialType = u8;
pub type MTRDoorLockAppleAliroOperationSource = u8;
pub type MTRDoorLockCredentialRule = u8;
pub type MTRDoorLockDlCredentialRule = u8;
pub type MTRDoorLockCredentialType = u8;
pub type MTRDoorLockDlCredentialType = u8;
pub type MTRDoorLockDataOperationType = u8;
pub type MTRDoorLockDlDataOperationType = u8;
pub type MTRDoorLockDlLockState = u8;
pub type MTRDoorLockDlLockType = u8;
pub type MTRDoorLockDlStatus = u8;
pub type MTRDoorLockOperationEventCode = u8;
pub type MTRDoorLockProgrammingEventCode = u8;
pub type MTRDoorLockSetPinOrIdStatus = u8;
pub type MTRDoorLockDoorState = u8;
pub type MTRDoorLockDlDoorState = u8;
pub type MTRDoorLockLockDataType = u8;
pub type MTRDoorLockDlLockDataType = u8;
pub type MTRDoorLockLockOperationType = u8;
pub type MTRDoorLockDlLockOperationType = u8;
pub type MTRDoorLockOperatingMode = u8;
pub type MTRDoorLockDlOperatingMode = u8;
pub type MTRDoorLockOperationError = u8;
pub type MTRDoorLockDlOperationError = u8;
pub type MTRDoorLockOperationSource = u8;
pub type MTRDoorLockDlOperationSource = u8;
pub type MTRDoorLockUserStatus = u8;
pub type MTRDoorLockDlUserStatus = u8;
pub type MTRDoorLockUserType = u8;
pub type MTRDoorLockDlUserType = u8;
pub type MTRDoorLockDaysMaskMap = u8;
pub type MTRDoorLockDlDaysMaskMap = u8;
pub type MTRDoorLockDlCredentialRuleMask = u8;
pub type MTRDoorLockDlCredentialRulesSupport = u8;
pub type MTRDoorLockDlDefaultConfigurationRegister = u16;
pub type MTRDoorLockDlKeypadOperationEventMask = u16;
pub type MTRDoorLockDlKeypadProgrammingEventMask = u16;
pub type MTRDoorLockDlLocalProgrammingFeatures = u8;
pub type MTRDoorLockDlManualOperationEventMask = u16;
pub type MTRDoorLockDlRFIDOperationEventMask = u16;
pub type MTRDoorLockDlRFIDProgrammingEventMask = u16;
pub type MTRDoorLockDlRemoteOperationEventMask = u16;
pub type MTRDoorLockDlRemoteProgrammingEventMask = u16;
pub type MTRDoorLockDlSupportedOperatingModes = u16;
pub type MTRDoorLockDayOfWeek = u8;
pub type MTRDoorLockFeature = u32;
pub type MTRWindowCoveringEndProductType = u8;
pub type MTRWindowCoveringType = u8;
pub type MTRWindowCoveringConfigStatus = u8;
pub type MTRWindowCoveringFeature = u32;
pub type MTRWindowCoveringMode = u8;
pub type MTRWindowCoveringOperationalStatus = u8;
pub type MTRWindowCoveringSafetyStatus = u16;
pub type MTRClosureControlClosureError = u8;
pub type MTRClosureControlCurrentPosition = u8;
pub type MTRClosureControlMainState = u8;
pub type MTRClosureControlTargetPosition = u8;
pub type MTRClosureControlFeature = u32;
pub type MTRClosureControlLatchControlModesBitmap = u8;
pub type MTRClosureDimensionClosureUnit = u8;
pub type MTRClosureDimensionModulationType = u8;
pub type MTRClosureDimensionOverflow = u8;
pub type MTRClosureDimensionRotationAxis = u8;
pub type MTRClosureDimensionStepDirection = u8;
pub type MTRClosureDimensionTranslationDirection = u8;
pub type MTRClosureDimensionFeature = u32;
pub type MTRClosureDimensionLatchControlModesBitmap = u8;
pub type MTRServiceAreaOperationalStatus = u8;
pub type MTRServiceAreaSelectAreasStatus = u8;
pub type MTRServiceAreaSkipAreaStatus = u8;
pub type MTRServiceAreaFeature = u32;
pub type MTRPumpConfigurationAndControlControlMode = u8;
pub type MTRPumpConfigurationAndControlPumpControlMode = u8;
pub type MTRPumpConfigurationAndControlOperationMode = u8;
pub type MTRPumpConfigurationAndControlPumpOperationMode = u8;
pub type MTRPumpConfigurationAndControlFeature = u32;
pub type MTRPumpConfigurationAndControlPumpFeature = u32;
pub type MTRPumpConfigurationAndControlPumpStatusBitmap = u16;
pub type MTRPumpConfigurationAndControlPumpStatus = u16;
pub type MTRThermostatACCapacityFormat = u8;
pub type MTRThermostatACCompressorType = u8;
pub type MTRThermostatACLouverPosition = u8;
pub type MTRThermostatACRefrigerantType = u8;
pub type MTRThermostatACType = u8;
pub type MTRThermostatControlSequenceOfOperation = u8;
pub type MTRThermostatControlSequence = u8;
pub type MTRThermostatPresetScenario = u8;
pub type MTRThermostatSetpointChangeSource = u8;
pub type MTRThermostatSetpointRaiseLowerMode = u8;
pub type MTRThermostatSetpointAdjustMode = u8;
pub type MTRThermostatStartOfWeek = u8;
pub type MTRThermostatSystemMode = u8;
pub type MTRThermostatTemperatureSetpointHold = u8;
pub type MTRThermostatRunningMode = u8;
pub type MTRThermostatACErrorCodeBitmap = u32;
pub type MTRThermostatFeature = u32;
pub type MTRThermostatHVACSystemTypeBitmap = u8;
pub type MTRThermostatOccupancyBitmap = u8;
pub type MTRThermostatPresetTypeFeaturesBitmap = u16;
pub type MTRThermostatProgrammingOperationModeBitmap = u8;
pub type MTRThermostatRelayStateBitmap = u16;
pub type MTRThermostatRemoteSensingBitmap = u8;
pub type MTRThermostatScheduleDayOfWeekBitmap = u8;
pub type MTRThermostatDayOfWeek = u8;
pub type MTRThermostatScheduleModeBitmap = u8;
pub type MTRThermostatModeForSequence = u8;
pub type MTRThermostatScheduleTypeFeaturesBitmap = u16;
pub type MTRThermostatSuggestionNotFollowingReasonBitmap = u16;
pub type MTRFanControlAirflowDirection = u8;
pub type MTRFanControlFanMode = u8;
pub type MTRFanControlFanModeType = u8;
pub type MTRFanControlFanModeSequence = u8;
pub type MTRFanControlFanModeSequenceType = u8;
pub type MTRFanControlStepDirection = u8;
pub type MTRFanControlFeature = u32;
pub type MTRFanControlRockBitmap = u8;
pub type MTRFanControlRockSupportMask = u8;
pub type MTRFanControlWindBitmap = u8;
pub type MTRFanControlWindSupportMask = u8;
pub type MTRThermostatUserInterfaceConfigurationKeypadLockout = u8;
pub type MTRThermostatUserInterfaceConfigurationScheduleProgrammingVisibility = u8;
pub type MTRThermostatUserInterfaceConfigurationTemperatureDisplayMode = u8;
pub type MTRColorControlColorLoopAction = u8;
pub type MTRColorControlColorLoopDirection = u8;
pub type MTRColorControlColorMode = u8;
pub type MTRColorControlDirection = u8;
pub type MTRColorControlHueDirection = u8;
pub type MTRColorControlDriftCompensation = u8;
pub type MTRColorControlEnhancedColorMode = u8;
pub type MTRColorControlMoveMode = u8;
pub type MTRColorControlHueMoveMode = u8;
pub type MTRColorControlStepMode = u8;
pub type MTRColorControlHueStepMode = u8;
pub type MTRColorControlColorCapabilitiesBitmap = u16;
pub type MTRColorControlColorCapabilities = u16;
pub type MTRColorControlFeature = u32;
pub type MTRColorControlOptionsBitmap = u8;
pub type MTRColorControlUpdateFlagsBitmap = u8;
pub type MTRColorControlColorLoopUpdateFlags = u8;
pub type MTRBallastConfigurationBallastStatusBitmap = u8;
pub type MTRBallastConfigurationLampAlarmModeBitmap = u8;
pub type MTRIlluminanceMeasurementLightSensorType = u8;
pub type MTRPressureMeasurementFeature = u32;
pub type MTRPressureMeasurementPressureFeature = u32;
pub type MTROccupancySensingOccupancySensorType = u8;
pub type MTROccupancySensingFeature = u32;
pub type MTROccupancySensingOccupancyBitmap = u8;
pub type MTROccupancySensingOccupancySensorTypeBitmap = u8;
pub type MTRCarbonMonoxideConcentrationMeasurementLevelValue = u8;
pub type MTRCarbonMonoxideConcentrationMeasurementMeasurementMedium = u8;
pub type MTRCarbonMonoxideConcentrationMeasurementMeasurementUnit = u8;
pub type MTRCarbonMonoxideConcentrationMeasurementFeature = u32;
pub type MTRCarbonDioxideConcentrationMeasurementLevelValue = u8;
pub type MTRCarbonDioxideConcentrationMeasurementMeasurementMedium = u8;
pub type MTRCarbonDioxideConcentrationMeasurementMeasurementUnit = u8;
pub type MTRCarbonDioxideConcentrationMeasurementFeature = u32;
pub type MTRNitrogenDioxideConcentrationMeasurementLevelValue = u8;
pub type MTRNitrogenDioxideConcentrationMeasurementMeasurementMedium = u8;
pub type MTRNitrogenDioxideConcentrationMeasurementMeasurementUnit = u8;
pub type MTRNitrogenDioxideConcentrationMeasurementFeature = u32;
pub type MTROzoneConcentrationMeasurementLevelValue = u8;
pub type MTROzoneConcentrationMeasurementMeasurementMedium = u8;
pub type MTROzoneConcentrationMeasurementMeasurementUnit = u8;
pub type MTROzoneConcentrationMeasurementFeature = u32;
pub type MTRPM25ConcentrationMeasurementLevelValue = u8;
pub type MTRPM25ConcentrationMeasurementMeasurementMedium = u8;
pub type MTRPM25ConcentrationMeasurementMeasurementUnit = u8;
pub type MTRPM25ConcentrationMeasurementFeature = u32;
pub type MTRFormaldehydeConcentrationMeasurementLevelValue = u8;
pub type MTRFormaldehydeConcentrationMeasurementMeasurementMedium = u8;
pub type MTRFormaldehydeConcentrationMeasurementMeasurementUnit = u8;
pub type MTRFormaldehydeConcentrationMeasurementFeature = u32;
pub type MTRPM1ConcentrationMeasurementLevelValue = u8;
pub type MTRPM1ConcentrationMeasurementMeasurementMedium = u8;
pub type MTRPM1ConcentrationMeasurementMeasurementUnit = u8;
pub type MTRPM1ConcentrationMeasurementFeature = u32;
pub type MTRPM10ConcentrationMeasurementLevelValue = u8;
pub type MTRPM10ConcentrationMeasurementMeasurementMedium = u8;
pub type MTRPM10ConcentrationMeasurementMeasurementUnit = u8;
pub type MTRPM10ConcentrationMeasurementFeature = u32;
pub type MTRTotalVolatileOrganicCompoundsConcentrationMeasurementLevelValue = u8;
pub type MTRTotalVolatileOrganicCompoundsConcentrationMeasurementMeasurementMedium = u8;
pub type MTRTotalVolatileOrganicCompoundsConcentrationMeasurementMeasurementUnit = u8;
pub type MTRTotalVolatileOrganicCompoundsConcentrationMeasurementFeature = u32;
pub type MTRRadonConcentrationMeasurementLevelValue = u8;
pub type MTRRadonConcentrationMeasurementMeasurementMedium = u8;
pub type MTRRadonConcentrationMeasurementMeasurementUnit = u8;
pub type MTRRadonConcentrationMeasurementFeature = u32;
pub type MTRThreadBorderRouterManagementFeature = u32;
pub type MTRChannelType = u8;
pub type MTRChannelLineupInfoType = u8;
pub type MTRChannelStatus = u8;
pub type MTRChannelFeature = u32;
pub type MTRChannelRecordingFlagBitmap = u32;
pub type MTRTargetNavigatorStatus = u8;
pub type MTRMediaPlaybackCharacteristic = u8;
pub type MTRMediaPlaybackPlaybackState = u8;
pub type MTRMediaPlaybackStatus = u8;
pub type MTRMediaPlaybackFeature = u32;
pub type MTRMediaInputInputType = u8;
pub type MTRMediaInputFeature = u32;
pub type MTRKeypadInputCECKeyCode = u8;
pub type MTRKeypadInputCecKeyCode = u8;
pub type MTRKeypadInputStatus = u8;
pub type MTRKeypadInputFeature = u32;
pub type MTRContentLauncherCharacteristic = u8;
pub type MTRContentLauncherMetricType = u8;
pub type MTRContentLauncherParameter = u8;
pub type MTRContentLauncherStatus = u8;
pub type MTRContentLauncherContentLaunchStatus = u8;
pub type MTRContentLauncherFeature = u32;
pub type MTRContentLauncherSupportedProtocolsBitmap = u32;
pub type MTRContentLauncherSupportedStreamingProtocol = u32;
pub type MTRAudioOutputOutputType = u8;
pub type MTRAudioOutputFeature = u32;
pub type MTRApplicationLauncherStatus = u8;
pub type MTRApplicationLauncherFeature = u32;
pub type MTRApplicationBasicApplicationStatus = u8;
pub type MTRContentControlFeature = u32;
pub type MTRContentAppObserverStatus = u8;
pub type MTRZoneManagementStatusCode = u8;
pub type MTRZoneManagementZoneEventStoppedReason = u8;
pub type MTRZoneManagementZoneEventTriggeredReason = u8;
pub type MTRZoneManagementZoneSource = u8;
pub type MTRZoneManagementZoneType = u8;
pub type MTRZoneManagementZoneUse = u8;
pub type MTRZoneManagementFeature = u32;
pub type MTRCameraAVStreamManagementAudioCodec = u8;
pub type MTRCameraAVStreamManagementImageCodec = u8;
pub type MTRCameraAVStreamManagementTriStateAuto = u8;
pub type MTRCameraAVStreamManagementTwoWayTalkSupportType = u8;
pub type MTRCameraAVStreamManagementVideoCodec = u8;
pub type MTRCameraAVStreamManagementFeature = u32;
pub type MTRCameraAVSettingsUserLevelManagementPhysicalMovement = u8;
pub type MTRCameraAVSettingsUserLevelManagementFeature = u32;
pub type MTRWebRTCTransportProviderFeature = u32;
pub type MTRPushAVStreamTransportCMAFInterface = u8;
pub type MTRPushAVStreamTransportContainerFormat = u8;
pub type MTRPushAVStreamTransportIngestMethods = u8;
pub type MTRPushAVStreamTransportStatusCode = u8;
pub type MTRPushAVStreamTransportTransportStatus = u8;
pub type MTRPushAVStreamTransportTransportTriggerType = u8;
pub type MTRPushAVStreamTransportTriggerActivationReason = u8;
pub type MTRPushAVStreamTransportFeature = u32;
pub type MTRCommodityTariffAuxiliaryLoadSetting = u8;
pub type MTRCommodityTariffBlockMode = u8;
pub type MTRCommodityTariffDayEntryRandomizationType = u8;
pub type MTRCommodityTariffDayType = u8;
pub type MTRCommodityTariffPeakPeriodSeverity = u8;
pub type MTRCommodityTariffDayPatternDayOfWeekBitmap = u8;
pub type MTRCommodityTariffFeature = u32;
pub type MTRCommissionerControlSupportedDeviceCategoryBitmap = u32;
pub type MTRJointFabricDatastoreDatastoreAccessControlEntryAuthMode = u8;
pub type MTRJointFabricDatastoreDatastoreAccessControlEntryPrivilege = u8;
pub type MTRJointFabricDatastoreDatastoreGroupKeyMulticastPolicy = u8;
pub type MTRJointFabricDatastoreDatastoreGroupKeySecurityPolicy = u8;
pub type MTRJointFabricDatastoreDatastoreState = u8;
pub type MTRJointFabricAdministratorICACResponseStatus = u8;
pub type MTRJointFabricAdministratorStatusCode = u8;
pub type MTRJointFabricAdministratorTransferAnchorResponseStatus = u8;
pub type MTRTLSClientManagementStatusCode = u8;
pub type MTRMeterIdentificationMeterType = u8;
pub type MTRMeterIdentificationFeature = u32;
pub type MTRCommodityMeteringMeasurementType = u16;
pub type MTRAppleLockClusterFeature = u32;
pub type MTRAppleLockClusterIntentDetectionBitmask = u8;
pub type MTRUnitTestingSimple = u8;
pub type MTRTestClusterSimple = u8;
pub type MTRUnitTestingBitmap16MaskMap = u16;
pub type MTRTestClusterBitmap16MaskMap = u16;
pub type MTRUnitTestingBitmap32MaskMap = u32;
pub type MTRTestClusterBitmap32MaskMap = u32;
pub type MTRUnitTestingBitmap64MaskMap = u64;
pub type MTRTestClusterBitmap64MaskMap = u64;
pub type MTRUnitTestingBitmap8MaskMap = u8;
pub type MTRTestClusterBitmap8MaskMap = u8;
pub type MTRUnitTestingSimpleBitmap = u8;
pub type MTRTestClusterSimpleBitmap = u8;
impl MTRBaseClusterIdentify_Deprecated for MTRBaseClusterIdentify {}
pub trait MTRBaseClusterIdentify_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn identifyWithParams_completionHandler_(
        &self,
        params: MTRIdentifyClusterIdentifyParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, identifyWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn triggerEffectWithParams_completionHandler_(
        &self,
        params: MTRIdentifyClusterTriggerEffectParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, triggerEffectWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeIdentifyTimeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeIdentifyTimeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeIdentifyTimeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeIdentifyTimeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeIdentifyTimeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeIdentifyTimeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeIdentifyTimeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeIdentifyTimeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeIdentifyTypeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeIdentifyTypeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeIdentifyTypeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeIdentifyTypeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeIdentifyTimeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIdentify").unwrap(), readAttributeIdentifyTimeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeIdentifyTypeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIdentify").unwrap(), readAttributeIdentifyTypeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIdentify").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIdentify").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIdentify").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIdentify").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIdentify").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterGroups_Deprecated for MTRBaseClusterGroups {}
pub trait MTRBaseClusterGroups_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn addGroupWithParams_completionHandler_(
        &self,
        params: MTRGroupsClusterAddGroupParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addGroupWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn viewGroupWithParams_completionHandler_(
        &self,
        params: MTRGroupsClusterViewGroupParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, viewGroupWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn getGroupMembershipWithParams_completionHandler_(
        &self,
        params: MTRGroupsClusterGetGroupMembershipParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getGroupMembershipWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn removeGroupWithParams_completionHandler_(
        &self,
        params: MTRGroupsClusterRemoveGroupParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeGroupWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn removeAllGroupsWithParams_completionHandler_(
        &self,
        params: MTRGroupsClusterRemoveAllGroupsParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeAllGroupsWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn removeAllGroupsWithCompletionHandler_(&self, completionHandler: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeAllGroupsWithCompletionHandler : completionHandler)
    }
    unsafe fn addGroupIfIdentifyingWithParams_completionHandler_(
        &self,
        params: MTRGroupsClusterAddGroupIfIdentifyingParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addGroupIfIdentifyingWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNameSupportWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNameSupportWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNameSupportWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNameSupportWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNameSupportWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroups").unwrap(), readAttributeNameSupportWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroups").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroups").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroups").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroups").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroups").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterOnOff_Deprecated for MTRBaseClusterOnOff {}
pub trait MTRBaseClusterOnOff_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn offWithParams_completionHandler_(
        &self,
        params: MTROnOffClusterOffParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, offWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn offWithCompletionHandler_(&self, completionHandler: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, offWithCompletionHandler : completionHandler)
    }
    unsafe fn onWithParams_completionHandler_(
        &self,
        params: MTROnOffClusterOnParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn onWithCompletionHandler_(&self, completionHandler: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onWithCompletionHandler : completionHandler)
    }
    unsafe fn toggleWithParams_completionHandler_(
        &self,
        params: MTROnOffClusterToggleParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, toggleWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn toggleWithCompletionHandler_(&self, completionHandler: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, toggleWithCompletionHandler : completionHandler)
    }
    unsafe fn offWithEffectWithParams_completionHandler_(
        &self,
        params: MTROnOffClusterOffWithEffectParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, offWithEffectWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn onWithRecallGlobalSceneWithParams_completionHandler_(
        &self,
        params: MTROnOffClusterOnWithRecallGlobalSceneParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onWithRecallGlobalSceneWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn onWithRecallGlobalSceneWithCompletionHandler_(
        &self,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onWithRecallGlobalSceneWithCompletionHandler : completionHandler)
    }
    unsafe fn onWithTimedOffWithParams_completionHandler_(
        &self,
        params: MTROnOffClusterOnWithTimedOffParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onWithTimedOffWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOnOffWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnOffWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOnOffWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOnOffWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGlobalSceneControlWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGlobalSceneControlWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGlobalSceneControlWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGlobalSceneControlWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOnTimeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnTimeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeOnTimeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnTimeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeOnTimeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnTimeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOnTimeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOnTimeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOffWaitTimeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOffWaitTimeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeOffWaitTimeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOffWaitTimeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeOffWaitTimeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOffWaitTimeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOffWaitTimeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOffWaitTimeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStartUpOnOffWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStartUpOnOffWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeStartUpOnOffWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpOnOffWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeStartUpOnOffWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpOnOffWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeStartUpOnOffWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStartUpOnOffWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOnOffWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), readAttributeOnOffWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGlobalSceneControlWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), readAttributeGlobalSceneControlWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOnTimeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), readAttributeOnTimeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOffWaitTimeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), readAttributeOffWaitTimeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeStartUpOnOffWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), readAttributeStartUpOnOffWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOff").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterLevelControl_Deprecated for MTRBaseClusterLevelControl {}
pub trait MTRBaseClusterLevelControl_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn moveToLevelWithParams_completionHandler_(
        &self,
        params: MTRLevelControlClusterMoveToLevelParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToLevelWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn moveWithParams_completionHandler_(
        &self,
        params: MTRLevelControlClusterMoveParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn stepWithParams_completionHandler_(
        &self,
        params: MTRLevelControlClusterStepParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn stopWithParams_completionHandler_(
        &self,
        params: MTRLevelControlClusterStopParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn moveToLevelWithOnOffWithParams_completionHandler_(
        &self,
        params: MTRLevelControlClusterMoveToLevelWithOnOffParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToLevelWithOnOffWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn moveWithOnOffWithParams_completionHandler_(
        &self,
        params: MTRLevelControlClusterMoveWithOnOffParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveWithOnOffWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn stepWithOnOffWithParams_completionHandler_(
        &self,
        params: MTRLevelControlClusterStepWithOnOffParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepWithOnOffWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn stopWithOnOffWithParams_completionHandler_(
        &self,
        params: MTRLevelControlClusterStopWithOnOffParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithOnOffWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn moveToClosestFrequencyWithParams_completionHandler_(
        &self,
        params: MTRLevelControlClusterMoveToClosestFrequencyParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToClosestFrequencyWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentLevelWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentLevelWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentLevelWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentLevelWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRemainingTimeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRemainingTimeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRemainingTimeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRemainingTimeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinLevelWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinLevelWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMinLevelWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinLevelWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxLevelWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxLevelWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxLevelWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxLevelWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentFrequencyWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentFrequencyWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentFrequencyWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentFrequencyWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinFrequencyWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinFrequencyWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMinFrequencyWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinFrequencyWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxFrequencyWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxFrequencyWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxFrequencyWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxFrequencyWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOptionsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOptionsWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeOptionsWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOptionsWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeOptionsWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOptionsWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOptionsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOptionsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOnOffTransitionTimeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnOffTransitionTimeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeOnOffTransitionTimeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnOffTransitionTimeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeOnOffTransitionTimeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnOffTransitionTimeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOnOffTransitionTimeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOnOffTransitionTimeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOnLevelWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnLevelWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeOnLevelWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnLevelWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeOnLevelWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnLevelWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOnLevelWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOnLevelWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOnTransitionTimeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnTransitionTimeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeOnTransitionTimeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnTransitionTimeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeOnTransitionTimeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnTransitionTimeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOnTransitionTimeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOnTransitionTimeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOffTransitionTimeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOffTransitionTimeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeOffTransitionTimeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOffTransitionTimeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeOffTransitionTimeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOffTransitionTimeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOffTransitionTimeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOffTransitionTimeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDefaultMoveRateWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultMoveRateWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeDefaultMoveRateWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultMoveRateWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeDefaultMoveRateWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultMoveRateWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDefaultMoveRateWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDefaultMoveRateWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStartUpCurrentLevelWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStartUpCurrentLevelWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeStartUpCurrentLevelWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpCurrentLevelWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeStartUpCurrentLevelWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpCurrentLevelWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeStartUpCurrentLevelWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStartUpCurrentLevelWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentLevelWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeCurrentLevelWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRemainingTimeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeRemainingTimeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMinLevelWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeMinLevelWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxLevelWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeMaxLevelWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentFrequencyWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeCurrentFrequencyWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMinFrequencyWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeMinFrequencyWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxFrequencyWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeMaxFrequencyWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOptionsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeOptionsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOnOffTransitionTimeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeOnOffTransitionTimeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOnLevelWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeOnLevelWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOnTransitionTimeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeOnTransitionTimeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOffTransitionTimeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeOffTransitionTimeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDefaultMoveRateWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeDefaultMoveRateWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeStartUpCurrentLevelWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeStartUpCurrentLevelWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLevelControl").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterDescriptor_Deprecated for MTRBaseClusterDescriptor {}
pub trait MTRBaseClusterDescriptor_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeDeviceListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDeviceListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDeviceListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDeviceListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeServerListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeServerListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeServerListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeServerListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClientListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClientListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClientListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClientListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePartsListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePartsListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePartsListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePartsListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDeviceListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), readAttributeDeviceListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeServerListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), readAttributeServerListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClientListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), readAttributeClientListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePartsListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), readAttributePartsListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDescriptor").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterBinding_Deprecated for MTRBaseClusterBinding {}
pub trait MTRBaseClusterBinding_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeBindingWithParams_completionHandler_(
        &self,
        params: MTRReadParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBindingWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeBindingWithValue_completionHandler_(
        &self,
        value: NSArray,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBindingWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeBindingWithValue_params_completionHandler_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBindingWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBindingWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBindingWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBindingWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinding").unwrap(), readAttributeBindingWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinding").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinding").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinding").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinding").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinding").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterAccessControl_Deprecated for MTRBaseClusterAccessControl {}
pub trait MTRBaseClusterAccessControl_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeAclWithParams_completionHandler_(
        &self,
        params: MTRReadParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAclWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeAclWithValue_completionHandler_(
        &self,
        value: NSArray,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAclWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeAclWithValue_params_completionHandler_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAclWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAclWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAclWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeExtensionWithParams_completionHandler_(
        &self,
        params: MTRReadParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeExtensionWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeExtensionWithValue_completionHandler_(
        &self,
        value: NSArray,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeExtensionWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeExtensionWithValue_params_completionHandler_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeExtensionWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeExtensionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeExtensionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSubjectsPerAccessControlEntryWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSubjectsPerAccessControlEntryWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSubjectsPerAccessControlEntryWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSubjectsPerAccessControlEntryWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTargetsPerAccessControlEntryWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTargetsPerAccessControlEntryWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTargetsPerAccessControlEntryWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTargetsPerAccessControlEntryWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAccessControlEntriesPerFabricWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAccessControlEntriesPerFabricWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAccessControlEntriesPerFabricWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAccessControlEntriesPerFabricWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAclWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeAclWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeExtensionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeExtensionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSubjectsPerAccessControlEntryWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeSubjectsPerAccessControlEntryWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTargetsPerAccessControlEntryWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeTargetsPerAccessControlEntryWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAccessControlEntriesPerFabricWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeAccessControlEntriesPerFabricWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccessControl").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterActions_Deprecated for MTRBaseClusterActions {}
pub trait MTRBaseClusterActions_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn instantActionWithParams_completionHandler_(
        &self,
        params: MTRActionsClusterInstantActionParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, instantActionWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn instantActionWithTransitionWithParams_completionHandler_(
        &self,
        params: MTRActionsClusterInstantActionWithTransitionParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, instantActionWithTransitionWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn startActionWithParams_completionHandler_(
        &self,
        params: MTRActionsClusterStartActionParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startActionWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn startActionWithDurationWithParams_completionHandler_(
        &self,
        params: MTRActionsClusterStartActionWithDurationParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startActionWithDurationWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn stopActionWithParams_completionHandler_(
        &self,
        params: MTRActionsClusterStopActionParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopActionWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn pauseActionWithParams_completionHandler_(
        &self,
        params: MTRActionsClusterPauseActionParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseActionWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn pauseActionWithDurationWithParams_completionHandler_(
        &self,
        params: MTRActionsClusterPauseActionWithDurationParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseActionWithDurationWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn resumeActionWithParams_completionHandler_(
        &self,
        params: MTRActionsClusterResumeActionParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resumeActionWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn enableActionWithParams_completionHandler_(
        &self,
        params: MTRActionsClusterEnableActionParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enableActionWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn enableActionWithDurationWithParams_completionHandler_(
        &self,
        params: MTRActionsClusterEnableActionWithDurationParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enableActionWithDurationWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn disableActionWithParams_completionHandler_(
        &self,
        params: MTRActionsClusterDisableActionParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, disableActionWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn disableActionWithDurationWithParams_completionHandler_(
        &self,
        params: MTRActionsClusterDisableActionWithDurationParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, disableActionWithDurationWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActionListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActionListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActionListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActionListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEndpointListsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEndpointListsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeEndpointListsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEndpointListsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSetupURLWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSetupURLWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSetupURLWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSetupURLWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActionListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActions").unwrap(), readAttributeActionListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeEndpointListsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActions").unwrap(), readAttributeEndpointListsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSetupURLWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActions").unwrap(), readAttributeSetupURLWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActions").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActions").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActions").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActions").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterActions").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterBasic_Deprecated for MTRBaseClusterBasic {}
pub trait MTRBaseClusterBasic_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn mfgSpecificPingWithParams_completionHandler_(
        &self,
        params: MTRBasicClusterMfgSpecificPingParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, mfgSpecificPingWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn mfgSpecificPingWithCompletionHandler_(&self, completionHandler: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, mfgSpecificPingWithCompletionHandler : completionHandler)
    }
    unsafe fn readAttributeDataModelRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDataModelRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDataModelRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDataModelRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeVendorNameWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVendorNameWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeVendorNameWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeVendorNameWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeVendorIDWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVendorIDWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeVendorIDWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeVendorIDWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProductNameWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductNameWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeProductNameWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProductNameWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProductIDWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductIDWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeProductIDWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProductIDWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNodeLabelWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNodeLabelWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNodeLabelWithValue_completionHandler_(
        &self,
        value: NSString,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNodeLabelWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNodeLabelWithValue_params_completionHandler_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNodeLabelWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNodeLabelWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNodeLabelWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLocationWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocationWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeLocationWithValue_completionHandler_(
        &self,
        value: NSString,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocationWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeLocationWithValue_params_completionHandler_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocationWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLocationWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLocationWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeHardwareVersionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHardwareVersionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeHardwareVersionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHardwareVersionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeHardwareVersionStringWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHardwareVersionStringWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeHardwareVersionStringWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHardwareVersionStringWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSoftwareVersionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoftwareVersionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSoftwareVersionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSoftwareVersionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSoftwareVersionStringWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoftwareVersionStringWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSoftwareVersionStringWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSoftwareVersionStringWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeManufacturingDateWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeManufacturingDateWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeManufacturingDateWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeManufacturingDateWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePartNumberWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePartNumberWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePartNumberWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePartNumberWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProductURLWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductURLWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeProductURLWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProductURLWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProductLabelWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductLabelWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeProductLabelWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProductLabelWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSerialNumberWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSerialNumberWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSerialNumberWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSerialNumberWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLocalConfigDisabledWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocalConfigDisabledWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeLocalConfigDisabledWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalConfigDisabledWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeLocalConfigDisabledWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalConfigDisabledWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLocalConfigDisabledWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLocalConfigDisabledWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeReachableWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReachableWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeReachableWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeReachableWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUniqueIDWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUniqueIDWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeUniqueIDWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUniqueIDWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCapabilityMinimaWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCapabilityMinimaWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCapabilityMinimaWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCapabilityMinimaWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDataModelRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeDataModelRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeVendorNameWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeVendorNameWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeVendorIDWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeVendorIDWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeProductNameWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeProductNameWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeProductIDWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeProductIDWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNodeLabelWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeNodeLabelWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLocationWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeLocationWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeHardwareVersionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeHardwareVersionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeHardwareVersionStringWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeHardwareVersionStringWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSoftwareVersionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeSoftwareVersionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSoftwareVersionStringWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeSoftwareVersionStringWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeManufacturingDateWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeManufacturingDateWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePartNumberWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributePartNumberWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeProductURLWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeProductURLWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeProductLabelWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeProductLabelWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSerialNumberWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeSerialNumberWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLocalConfigDisabledWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeLocalConfigDisabledWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeReachableWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeReachableWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeUniqueIDWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeUniqueIDWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCapabilityMinimaWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeCapabilityMinimaWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBasic").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterOtaSoftwareUpdateProvider_Deprecated
    for MTRBaseClusterOtaSoftwareUpdateProvider
{
}
pub trait MTRBaseClusterOtaSoftwareUpdateProvider_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn queryImageWithParams_completionHandler_(
        &self,
        params: MTROtaSoftwareUpdateProviderClusterQueryImageParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, queryImageWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn applyUpdateRequestWithParams_completionHandler_(
        &self,
        params: MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, applyUpdateRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn notifyUpdateAppliedWithParams_completionHandler_(
        &self,
        params: MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, notifyUpdateAppliedWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOtaSoftwareUpdateProvider").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOtaSoftwareUpdateProvider").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOtaSoftwareUpdateProvider").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOtaSoftwareUpdateProvider").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOtaSoftwareUpdateProvider").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterOtaSoftwareUpdateRequestor_Deprecated
    for MTRBaseClusterOtaSoftwareUpdateRequestor
{
}
pub trait MTRBaseClusterOtaSoftwareUpdateRequestor_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn announceOtaProviderWithParams_completionHandler_(
        &self,
        params: MTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, announceOtaProviderWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDefaultOtaProvidersWithParams_completionHandler_(
        &self,
        params: MTRReadParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultOtaProvidersWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeDefaultOtaProvidersWithValue_completionHandler_(
        &self,
        value: NSArray,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultOtaProvidersWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeDefaultOtaProvidersWithValue_params_completionHandler_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultOtaProvidersWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDefaultOtaProvidersWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDefaultOtaProvidersWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUpdatePossibleWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUpdatePossibleWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeUpdatePossibleWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUpdatePossibleWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUpdateStateWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUpdateStateWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeUpdateStateWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUpdateStateWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUpdateStateProgressWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUpdateStateProgressWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeUpdateStateProgressWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUpdateStateProgressWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDefaultOtaProvidersWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOtaSoftwareUpdateRequestor").unwrap(), readAttributeDefaultOtaProvidersWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeUpdatePossibleWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOtaSoftwareUpdateRequestor").unwrap(), readAttributeUpdatePossibleWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeUpdateStateWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOtaSoftwareUpdateRequestor").unwrap(), readAttributeUpdateStateWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeUpdateStateProgressWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOtaSoftwareUpdateRequestor").unwrap(), readAttributeUpdateStateProgressWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOtaSoftwareUpdateRequestor").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOtaSoftwareUpdateRequestor").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOtaSoftwareUpdateRequestor").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOtaSoftwareUpdateRequestor").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOtaSoftwareUpdateRequestor").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterLocalizationConfiguration_Deprecated
    for MTRBaseClusterLocalizationConfiguration
{
}
pub trait MTRBaseClusterLocalizationConfiguration_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeActiveLocaleWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveLocaleWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeActiveLocaleWithValue_completionHandler_(
        &self,
        value: NSString,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeActiveLocaleWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeActiveLocaleWithValue_params_completionHandler_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeActiveLocaleWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActiveLocaleWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveLocaleWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedLocalesWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedLocalesWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSupportedLocalesWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedLocalesWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveLocaleWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLocalizationConfiguration").unwrap(), readAttributeActiveLocaleWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSupportedLocalesWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLocalizationConfiguration").unwrap(), readAttributeSupportedLocalesWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLocalizationConfiguration").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLocalizationConfiguration").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLocalizationConfiguration").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLocalizationConfiguration").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLocalizationConfiguration").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterTimeFormatLocalization_Deprecated for MTRBaseClusterTimeFormatLocalization {}
pub trait MTRBaseClusterTimeFormatLocalization_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeHourFormatWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHourFormatWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeHourFormatWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeHourFormatWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeHourFormatWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeHourFormatWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeHourFormatWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHourFormatWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveCalendarTypeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveCalendarTypeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeActiveCalendarTypeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeActiveCalendarTypeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeActiveCalendarTypeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeActiveCalendarTypeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActiveCalendarTypeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveCalendarTypeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedCalendarTypesWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedCalendarTypesWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSupportedCalendarTypesWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedCalendarTypesWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeHourFormatWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeFormatLocalization").unwrap(), readAttributeHourFormatWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActiveCalendarTypeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeFormatLocalization").unwrap(), readAttributeActiveCalendarTypeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSupportedCalendarTypesWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeFormatLocalization").unwrap(), readAttributeSupportedCalendarTypesWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeFormatLocalization").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeFormatLocalization").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeFormatLocalization").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeFormatLocalization").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTimeFormatLocalization").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterUnitLocalization_Deprecated for MTRBaseClusterUnitLocalization {}
pub trait MTRBaseClusterUnitLocalization_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeTemperatureUnitWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTemperatureUnitWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeTemperatureUnitWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureUnitWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeTemperatureUnitWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureUnitWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTemperatureUnitWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTemperatureUnitWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTemperatureUnitWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitLocalization").unwrap(), readAttributeTemperatureUnitWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitLocalization").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitLocalization").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitLocalization").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitLocalization").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUnitLocalization").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterPowerSourceConfiguration_Deprecated for MTRBaseClusterPowerSourceConfiguration {}
pub trait MTRBaseClusterPowerSourceConfiguration_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeSourcesWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSourcesWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSourcesWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSourcesWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSourcesWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSourceConfiguration").unwrap(), readAttributeSourcesWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSourceConfiguration").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSourceConfiguration").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSourceConfiguration").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSourceConfiguration").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSourceConfiguration").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterPowerSource_Deprecated for MTRBaseClusterPowerSource {}
pub trait MTRBaseClusterPowerSource_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeStatusWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStatusWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeStatusWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStatusWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOrderWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOrderWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOrderWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOrderWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDescriptionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDescriptionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDescriptionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDescriptionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWiredAssessedInputVoltageWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiredAssessedInputVoltageWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeWiredAssessedInputVoltageWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWiredAssessedInputVoltageWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWiredAssessedInputFrequencyWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiredAssessedInputFrequencyWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeWiredAssessedInputFrequencyWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWiredAssessedInputFrequencyWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWiredCurrentTypeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiredCurrentTypeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeWiredCurrentTypeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWiredCurrentTypeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWiredAssessedCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiredAssessedCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeWiredAssessedCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWiredAssessedCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWiredNominalVoltageWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiredNominalVoltageWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeWiredNominalVoltageWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWiredNominalVoltageWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWiredMaximumCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiredMaximumCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeWiredMaximumCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWiredMaximumCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWiredPresentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiredPresentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeWiredPresentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWiredPresentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveWiredFaultsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveWiredFaultsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActiveWiredFaultsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveWiredFaultsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatVoltageWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatVoltageWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBatVoltageWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatVoltageWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatPercentRemainingWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatPercentRemainingWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBatPercentRemainingWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatPercentRemainingWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatTimeRemainingWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatTimeRemainingWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBatTimeRemainingWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatTimeRemainingWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatChargeLevelWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatChargeLevelWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBatChargeLevelWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatChargeLevelWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatReplacementNeededWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatReplacementNeededWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBatReplacementNeededWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatReplacementNeededWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatReplaceabilityWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatReplaceabilityWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBatReplaceabilityWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatReplaceabilityWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatPresentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatPresentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBatPresentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatPresentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveBatFaultsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveBatFaultsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActiveBatFaultsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveBatFaultsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatReplacementDescriptionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatReplacementDescriptionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBatReplacementDescriptionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatReplacementDescriptionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatCommonDesignationWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatCommonDesignationWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBatCommonDesignationWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatCommonDesignationWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatANSIDesignationWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatANSIDesignationWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBatANSIDesignationWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatANSIDesignationWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatIECDesignationWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatIECDesignationWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBatIECDesignationWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatIECDesignationWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatApprovedChemistryWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatApprovedChemistryWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBatApprovedChemistryWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatApprovedChemistryWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatCapacityWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatCapacityWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBatCapacityWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatCapacityWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatQuantityWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatQuantityWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBatQuantityWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatQuantityWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatChargeStateWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatChargeStateWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBatChargeStateWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatChargeStateWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatTimeToFullChargeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatTimeToFullChargeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBatTimeToFullChargeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatTimeToFullChargeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatFunctionalWhileChargingWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatFunctionalWhileChargingWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBatFunctionalWhileChargingWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatFunctionalWhileChargingWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBatChargingCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatChargingCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBatChargingCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBatChargingCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveBatChargeFaultsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveBatChargeFaultsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActiveBatChargeFaultsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveBatChargeFaultsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStatusWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeStatusWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOrderWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeOrderWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDescriptionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeDescriptionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeWiredAssessedInputVoltageWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeWiredAssessedInputVoltageWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeWiredAssessedInputFrequencyWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeWiredAssessedInputFrequencyWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeWiredCurrentTypeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeWiredCurrentTypeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeWiredAssessedCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeWiredAssessedCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeWiredNominalVoltageWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeWiredNominalVoltageWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeWiredMaximumCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeWiredMaximumCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeWiredPresentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeWiredPresentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActiveWiredFaultsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeActiveWiredFaultsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBatVoltageWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatVoltageWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBatPercentRemainingWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatPercentRemainingWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBatTimeRemainingWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatTimeRemainingWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBatChargeLevelWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatChargeLevelWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBatReplacementNeededWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatReplacementNeededWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBatReplaceabilityWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatReplaceabilityWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBatPresentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatPresentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActiveBatFaultsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeActiveBatFaultsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBatReplacementDescriptionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatReplacementDescriptionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBatCommonDesignationWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatCommonDesignationWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBatANSIDesignationWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatANSIDesignationWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBatIECDesignationWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatIECDesignationWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBatApprovedChemistryWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatApprovedChemistryWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBatCapacityWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatCapacityWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBatQuantityWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatQuantityWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBatChargeStateWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatChargeStateWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBatTimeToFullChargeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatTimeToFullChargeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBatFunctionalWhileChargingWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatFunctionalWhileChargingWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBatChargingCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeBatChargingCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActiveBatChargeFaultsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeActiveBatChargeFaultsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPowerSource").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterGeneralCommissioning_Deprecated for MTRBaseClusterGeneralCommissioning {}
pub trait MTRBaseClusterGeneralCommissioning_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn armFailSafeWithParams_completionHandler_(
        &self,
        params: MTRGeneralCommissioningClusterArmFailSafeParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, armFailSafeWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn setRegulatoryConfigWithParams_completionHandler_(
        &self,
        params: MTRGeneralCommissioningClusterSetRegulatoryConfigParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRegulatoryConfigWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn commissioningCompleteWithParams_completionHandler_(
        &self,
        params: MTRGeneralCommissioningClusterCommissioningCompleteParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commissioningCompleteWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn commissioningCompleteWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commissioningCompleteWithCompletionHandler : completionHandler)
    }
    unsafe fn readAttributeBreadcrumbWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBreadcrumbWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeBreadcrumbWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBreadcrumbWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeBreadcrumbWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBreadcrumbWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBreadcrumbWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBreadcrumbWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBasicCommissioningInfoWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBasicCommissioningInfoWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBasicCommissioningInfoWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBasicCommissioningInfoWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRegulatoryConfigWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRegulatoryConfigWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRegulatoryConfigWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRegulatoryConfigWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLocationCapabilityWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocationCapabilityWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLocationCapabilityWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLocationCapabilityWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportsConcurrentConnectionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportsConcurrentConnectionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSupportsConcurrentConnectionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportsConcurrentConnectionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBreadcrumbWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeBreadcrumbWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBasicCommissioningInfoWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeBasicCommissioningInfoWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRegulatoryConfigWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeRegulatoryConfigWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLocationCapabilityWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeLocationCapabilityWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSupportsConcurrentConnectionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeSupportsConcurrentConnectionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralCommissioning").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterNetworkCommissioning_Deprecated for MTRBaseClusterNetworkCommissioning {}
pub trait MTRBaseClusterNetworkCommissioning_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn scanNetworksWithParams_completionHandler_(
        &self,
        params: MTRNetworkCommissioningClusterScanNetworksParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scanNetworksWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn addOrUpdateWiFiNetworkWithParams_completionHandler_(
        &self,
        params: MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addOrUpdateWiFiNetworkWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn addOrUpdateThreadNetworkWithParams_completionHandler_(
        &self,
        params: MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addOrUpdateThreadNetworkWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn removeNetworkWithParams_completionHandler_(
        &self,
        params: MTRNetworkCommissioningClusterRemoveNetworkParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeNetworkWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn connectNetworkWithParams_completionHandler_(
        &self,
        params: MTRNetworkCommissioningClusterConnectNetworkParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connectNetworkWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn reorderNetworkWithParams_completionHandler_(
        &self,
        params: MTRNetworkCommissioningClusterReorderNetworkParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, reorderNetworkWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxNetworksWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxNetworksWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxNetworksWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxNetworksWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNetworksWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNetworksWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNetworksWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNetworksWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeScanMaxTimeSecondsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScanMaxTimeSecondsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeScanMaxTimeSecondsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeScanMaxTimeSecondsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeConnectMaxTimeSecondsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeConnectMaxTimeSecondsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeConnectMaxTimeSecondsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeConnectMaxTimeSecondsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInterfaceEnabledWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInterfaceEnabledWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeInterfaceEnabledWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInterfaceEnabledWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeInterfaceEnabledWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInterfaceEnabledWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInterfaceEnabledWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInterfaceEnabledWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLastNetworkingStatusWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLastNetworkingStatusWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLastNetworkingStatusWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLastNetworkingStatusWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLastNetworkIDWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLastNetworkIDWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLastNetworkIDWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLastNetworkIDWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLastConnectErrorValueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLastConnectErrorValueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLastConnectErrorValueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLastConnectErrorValueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxNetworksWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeMaxNetworksWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNetworksWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeNetworksWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeScanMaxTimeSecondsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeScanMaxTimeSecondsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeConnectMaxTimeSecondsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeConnectMaxTimeSecondsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInterfaceEnabledWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeInterfaceEnabledWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLastNetworkingStatusWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeLastNetworkingStatusWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLastNetworkIDWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeLastNetworkIDWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLastConnectErrorValueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeLastConnectErrorValueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterNetworkCommissioning").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterDiagnosticLogs_Deprecated for MTRBaseClusterDiagnosticLogs {}
pub trait MTRBaseClusterDiagnosticLogs_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn retrieveLogsRequestWithParams_completionHandler_(
        &self,
        params: MTRDiagnosticLogsClusterRetrieveLogsRequestParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, retrieveLogsRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDiagnosticLogs").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDiagnosticLogs").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDiagnosticLogs").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDiagnosticLogs").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDiagnosticLogs").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterGeneralDiagnostics_Deprecated for MTRBaseClusterGeneralDiagnostics {}
pub trait MTRBaseClusterGeneralDiagnostics_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn testEventTriggerWithParams_completionHandler_(
        &self,
        params: MTRGeneralDiagnosticsClusterTestEventTriggerParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testEventTriggerWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNetworkInterfacesWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNetworkInterfacesWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNetworkInterfacesWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNetworkInterfacesWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRebootCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRebootCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRebootCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRebootCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUpTimeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUpTimeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeUpTimeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUpTimeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTotalOperationalHoursWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTotalOperationalHoursWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTotalOperationalHoursWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTotalOperationalHoursWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBootReasonsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBootReasonsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBootReasonsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBootReasonsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveHardwareFaultsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveHardwareFaultsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActiveHardwareFaultsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveHardwareFaultsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveRadioFaultsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveRadioFaultsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActiveRadioFaultsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveRadioFaultsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveNetworkFaultsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveNetworkFaultsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActiveNetworkFaultsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveNetworkFaultsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTestEventTriggersEnabledWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTestEventTriggersEnabledWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTestEventTriggersEnabledWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTestEventTriggersEnabledWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNetworkInterfacesWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeNetworkInterfacesWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRebootCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeRebootCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeUpTimeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeUpTimeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTotalOperationalHoursWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeTotalOperationalHoursWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBootReasonsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeBootReasonsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActiveHardwareFaultsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeActiveHardwareFaultsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActiveRadioFaultsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeActiveRadioFaultsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActiveNetworkFaultsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeActiveNetworkFaultsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTestEventTriggersEnabledWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeTestEventTriggersEnabledWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGeneralDiagnostics").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterSoftwareDiagnostics_Deprecated for MTRBaseClusterSoftwareDiagnostics {}
pub trait MTRBaseClusterSoftwareDiagnostics_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn resetWatermarksWithParams_completionHandler_(
        &self,
        params: MTRSoftwareDiagnosticsClusterResetWatermarksParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetWatermarksWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn resetWatermarksWithCompletionHandler_(&self, completionHandler: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetWatermarksWithCompletionHandler : completionHandler)
    }
    unsafe fn readAttributeThreadMetricsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThreadMetricsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeThreadMetricsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeThreadMetricsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentHeapFreeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentHeapFreeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentHeapFreeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentHeapFreeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentHeapUsedWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentHeapUsedWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentHeapUsedWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentHeapUsedWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentHeapHighWatermarkWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentHeapHighWatermarkWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentHeapHighWatermarkWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentHeapHighWatermarkWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeThreadMetricsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoftwareDiagnostics").unwrap(), readAttributeThreadMetricsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentHeapFreeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoftwareDiagnostics").unwrap(), readAttributeCurrentHeapFreeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentHeapUsedWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoftwareDiagnostics").unwrap(), readAttributeCurrentHeapUsedWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentHeapHighWatermarkWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoftwareDiagnostics").unwrap(), readAttributeCurrentHeapHighWatermarkWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoftwareDiagnostics").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoftwareDiagnostics").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoftwareDiagnostics").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoftwareDiagnostics").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSoftwareDiagnostics").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterThreadNetworkDiagnostics_Deprecated for MTRBaseClusterThreadNetworkDiagnostics {}
pub trait MTRBaseClusterThreadNetworkDiagnostics_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn resetCountsWithParams_completionHandler_(
        &self,
        params: MTRThreadNetworkDiagnosticsClusterResetCountsParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn resetCountsWithCompletionHandler_(&self, completionHandler: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithCompletionHandler : completionHandler)
    }
    unsafe fn readAttributeChannelWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeChannelWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeChannelWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeChannelWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRoutingRoleWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRoutingRoleWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRoutingRoleWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRoutingRoleWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNetworkNameWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNetworkNameWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNetworkNameWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNetworkNameWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePanIdWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePanIdWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePanIdWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePanIdWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeExtendedPanIdWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeExtendedPanIdWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeExtendedPanIdWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeExtendedPanIdWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeshLocalPrefixWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeshLocalPrefixWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMeshLocalPrefixWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeshLocalPrefixWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOverrunCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOverrunCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOverrunCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOverrunCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNeighborTableListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNeighborTableListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNeighborTableListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNeighborTableListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRouteTableListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRouteTableListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRouteTableListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRouteTableListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePartitionIdWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePartitionIdWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePartitionIdWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePartitionIdWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWeightingWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWeightingWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeWeightingWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWeightingWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDataVersionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDataVersionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDataVersionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDataVersionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStableDataVersionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStableDataVersionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeStableDataVersionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStableDataVersionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLeaderRouterIdWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLeaderRouterIdWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLeaderRouterIdWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLeaderRouterIdWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDetachedRoleCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDetachedRoleCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDetachedRoleCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDetachedRoleCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeChildRoleCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeChildRoleCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeChildRoleCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeChildRoleCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRouterRoleCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRouterRoleCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRouterRoleCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRouterRoleCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLeaderRoleCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLeaderRoleCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLeaderRoleCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLeaderRoleCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttachAttemptCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttachAttemptCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttachAttemptCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttachAttemptCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePartitionIdChangeCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePartitionIdChangeCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePartitionIdChangeCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePartitionIdChangeCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBetterPartitionAttachAttemptCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBetterPartitionAttachAttemptCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBetterPartitionAttachAttemptCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBetterPartitionAttachAttemptCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeParentChangeCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeParentChangeCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeParentChangeCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeParentChangeCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxTotalCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxTotalCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTxTotalCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxTotalCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxUnicastCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxUnicastCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTxUnicastCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxUnicastCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxBroadcastCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxBroadcastCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTxBroadcastCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxBroadcastCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxAckRequestedCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxAckRequestedCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTxAckRequestedCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxAckRequestedCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxAckedCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxAckedCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTxAckedCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxAckedCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxNoAckRequestedCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxNoAckRequestedCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTxNoAckRequestedCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxNoAckRequestedCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxDataCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxDataCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTxDataCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxDataCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxDataPollCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxDataPollCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTxDataPollCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxDataPollCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxBeaconCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxBeaconCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTxBeaconCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxBeaconCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxBeaconRequestCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxBeaconRequestCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTxBeaconRequestCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxBeaconRequestCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxOtherCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxOtherCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTxOtherCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxOtherCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxRetryCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxRetryCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTxRetryCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxRetryCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxDirectMaxRetryExpiryCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxDirectMaxRetryExpiryCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTxDirectMaxRetryExpiryCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxDirectMaxRetryExpiryCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxIndirectMaxRetryExpiryCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxIndirectMaxRetryExpiryCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTxIndirectMaxRetryExpiryCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxIndirectMaxRetryExpiryCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxErrCcaCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxErrCcaCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTxErrCcaCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxErrCcaCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxErrAbortCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxErrAbortCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTxErrAbortCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxErrAbortCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxErrBusyChannelCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxErrBusyChannelCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTxErrBusyChannelCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxErrBusyChannelCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxTotalCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxTotalCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRxTotalCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxTotalCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxUnicastCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxUnicastCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRxUnicastCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxUnicastCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxBroadcastCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxBroadcastCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRxBroadcastCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxBroadcastCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxDataCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxDataCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRxDataCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxDataCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxDataPollCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxDataPollCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRxDataPollCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxDataPollCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxBeaconCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxBeaconCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRxBeaconCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxBeaconCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxBeaconRequestCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxBeaconRequestCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRxBeaconRequestCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxBeaconRequestCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxOtherCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxOtherCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRxOtherCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxOtherCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxAddressFilteredCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxAddressFilteredCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRxAddressFilteredCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxAddressFilteredCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxDestAddrFilteredCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxDestAddrFilteredCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRxDestAddrFilteredCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxDestAddrFilteredCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxDuplicatedCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxDuplicatedCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRxDuplicatedCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxDuplicatedCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxErrNoFrameCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxErrNoFrameCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRxErrNoFrameCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxErrNoFrameCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxErrUnknownNeighborCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxErrUnknownNeighborCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRxErrUnknownNeighborCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxErrUnknownNeighborCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxErrInvalidSrcAddrCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxErrInvalidSrcAddrCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRxErrInvalidSrcAddrCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxErrInvalidSrcAddrCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxErrSecCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxErrSecCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRxErrSecCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxErrSecCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxErrFcsCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxErrFcsCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRxErrFcsCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxErrFcsCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRxErrOtherCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxErrOtherCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRxErrOtherCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRxErrOtherCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveTimestampWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveTimestampWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActiveTimestampWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveTimestampWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePendingTimestampWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePendingTimestampWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePendingTimestampWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePendingTimestampWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDelayWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDelayWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDelayWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDelayWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSecurityPolicyWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSecurityPolicyWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSecurityPolicyWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSecurityPolicyWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeChannelPage0MaskWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeChannelPage0MaskWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeChannelPage0MaskWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeChannelPage0MaskWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOperationalDatasetComponentsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalDatasetComponentsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOperationalDatasetComponentsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOperationalDatasetComponentsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveNetworkFaultsListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveNetworkFaultsListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActiveNetworkFaultsListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveNetworkFaultsListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeChannelWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeChannelWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRoutingRoleWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRoutingRoleWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNetworkNameWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeNetworkNameWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePanIdWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributePanIdWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeExtendedPanIdWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeExtendedPanIdWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMeshLocalPrefixWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeMeshLocalPrefixWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOverrunCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeOverrunCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNeighborTableListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeNeighborTableListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRouteTableListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRouteTableListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePartitionIdWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributePartitionIdWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeWeightingWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeWeightingWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDataVersionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeDataVersionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeStableDataVersionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeStableDataVersionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLeaderRouterIdWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeLeaderRouterIdWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDetachedRoleCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeDetachedRoleCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeChildRoleCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeChildRoleCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRouterRoleCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRouterRoleCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLeaderRoleCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeLeaderRoleCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttachAttemptCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeAttachAttemptCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePartitionIdChangeCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributePartitionIdChangeCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBetterPartitionAttachAttemptCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeBetterPartitionAttachAttemptCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeParentChangeCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeParentChangeCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTxTotalCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxTotalCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTxUnicastCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxUnicastCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTxBroadcastCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxBroadcastCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTxAckRequestedCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxAckRequestedCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTxAckedCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxAckedCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTxNoAckRequestedCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxNoAckRequestedCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTxDataCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxDataCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTxDataPollCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxDataPollCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTxBeaconCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxBeaconCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTxBeaconRequestCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxBeaconRequestCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTxOtherCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxOtherCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTxRetryCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxRetryCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTxDirectMaxRetryExpiryCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxDirectMaxRetryExpiryCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTxIndirectMaxRetryExpiryCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxIndirectMaxRetryExpiryCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTxErrCcaCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxErrCcaCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTxErrAbortCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxErrAbortCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTxErrBusyChannelCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeTxErrBusyChannelCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRxTotalCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxTotalCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRxUnicastCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxUnicastCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRxBroadcastCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxBroadcastCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRxDataCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxDataCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRxDataPollCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxDataPollCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRxBeaconCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxBeaconCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRxBeaconRequestCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxBeaconRequestCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRxOtherCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxOtherCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRxAddressFilteredCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxAddressFilteredCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRxDestAddrFilteredCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxDestAddrFilteredCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRxDuplicatedCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxDuplicatedCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRxErrNoFrameCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxErrNoFrameCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRxErrUnknownNeighborCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxErrUnknownNeighborCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRxErrInvalidSrcAddrCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxErrInvalidSrcAddrCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRxErrSecCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxErrSecCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRxErrFcsCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxErrFcsCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRxErrOtherCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeRxErrOtherCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActiveTimestampWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeActiveTimestampWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePendingTimestampWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributePendingTimestampWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDelayWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeDelayWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSecurityPolicyWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeSecurityPolicyWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeChannelPage0MaskWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeChannelPage0MaskWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOperationalDatasetComponentsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeOperationalDatasetComponentsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActiveNetworkFaultsListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeActiveNetworkFaultsListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThreadNetworkDiagnostics").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterWiFiNetworkDiagnostics_Deprecated for MTRBaseClusterWiFiNetworkDiagnostics {}
pub trait MTRBaseClusterWiFiNetworkDiagnostics_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn resetCountsWithParams_completionHandler_(
        &self,
        params: MTRWiFiNetworkDiagnosticsClusterResetCountsParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn resetCountsWithCompletionHandler_(&self, completionHandler: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithCompletionHandler : completionHandler)
    }
    unsafe fn readAttributeBssidWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBssidWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBssidWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBssidWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSecurityTypeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSecurityTypeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSecurityTypeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSecurityTypeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWiFiVersionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiFiVersionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeWiFiVersionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWiFiVersionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeChannelNumberWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeChannelNumberWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeChannelNumberWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeChannelNumberWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRssiWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRssiWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRssiWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRssiWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBeaconLostCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBeaconLostCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBeaconLostCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBeaconLostCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBeaconRxCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBeaconRxCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBeaconRxCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBeaconRxCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePacketMulticastRxCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePacketMulticastRxCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePacketMulticastRxCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePacketMulticastRxCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePacketMulticastTxCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePacketMulticastTxCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePacketMulticastTxCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePacketMulticastTxCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePacketUnicastRxCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePacketUnicastRxCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePacketUnicastRxCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePacketUnicastRxCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePacketUnicastTxCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePacketUnicastTxCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePacketUnicastTxCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePacketUnicastTxCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentMaxRateWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentMaxRateWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentMaxRateWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentMaxRateWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOverrunCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOverrunCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOverrunCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOverrunCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBssidWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeBssidWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSecurityTypeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeSecurityTypeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeWiFiVersionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeWiFiVersionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeChannelNumberWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeChannelNumberWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRssiWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeRssiWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBeaconLostCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeBeaconLostCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBeaconRxCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeBeaconRxCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePacketMulticastRxCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributePacketMulticastRxCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePacketMulticastTxCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributePacketMulticastTxCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePacketUnicastRxCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributePacketUnicastRxCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePacketUnicastTxCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributePacketUnicastTxCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentMaxRateWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeCurrentMaxRateWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOverrunCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeOverrunCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWiFiNetworkDiagnostics").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterEthernetNetworkDiagnostics_Deprecated
    for MTRBaseClusterEthernetNetworkDiagnostics
{
}
pub trait MTRBaseClusterEthernetNetworkDiagnostics_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn resetCountsWithParams_completionHandler_(
        &self,
        params: MTREthernetNetworkDiagnosticsClusterResetCountsParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn resetCountsWithCompletionHandler_(&self, completionHandler: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithCompletionHandler : completionHandler)
    }
    unsafe fn readAttributePHYRateWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePHYRateWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePHYRateWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePHYRateWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFullDuplexWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFullDuplexWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFullDuplexWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFullDuplexWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePacketRxCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePacketRxCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePacketRxCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePacketRxCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePacketTxCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePacketTxCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePacketTxCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePacketTxCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTxErrCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxErrCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTxErrCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTxErrCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCollisionCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCollisionCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCollisionCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCollisionCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOverrunCountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOverrunCountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOverrunCountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOverrunCountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCarrierDetectWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCarrierDetectWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCarrierDetectWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCarrierDetectWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTimeSinceResetWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTimeSinceResetWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTimeSinceResetWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTimeSinceResetWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePHYRateWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributePHYRateWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFullDuplexWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeFullDuplexWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePacketRxCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributePacketRxCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePacketTxCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributePacketTxCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTxErrCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeTxErrCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCollisionCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeCollisionCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOverrunCountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeOverrunCountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCarrierDetectWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeCarrierDetectWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTimeSinceResetWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeTimeSinceResetWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterEthernetNetworkDiagnostics").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterBridgedDeviceBasic_Deprecated for MTRBaseClusterBridgedDeviceBasic {}
pub trait MTRBaseClusterBridgedDeviceBasic_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeVendorNameWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVendorNameWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeVendorNameWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeVendorNameWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeVendorIDWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVendorIDWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeVendorIDWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeVendorIDWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProductNameWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductNameWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeProductNameWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProductNameWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNodeLabelWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNodeLabelWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNodeLabelWithValue_completionHandler_(
        &self,
        value: NSString,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNodeLabelWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNodeLabelWithValue_params_completionHandler_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNodeLabelWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNodeLabelWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNodeLabelWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeHardwareVersionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHardwareVersionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeHardwareVersionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHardwareVersionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeHardwareVersionStringWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHardwareVersionStringWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeHardwareVersionStringWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHardwareVersionStringWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSoftwareVersionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoftwareVersionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSoftwareVersionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSoftwareVersionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSoftwareVersionStringWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoftwareVersionStringWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSoftwareVersionStringWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSoftwareVersionStringWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeManufacturingDateWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeManufacturingDateWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeManufacturingDateWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeManufacturingDateWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePartNumberWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePartNumberWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePartNumberWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePartNumberWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProductURLWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductURLWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeProductURLWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProductURLWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProductLabelWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductLabelWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeProductLabelWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProductLabelWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSerialNumberWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSerialNumberWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSerialNumberWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSerialNumberWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeReachableWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReachableWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeReachableWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeReachableWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUniqueIDWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUniqueIDWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeUniqueIDWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUniqueIDWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeVendorNameWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap(), readAttributeVendorNameWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeVendorIDWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap(), readAttributeVendorIDWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeProductNameWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap(), readAttributeProductNameWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNodeLabelWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap(), readAttributeNodeLabelWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeHardwareVersionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap(), readAttributeHardwareVersionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeHardwareVersionStringWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap(), readAttributeHardwareVersionStringWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSoftwareVersionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap(), readAttributeSoftwareVersionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSoftwareVersionStringWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap(), readAttributeSoftwareVersionStringWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeManufacturingDateWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap(), readAttributeManufacturingDateWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePartNumberWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap(), readAttributePartNumberWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeProductURLWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap(), readAttributeProductURLWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeProductLabelWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap(), readAttributeProductLabelWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSerialNumberWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap(), readAttributeSerialNumberWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeReachableWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap(), readAttributeReachableWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeUniqueIDWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap(), readAttributeUniqueIDWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBridgedDeviceBasic").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterSwitch_Deprecated for MTRBaseClusterSwitch {}
pub trait MTRBaseClusterSwitch_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeNumberOfPositionsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfPositionsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNumberOfPositionsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfPositionsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentPositionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPositionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentPositionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentPositionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMultiPressMaxWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMultiPressMaxWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMultiPressMaxWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMultiPressMaxWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfPositionsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSwitch").unwrap(), readAttributeNumberOfPositionsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentPositionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSwitch").unwrap(), readAttributeCurrentPositionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMultiPressMaxWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSwitch").unwrap(), readAttributeMultiPressMaxWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSwitch").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSwitch").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSwitch").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSwitch").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterSwitch").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterAdministratorCommissioning_Deprecated
    for MTRBaseClusterAdministratorCommissioning
{
}
pub trait MTRBaseClusterAdministratorCommissioning_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn openCommissioningWindowWithParams_completionHandler_(
        &self,
        params: MTRAdministratorCommissioningClusterOpenCommissioningWindowParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, openCommissioningWindowWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn openBasicCommissioningWindowWithParams_completionHandler_(
        &self,
        params: MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, openBasicCommissioningWindowWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn revokeCommissioningWithParams_completionHandler_(
        &self,
        params: MTRAdministratorCommissioningClusterRevokeCommissioningParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, revokeCommissioningWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn revokeCommissioningWithCompletionHandler_(
        &self,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, revokeCommissioningWithCompletionHandler : completionHandler)
    }
    unsafe fn readAttributeWindowStatusWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWindowStatusWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeWindowStatusWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWindowStatusWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAdminFabricIndexWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAdminFabricIndexWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAdminFabricIndexWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAdminFabricIndexWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAdminVendorIdWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAdminVendorIdWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAdminVendorIdWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAdminVendorIdWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWindowStatusWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAdministratorCommissioning").unwrap(), readAttributeWindowStatusWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAdminFabricIndexWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAdministratorCommissioning").unwrap(), readAttributeAdminFabricIndexWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAdminVendorIdWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAdministratorCommissioning").unwrap(), readAttributeAdminVendorIdWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAdministratorCommissioning").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAdministratorCommissioning").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAdministratorCommissioning").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAdministratorCommissioning").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAdministratorCommissioning").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterOperationalCredentials_Deprecated for MTRBaseClusterOperationalCredentials {}
pub trait MTRBaseClusterOperationalCredentials_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn attestationRequestWithParams_completionHandler_(
        &self,
        params: MTROperationalCredentialsClusterAttestationRequestParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, attestationRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn certificateChainRequestWithParams_completionHandler_(
        &self,
        params: MTROperationalCredentialsClusterCertificateChainRequestParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, certificateChainRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn CSRRequestWithParams_completionHandler_(
        &self,
        params: MTROperationalCredentialsClusterCSRRequestParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, CSRRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn addNOCWithParams_completionHandler_(
        &self,
        params: MTROperationalCredentialsClusterAddNOCParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addNOCWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn updateNOCWithParams_completionHandler_(
        &self,
        params: MTROperationalCredentialsClusterUpdateNOCParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateNOCWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn updateFabricLabelWithParams_completionHandler_(
        &self,
        params: MTROperationalCredentialsClusterUpdateFabricLabelParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateFabricLabelWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn removeFabricWithParams_completionHandler_(
        &self,
        params: MTROperationalCredentialsClusterRemoveFabricParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeFabricWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn addTrustedRootCertificateWithParams_completionHandler_(
        &self,
        params: MTROperationalCredentialsClusterAddTrustedRootCertificateParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addTrustedRootCertificateWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNOCsWithParams_completionHandler_(
        &self,
        params: MTRReadParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNOCsWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNOCsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNOCsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFabricsWithParams_completionHandler_(
        &self,
        params: MTRReadParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFabricsWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFabricsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFabricsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedFabricsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedFabricsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSupportedFabricsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedFabricsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCommissionedFabricsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCommissionedFabricsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCommissionedFabricsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCommissionedFabricsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTrustedRootCertificatesWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTrustedRootCertificatesWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTrustedRootCertificatesWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTrustedRootCertificatesWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentFabricIndexWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentFabricIndexWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentFabricIndexWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentFabricIndexWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNOCsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeNOCsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFabricsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeFabricsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSupportedFabricsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeSupportedFabricsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCommissionedFabricsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeCommissionedFabricsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTrustedRootCertificatesWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeTrustedRootCertificatesWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentFabricIndexWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeCurrentFabricIndexWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOperationalCredentials").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterGroupKeyManagement_Deprecated for MTRBaseClusterGroupKeyManagement {}
pub trait MTRBaseClusterGroupKeyManagement_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn keySetWriteWithParams_completionHandler_(
        &self,
        params: MTRGroupKeyManagementClusterKeySetWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keySetWriteWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn keySetReadWithParams_completionHandler_(
        &self,
        params: MTRGroupKeyManagementClusterKeySetReadParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keySetReadWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn keySetRemoveWithParams_completionHandler_(
        &self,
        params: MTRGroupKeyManagementClusterKeySetRemoveParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keySetRemoveWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn keySetReadAllIndicesWithParams_completionHandler_(
        &self,
        params: MTRGroupKeyManagementClusterKeySetReadAllIndicesParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keySetReadAllIndicesWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGroupKeyMapWithParams_completionHandler_(
        &self,
        params: MTRReadParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGroupKeyMapWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeGroupKeyMapWithValue_completionHandler_(
        &self,
        value: NSArray,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeGroupKeyMapWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeGroupKeyMapWithValue_params_completionHandler_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeGroupKeyMapWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGroupKeyMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGroupKeyMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGroupTableWithParams_completionHandler_(
        &self,
        params: MTRReadParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGroupTableWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGroupTableWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGroupTableWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxGroupsPerFabricWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxGroupsPerFabricWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxGroupsPerFabricWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxGroupsPerFabricWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxGroupKeysPerFabricWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxGroupKeysPerFabricWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxGroupKeysPerFabricWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxGroupKeysPerFabricWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGroupKeyMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupKeyManagement").unwrap(), readAttributeGroupKeyMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGroupTableWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupKeyManagement").unwrap(), readAttributeGroupTableWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxGroupsPerFabricWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupKeyManagement").unwrap(), readAttributeMaxGroupsPerFabricWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxGroupKeysPerFabricWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupKeyManagement").unwrap(), readAttributeMaxGroupKeysPerFabricWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupKeyManagement").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupKeyManagement").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupKeyManagement").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupKeyManagement").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterGroupKeyManagement").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterFixedLabel_Deprecated for MTRBaseClusterFixedLabel {}
pub trait MTRBaseClusterFixedLabel_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeLabelListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLabelListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLabelListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLabelListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLabelListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFixedLabel").unwrap(), readAttributeLabelListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFixedLabel").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFixedLabel").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFixedLabel").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFixedLabel").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFixedLabel").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterUserLabel_Deprecated for MTRBaseClusterUserLabel {}
pub trait MTRBaseClusterUserLabel_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeLabelListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLabelListWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeLabelListWithValue_completionHandler_(
        &self,
        value: NSArray,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLabelListWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeLabelListWithValue_params_completionHandler_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLabelListWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLabelListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLabelListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLabelListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUserLabel").unwrap(), readAttributeLabelListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUserLabel").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUserLabel").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUserLabel").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUserLabel").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterUserLabel").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterBooleanState_Deprecated for MTRBaseClusterBooleanState {}
pub trait MTRBaseClusterBooleanState_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeStateValueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStateValueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeStateValueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStateValueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStateValueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanState").unwrap(), readAttributeStateValueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanState").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanState").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanState").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanState").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBooleanState").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterModeSelect_Deprecated for MTRBaseClusterModeSelect {}
pub trait MTRBaseClusterModeSelect_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn changeToModeWithParams_completionHandler_(
        &self,
        params: MTRModeSelectClusterChangeToModeParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDescriptionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDescriptionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDescriptionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDescriptionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStandardNamespaceWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStandardNamespaceWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeStandardNamespaceWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStandardNamespaceWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedModesWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSupportedModesWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedModesWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentModeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentModeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentModeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStartUpModeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStartUpModeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeStartUpModeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpModeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeStartUpModeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpModeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeStartUpModeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStartUpModeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOnModeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnModeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeOnModeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnModeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeOnModeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnModeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOnModeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOnModeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDescriptionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeDescriptionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeStandardNamespaceWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeStandardNamespaceWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSupportedModesWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeSupportedModesWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentModeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeCurrentModeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeStartUpModeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeStartUpModeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOnModeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeOnModeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterModeSelect").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterDoorLock_Deprecated for MTRBaseClusterDoorLock {}
pub trait MTRBaseClusterDoorLock_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn lockDoorWithParams_completionHandler_(
        &self,
        params: MTRDoorLockClusterLockDoorParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, lockDoorWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn unlockDoorWithParams_completionHandler_(
        &self,
        params: MTRDoorLockClusterUnlockDoorParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unlockDoorWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn unlockWithTimeoutWithParams_completionHandler_(
        &self,
        params: MTRDoorLockClusterUnlockWithTimeoutParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unlockWithTimeoutWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn setWeekDayScheduleWithParams_completionHandler_(
        &self,
        params: MTRDoorLockClusterSetWeekDayScheduleParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWeekDayScheduleWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn getWeekDayScheduleWithParams_completionHandler_(
        &self,
        params: MTRDoorLockClusterGetWeekDayScheduleParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getWeekDayScheduleWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn clearWeekDayScheduleWithParams_completionHandler_(
        &self,
        params: MTRDoorLockClusterClearWeekDayScheduleParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearWeekDayScheduleWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn setYearDayScheduleWithParams_completionHandler_(
        &self,
        params: MTRDoorLockClusterSetYearDayScheduleParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setYearDayScheduleWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn getYearDayScheduleWithParams_completionHandler_(
        &self,
        params: MTRDoorLockClusterGetYearDayScheduleParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getYearDayScheduleWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn clearYearDayScheduleWithParams_completionHandler_(
        &self,
        params: MTRDoorLockClusterClearYearDayScheduleParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearYearDayScheduleWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn setHolidayScheduleWithParams_completionHandler_(
        &self,
        params: MTRDoorLockClusterSetHolidayScheduleParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHolidayScheduleWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn getHolidayScheduleWithParams_completionHandler_(
        &self,
        params: MTRDoorLockClusterGetHolidayScheduleParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getHolidayScheduleWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn clearHolidayScheduleWithParams_completionHandler_(
        &self,
        params: MTRDoorLockClusterClearHolidayScheduleParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearHolidayScheduleWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn setUserWithParams_completionHandler_(
        &self,
        params: MTRDoorLockClusterSetUserParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn getUserWithParams_completionHandler_(
        &self,
        params: MTRDoorLockClusterGetUserParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getUserWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn clearUserWithParams_completionHandler_(
        &self,
        params: MTRDoorLockClusterClearUserParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearUserWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn setCredentialWithParams_completionHandler_(
        &self,
        params: MTRDoorLockClusterSetCredentialParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentialWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn getCredentialStatusWithParams_completionHandler_(
        &self,
        params: MTRDoorLockClusterGetCredentialStatusParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getCredentialStatusWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn clearCredentialWithParams_completionHandler_(
        &self,
        params: MTRDoorLockClusterClearCredentialParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearCredentialWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLockStateWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLockStateWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLockStateWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLockStateWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLockTypeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLockTypeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLockTypeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLockTypeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActuatorEnabledWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActuatorEnabledWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActuatorEnabledWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActuatorEnabledWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDoorStateWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDoorStateWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDoorStateWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDoorStateWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDoorOpenEventsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDoorOpenEventsWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeDoorOpenEventsWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDoorOpenEventsWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeDoorOpenEventsWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDoorOpenEventsWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDoorOpenEventsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDoorOpenEventsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDoorClosedEventsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDoorClosedEventsWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeDoorClosedEventsWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDoorClosedEventsWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeDoorClosedEventsWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDoorClosedEventsWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDoorClosedEventsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDoorClosedEventsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOpenPeriodWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOpenPeriodWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeOpenPeriodWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOpenPeriodWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeOpenPeriodWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOpenPeriodWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOpenPeriodWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOpenPeriodWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfTotalUsersSupportedWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfTotalUsersSupportedWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNumberOfTotalUsersSupportedWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfTotalUsersSupportedWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfPINUsersSupportedWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfPINUsersSupportedWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNumberOfPINUsersSupportedWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfPINUsersSupportedWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfRFIDUsersSupportedWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfRFIDUsersSupportedWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNumberOfRFIDUsersSupportedWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfRFIDUsersSupportedWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNumberOfWeekDaySchedulesSupportedPerUserWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfWeekDaySchedulesSupportedPerUserWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfYearDaySchedulesSupportedPerUserWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfYearDaySchedulesSupportedPerUserWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNumberOfYearDaySchedulesSupportedPerUserWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfYearDaySchedulesSupportedPerUserWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfHolidaySchedulesSupportedWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfHolidaySchedulesSupportedWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNumberOfHolidaySchedulesSupportedWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfHolidaySchedulesSupportedWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxPINCodeLengthWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxPINCodeLengthWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxPINCodeLengthWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxPINCodeLengthWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinPINCodeLengthWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinPINCodeLengthWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMinPINCodeLengthWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinPINCodeLengthWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxRFIDCodeLengthWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxRFIDCodeLengthWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxRFIDCodeLengthWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxRFIDCodeLengthWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinRFIDCodeLengthWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinRFIDCodeLengthWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMinRFIDCodeLengthWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinRFIDCodeLengthWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCredentialRulesSupportWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCredentialRulesSupportWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCredentialRulesSupportWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCredentialRulesSupportWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfCredentialsSupportedPerUserWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfCredentialsSupportedPerUserWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNumberOfCredentialsSupportedPerUserWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfCredentialsSupportedPerUserWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLanguageWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLanguageWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeLanguageWithValue_completionHandler_(
        &self,
        value: NSString,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLanguageWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeLanguageWithValue_params_completionHandler_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLanguageWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLanguageWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLanguageWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLEDSettingsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLEDSettingsWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeLEDSettingsWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLEDSettingsWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeLEDSettingsWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLEDSettingsWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLEDSettingsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLEDSettingsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAutoRelockTimeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAutoRelockTimeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeAutoRelockTimeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAutoRelockTimeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeAutoRelockTimeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAutoRelockTimeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAutoRelockTimeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAutoRelockTimeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSoundVolumeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoundVolumeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeSoundVolumeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSoundVolumeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeSoundVolumeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSoundVolumeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSoundVolumeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSoundVolumeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOperatingModeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperatingModeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeOperatingModeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOperatingModeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeOperatingModeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOperatingModeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOperatingModeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOperatingModeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedOperatingModesWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedOperatingModesWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSupportedOperatingModesWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedOperatingModesWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDefaultConfigurationRegisterWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultConfigurationRegisterWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDefaultConfigurationRegisterWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDefaultConfigurationRegisterWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEnableLocalProgrammingWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnableLocalProgrammingWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeEnableLocalProgrammingWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnableLocalProgrammingWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeEnableLocalProgrammingWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnableLocalProgrammingWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeEnableLocalProgrammingWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnableLocalProgrammingWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEnableOneTouchLockingWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnableOneTouchLockingWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeEnableOneTouchLockingWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnableOneTouchLockingWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeEnableOneTouchLockingWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnableOneTouchLockingWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeEnableOneTouchLockingWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnableOneTouchLockingWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEnableInsideStatusLEDWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnableInsideStatusLEDWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeEnableInsideStatusLEDWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnableInsideStatusLEDWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeEnableInsideStatusLEDWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnableInsideStatusLEDWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeEnableInsideStatusLEDWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnableInsideStatusLEDWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEnablePrivacyModeButtonWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnablePrivacyModeButtonWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeEnablePrivacyModeButtonWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnablePrivacyModeButtonWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeEnablePrivacyModeButtonWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnablePrivacyModeButtonWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeEnablePrivacyModeButtonWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnablePrivacyModeButtonWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLocalProgrammingFeaturesWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocalProgrammingFeaturesWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeLocalProgrammingFeaturesWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalProgrammingFeaturesWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeLocalProgrammingFeaturesWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalProgrammingFeaturesWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLocalProgrammingFeaturesWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLocalProgrammingFeaturesWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWrongCodeEntryLimitWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWrongCodeEntryLimitWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeWrongCodeEntryLimitWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWrongCodeEntryLimitWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeWrongCodeEntryLimitWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWrongCodeEntryLimitWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeWrongCodeEntryLimitWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWrongCodeEntryLimitWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUserCodeTemporaryDisableTimeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUserCodeTemporaryDisableTimeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeUserCodeTemporaryDisableTimeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUserCodeTemporaryDisableTimeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeUserCodeTemporaryDisableTimeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUserCodeTemporaryDisableTimeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeUserCodeTemporaryDisableTimeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUserCodeTemporaryDisableTimeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSendPINOverTheAirWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSendPINOverTheAirWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeSendPINOverTheAirWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSendPINOverTheAirWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeSendPINOverTheAirWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSendPINOverTheAirWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSendPINOverTheAirWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSendPINOverTheAirWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRequirePINforRemoteOperationWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRequirePINforRemoteOperationWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeRequirePINforRemoteOperationWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRequirePINforRemoteOperationWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeRequirePINforRemoteOperationWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRequirePINforRemoteOperationWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRequirePINforRemoteOperationWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRequirePINforRemoteOperationWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeExpiringUserTimeoutWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeExpiringUserTimeoutWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeExpiringUserTimeoutWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeExpiringUserTimeoutWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeExpiringUserTimeoutWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeExpiringUserTimeoutWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeExpiringUserTimeoutWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeExpiringUserTimeoutWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLockStateWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeLockStateWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLockTypeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeLockTypeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActuatorEnabledWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeActuatorEnabledWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDoorStateWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeDoorStateWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDoorOpenEventsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeDoorOpenEventsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDoorClosedEventsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeDoorClosedEventsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOpenPeriodWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeOpenPeriodWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNumberOfTotalUsersSupportedWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeNumberOfTotalUsersSupportedWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNumberOfPINUsersSupportedWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeNumberOfPINUsersSupportedWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNumberOfRFIDUsersSupportedWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeNumberOfRFIDUsersSupportedWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNumberOfYearDaySchedulesSupportedPerUserWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeNumberOfYearDaySchedulesSupportedPerUserWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNumberOfHolidaySchedulesSupportedWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeNumberOfHolidaySchedulesSupportedWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxPINCodeLengthWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeMaxPINCodeLengthWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMinPINCodeLengthWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeMinPINCodeLengthWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxRFIDCodeLengthWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeMaxRFIDCodeLengthWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMinRFIDCodeLengthWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeMinRFIDCodeLengthWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCredentialRulesSupportWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeCredentialRulesSupportWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNumberOfCredentialsSupportedPerUserWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeNumberOfCredentialsSupportedPerUserWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLanguageWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeLanguageWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLEDSettingsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeLEDSettingsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAutoRelockTimeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAutoRelockTimeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSoundVolumeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeSoundVolumeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOperatingModeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeOperatingModeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSupportedOperatingModesWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeSupportedOperatingModesWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDefaultConfigurationRegisterWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeDefaultConfigurationRegisterWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeEnableLocalProgrammingWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeEnableLocalProgrammingWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeEnableOneTouchLockingWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeEnableOneTouchLockingWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeEnableInsideStatusLEDWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeEnableInsideStatusLEDWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeEnablePrivacyModeButtonWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeEnablePrivacyModeButtonWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLocalProgrammingFeaturesWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeLocalProgrammingFeaturesWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeWrongCodeEntryLimitWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeWrongCodeEntryLimitWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeUserCodeTemporaryDisableTimeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeUserCodeTemporaryDisableTimeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSendPINOverTheAirWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeSendPINOverTheAirWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRequirePINforRemoteOperationWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeRequirePINforRemoteOperationWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeExpiringUserTimeoutWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeExpiringUserTimeoutWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterDoorLock").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterWindowCovering_Deprecated for MTRBaseClusterWindowCovering {}
pub trait MTRBaseClusterWindowCovering_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn upOrOpenWithParams_completionHandler_(
        &self,
        params: MTRWindowCoveringClusterUpOrOpenParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, upOrOpenWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn upOrOpenWithCompletionHandler_(&self, completionHandler: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, upOrOpenWithCompletionHandler : completionHandler)
    }
    unsafe fn downOrCloseWithParams_completionHandler_(
        &self,
        params: MTRWindowCoveringClusterDownOrCloseParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, downOrCloseWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn downOrCloseWithCompletionHandler_(&self, completionHandler: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, downOrCloseWithCompletionHandler : completionHandler)
    }
    unsafe fn stopMotionWithParams_completionHandler_(
        &self,
        params: MTRWindowCoveringClusterStopMotionParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopMotionWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn stopMotionWithCompletionHandler_(&self, completionHandler: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopMotionWithCompletionHandler : completionHandler)
    }
    unsafe fn goToLiftValueWithParams_completionHandler_(
        &self,
        params: MTRWindowCoveringClusterGoToLiftValueParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, goToLiftValueWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn goToLiftPercentageWithParams_completionHandler_(
        &self,
        params: MTRWindowCoveringClusterGoToLiftPercentageParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, goToLiftPercentageWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn goToTiltValueWithParams_completionHandler_(
        &self,
        params: MTRWindowCoveringClusterGoToTiltValueParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, goToTiltValueWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn goToTiltPercentageWithParams_completionHandler_(
        &self,
        params: MTRWindowCoveringClusterGoToTiltPercentageParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, goToTiltPercentageWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTypeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTypeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTypeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTypeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePhysicalClosedLimitLiftWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhysicalClosedLimitLiftWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePhysicalClosedLimitLiftWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePhysicalClosedLimitLiftWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePhysicalClosedLimitTiltWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhysicalClosedLimitTiltWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePhysicalClosedLimitTiltWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePhysicalClosedLimitTiltWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentPositionLiftWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPositionLiftWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentPositionLiftWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentPositionLiftWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentPositionTiltWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPositionTiltWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentPositionTiltWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentPositionTiltWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfActuationsLiftWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfActuationsLiftWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNumberOfActuationsLiftWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfActuationsLiftWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfActuationsTiltWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfActuationsTiltWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNumberOfActuationsTiltWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfActuationsTiltWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeConfigStatusWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeConfigStatusWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeConfigStatusWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeConfigStatusWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentPositionLiftPercentageWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPositionLiftPercentageWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentPositionLiftPercentageWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentPositionLiftPercentageWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentPositionTiltPercentageWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPositionTiltPercentageWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentPositionTiltPercentageWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentPositionTiltPercentageWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOperationalStatusWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalStatusWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOperationalStatusWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOperationalStatusWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTargetPositionLiftPercent100thsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTargetPositionLiftPercent100thsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTargetPositionLiftPercent100thsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTargetPositionLiftPercent100thsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTargetPositionTiltPercent100thsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTargetPositionTiltPercent100thsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTargetPositionTiltPercent100thsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTargetPositionTiltPercent100thsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEndProductTypeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEndProductTypeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeEndProductTypeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEndProductTypeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentPositionLiftPercent100thsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPositionLiftPercent100thsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentPositionLiftPercent100thsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentPositionLiftPercent100thsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentPositionTiltPercent100thsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPositionTiltPercent100thsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentPositionTiltPercent100thsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentPositionTiltPercent100thsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInstalledOpenLimitLiftWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstalledOpenLimitLiftWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInstalledOpenLimitLiftWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInstalledOpenLimitLiftWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInstalledClosedLimitLiftWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstalledClosedLimitLiftWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInstalledClosedLimitLiftWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInstalledClosedLimitLiftWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInstalledOpenLimitTiltWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstalledOpenLimitTiltWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInstalledOpenLimitTiltWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInstalledOpenLimitTiltWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInstalledClosedLimitTiltWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstalledClosedLimitTiltWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInstalledClosedLimitTiltWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInstalledClosedLimitTiltWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeModeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeModeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeModeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeModeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeModeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeModeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeModeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeModeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSafetyStatusWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSafetyStatusWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSafetyStatusWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSafetyStatusWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTypeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeTypeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePhysicalClosedLimitLiftWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributePhysicalClosedLimitLiftWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePhysicalClosedLimitTiltWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributePhysicalClosedLimitTiltWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentPositionLiftWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeCurrentPositionLiftWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentPositionTiltWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeCurrentPositionTiltWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNumberOfActuationsLiftWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeNumberOfActuationsLiftWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNumberOfActuationsTiltWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeNumberOfActuationsTiltWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeConfigStatusWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeConfigStatusWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentPositionLiftPercentageWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeCurrentPositionLiftPercentageWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentPositionTiltPercentageWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeCurrentPositionTiltPercentageWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOperationalStatusWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeOperationalStatusWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTargetPositionLiftPercent100thsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeTargetPositionLiftPercent100thsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTargetPositionTiltPercent100thsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeTargetPositionTiltPercent100thsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeEndProductTypeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeEndProductTypeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentPositionLiftPercent100thsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeCurrentPositionLiftPercent100thsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentPositionTiltPercent100thsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeCurrentPositionTiltPercent100thsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInstalledOpenLimitLiftWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeInstalledOpenLimitLiftWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInstalledClosedLimitLiftWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeInstalledClosedLimitLiftWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInstalledOpenLimitTiltWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeInstalledOpenLimitTiltWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInstalledClosedLimitTiltWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeInstalledClosedLimitTiltWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeModeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeModeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSafetyStatusWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeSafetyStatusWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWindowCovering").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterPumpConfigurationAndControl_Deprecated
    for MTRBaseClusterPumpConfigurationAndControl
{
}
pub trait MTRBaseClusterPumpConfigurationAndControl_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeMaxPressureWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxPressureWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxPressureWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxPressureWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxSpeedWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxSpeedWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxSpeedWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxSpeedWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxFlowWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxFlowWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxFlowWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxFlowWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinConstPressureWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinConstPressureWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMinConstPressureWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinConstPressureWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxConstPressureWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxConstPressureWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxConstPressureWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxConstPressureWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinCompPressureWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinCompPressureWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMinCompPressureWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinCompPressureWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxCompPressureWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxCompPressureWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxCompPressureWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxCompPressureWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinConstSpeedWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinConstSpeedWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMinConstSpeedWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinConstSpeedWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxConstSpeedWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxConstSpeedWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxConstSpeedWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxConstSpeedWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinConstFlowWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinConstFlowWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMinConstFlowWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinConstFlowWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxConstFlowWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxConstFlowWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxConstFlowWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxConstFlowWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinConstTempWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinConstTempWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMinConstTempWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinConstTempWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxConstTempWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxConstTempWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxConstTempWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxConstTempWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePumpStatusWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePumpStatusWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePumpStatusWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePumpStatusWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEffectiveOperationModeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEffectiveOperationModeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeEffectiveOperationModeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEffectiveOperationModeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEffectiveControlModeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEffectiveControlModeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeEffectiveControlModeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEffectiveControlModeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCapacityWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCapacityWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCapacityWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCapacityWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSpeedWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeedWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSpeedWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSpeedWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLifetimeRunningHoursWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLifetimeRunningHoursWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeLifetimeRunningHoursWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLifetimeRunningHoursWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeLifetimeRunningHoursWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLifetimeRunningHoursWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLifetimeRunningHoursWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLifetimeRunningHoursWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePowerWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePowerWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePowerWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLifetimeEnergyConsumedWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLifetimeEnergyConsumedWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeLifetimeEnergyConsumedWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLifetimeEnergyConsumedWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeLifetimeEnergyConsumedWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLifetimeEnergyConsumedWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLifetimeEnergyConsumedWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLifetimeEnergyConsumedWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOperationModeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationModeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeOperationModeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOperationModeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeOperationModeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOperationModeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOperationModeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOperationModeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeControlModeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeControlModeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeControlModeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeControlModeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeControlModeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeControlModeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeControlModeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeControlModeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxPressureWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMaxPressureWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxSpeedWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMaxSpeedWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxFlowWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMaxFlowWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMinConstPressureWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMinConstPressureWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxConstPressureWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMaxConstPressureWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMinCompPressureWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMinCompPressureWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxCompPressureWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMaxCompPressureWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMinConstSpeedWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMinConstSpeedWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxConstSpeedWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMaxConstSpeedWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMinConstFlowWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMinConstFlowWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxConstFlowWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMaxConstFlowWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMinConstTempWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMinConstTempWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxConstTempWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeMaxConstTempWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePumpStatusWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributePumpStatusWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeEffectiveOperationModeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeEffectiveOperationModeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeEffectiveControlModeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeEffectiveControlModeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCapacityWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeCapacityWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSpeedWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeSpeedWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLifetimeRunningHoursWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeLifetimeRunningHoursWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePowerWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributePowerWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLifetimeEnergyConsumedWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeLifetimeEnergyConsumedWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOperationModeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeOperationModeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeControlModeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeControlModeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPumpConfigurationAndControl").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterThermostat_Deprecated for MTRBaseClusterThermostat {}
pub trait MTRBaseClusterThermostat_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn setpointRaiseLowerWithParams_completionHandler_(
        &self,
        params: MTRThermostatClusterSetpointRaiseLowerParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setpointRaiseLowerWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn setWeeklyScheduleWithParams_completionHandler_(
        &self,
        params: MTRThermostatClusterSetWeeklyScheduleParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWeeklyScheduleWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn getWeeklyScheduleWithParams_completionHandler_(
        &self,
        params: MTRThermostatClusterGetWeeklyScheduleParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getWeeklyScheduleWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn clearWeeklyScheduleWithParams_completionHandler_(
        &self,
        params: MTRThermostatClusterClearWeeklyScheduleParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearWeeklyScheduleWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn clearWeeklyScheduleWithCompletionHandler_(
        &self,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearWeeklyScheduleWithCompletionHandler : completionHandler)
    }
    unsafe fn readAttributeLocalTemperatureWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocalTemperatureWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLocalTemperatureWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLocalTemperatureWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOutdoorTemperatureWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOutdoorTemperatureWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOutdoorTemperatureWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOutdoorTemperatureWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOccupancyWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupancyWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOccupancyWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOccupancyWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAbsMinHeatSetpointLimitWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAbsMinHeatSetpointLimitWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAbsMinHeatSetpointLimitWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAbsMinHeatSetpointLimitWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAbsMaxHeatSetpointLimitWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAbsMaxHeatSetpointLimitWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAbsMaxHeatSetpointLimitWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAbsMaxHeatSetpointLimitWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAbsMinCoolSetpointLimitWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAbsMinCoolSetpointLimitWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAbsMinCoolSetpointLimitWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAbsMinCoolSetpointLimitWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAbsMaxCoolSetpointLimitWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAbsMaxCoolSetpointLimitWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAbsMaxCoolSetpointLimitWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAbsMaxCoolSetpointLimitWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePICoolingDemandWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePICoolingDemandWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePICoolingDemandWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePICoolingDemandWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePIHeatingDemandWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePIHeatingDemandWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePIHeatingDemandWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePIHeatingDemandWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeHVACSystemTypeConfigurationWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHVACSystemTypeConfigurationWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeHVACSystemTypeConfigurationWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeHVACSystemTypeConfigurationWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeHVACSystemTypeConfigurationWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeHVACSystemTypeConfigurationWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeHVACSystemTypeConfigurationWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHVACSystemTypeConfigurationWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLocalTemperatureCalibrationWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocalTemperatureCalibrationWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeLocalTemperatureCalibrationWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalTemperatureCalibrationWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeLocalTemperatureCalibrationWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalTemperatureCalibrationWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLocalTemperatureCalibrationWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLocalTemperatureCalibrationWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOccupiedCoolingSetpointWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupiedCoolingSetpointWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeOccupiedCoolingSetpointWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOccupiedCoolingSetpointWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeOccupiedCoolingSetpointWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOccupiedCoolingSetpointWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOccupiedCoolingSetpointWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOccupiedCoolingSetpointWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOccupiedHeatingSetpointWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupiedHeatingSetpointWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeOccupiedHeatingSetpointWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOccupiedHeatingSetpointWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeOccupiedHeatingSetpointWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOccupiedHeatingSetpointWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOccupiedHeatingSetpointWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOccupiedHeatingSetpointWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUnoccupiedCoolingSetpointWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnoccupiedCoolingSetpointWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeUnoccupiedCoolingSetpointWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnoccupiedCoolingSetpointWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeUnoccupiedCoolingSetpointWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnoccupiedCoolingSetpointWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeUnoccupiedCoolingSetpointWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUnoccupiedCoolingSetpointWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUnoccupiedHeatingSetpointWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnoccupiedHeatingSetpointWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeUnoccupiedHeatingSetpointWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnoccupiedHeatingSetpointWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeUnoccupiedHeatingSetpointWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnoccupiedHeatingSetpointWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeUnoccupiedHeatingSetpointWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUnoccupiedHeatingSetpointWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinHeatSetpointLimitWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinHeatSetpointLimitWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeMinHeatSetpointLimitWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinHeatSetpointLimitWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeMinHeatSetpointLimitWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinHeatSetpointLimitWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMinHeatSetpointLimitWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinHeatSetpointLimitWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxHeatSetpointLimitWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxHeatSetpointLimitWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeMaxHeatSetpointLimitWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMaxHeatSetpointLimitWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeMaxHeatSetpointLimitWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMaxHeatSetpointLimitWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxHeatSetpointLimitWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxHeatSetpointLimitWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinCoolSetpointLimitWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinCoolSetpointLimitWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeMinCoolSetpointLimitWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinCoolSetpointLimitWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeMinCoolSetpointLimitWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinCoolSetpointLimitWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMinCoolSetpointLimitWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinCoolSetpointLimitWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxCoolSetpointLimitWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxCoolSetpointLimitWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeMaxCoolSetpointLimitWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMaxCoolSetpointLimitWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeMaxCoolSetpointLimitWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMaxCoolSetpointLimitWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxCoolSetpointLimitWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxCoolSetpointLimitWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinSetpointDeadBandWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinSetpointDeadBandWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeMinSetpointDeadBandWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinSetpointDeadBandWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeMinSetpointDeadBandWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinSetpointDeadBandWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMinSetpointDeadBandWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinSetpointDeadBandWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRemoteSensingWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRemoteSensingWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeRemoteSensingWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRemoteSensingWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeRemoteSensingWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRemoteSensingWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRemoteSensingWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRemoteSensingWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeControlSequenceOfOperationWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeControlSequenceOfOperationWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeControlSequenceOfOperationWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeControlSequenceOfOperationWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeControlSequenceOfOperationWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeControlSequenceOfOperationWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeControlSequenceOfOperationWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeControlSequenceOfOperationWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSystemModeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSystemModeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeSystemModeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSystemModeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeSystemModeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSystemModeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSystemModeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSystemModeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeThermostatRunningModeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThermostatRunningModeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeThermostatRunningModeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeThermostatRunningModeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStartOfWeekWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStartOfWeekWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeStartOfWeekWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStartOfWeekWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfWeeklyTransitionsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfWeeklyTransitionsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNumberOfWeeklyTransitionsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfWeeklyTransitionsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfDailyTransitionsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfDailyTransitionsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNumberOfDailyTransitionsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfDailyTransitionsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTemperatureSetpointHoldWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTemperatureSetpointHoldWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeTemperatureSetpointHoldWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureSetpointHoldWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeTemperatureSetpointHoldWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureSetpointHoldWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTemperatureSetpointHoldWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTemperatureSetpointHoldWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTemperatureSetpointHoldDurationWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTemperatureSetpointHoldDurationWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeTemperatureSetpointHoldDurationWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureSetpointHoldDurationWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeTemperatureSetpointHoldDurationWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureSetpointHoldDurationWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTemperatureSetpointHoldDurationWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTemperatureSetpointHoldDurationWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeThermostatProgrammingOperationModeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThermostatProgrammingOperationModeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeThermostatProgrammingOperationModeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeThermostatProgrammingOperationModeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeThermostatProgrammingOperationModeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeThermostatProgrammingOperationModeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeThermostatProgrammingOperationModeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeThermostatProgrammingOperationModeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeThermostatRunningStateWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThermostatRunningStateWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeThermostatRunningStateWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeThermostatRunningStateWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSetpointChangeSourceWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSetpointChangeSourceWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSetpointChangeSourceWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSetpointChangeSourceWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSetpointChangeAmountWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSetpointChangeAmountWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSetpointChangeAmountWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSetpointChangeAmountWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSetpointChangeSourceTimestampWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSetpointChangeSourceTimestampWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSetpointChangeSourceTimestampWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSetpointChangeSourceTimestampWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOccupiedSetbackWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupiedSetbackWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeOccupiedSetbackWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOccupiedSetbackWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeOccupiedSetbackWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOccupiedSetbackWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOccupiedSetbackWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOccupiedSetbackWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOccupiedSetbackMinWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupiedSetbackMinWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOccupiedSetbackMinWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOccupiedSetbackMinWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOccupiedSetbackMaxWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupiedSetbackMaxWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOccupiedSetbackMaxWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOccupiedSetbackMaxWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUnoccupiedSetbackWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnoccupiedSetbackWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeUnoccupiedSetbackWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnoccupiedSetbackWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeUnoccupiedSetbackWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnoccupiedSetbackWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeUnoccupiedSetbackWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUnoccupiedSetbackWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUnoccupiedSetbackMinWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnoccupiedSetbackMinWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeUnoccupiedSetbackMinWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUnoccupiedSetbackMinWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUnoccupiedSetbackMaxWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnoccupiedSetbackMaxWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeUnoccupiedSetbackMaxWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUnoccupiedSetbackMaxWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEmergencyHeatDeltaWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEmergencyHeatDeltaWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeEmergencyHeatDeltaWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEmergencyHeatDeltaWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeEmergencyHeatDeltaWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEmergencyHeatDeltaWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeEmergencyHeatDeltaWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEmergencyHeatDeltaWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeACTypeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACTypeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeACTypeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACTypeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeACTypeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACTypeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeACTypeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeACTypeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeACCapacityWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACCapacityWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeACCapacityWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACCapacityWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeACCapacityWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACCapacityWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeACCapacityWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeACCapacityWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeACRefrigerantTypeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACRefrigerantTypeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeACRefrigerantTypeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACRefrigerantTypeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeACRefrigerantTypeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACRefrigerantTypeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeACRefrigerantTypeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeACRefrigerantTypeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeACCompressorTypeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACCompressorTypeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeACCompressorTypeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACCompressorTypeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeACCompressorTypeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACCompressorTypeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeACCompressorTypeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeACCompressorTypeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeACErrorCodeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACErrorCodeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeACErrorCodeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACErrorCodeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeACErrorCodeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACErrorCodeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeACErrorCodeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeACErrorCodeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeACLouverPositionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACLouverPositionWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeACLouverPositionWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACLouverPositionWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeACLouverPositionWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACLouverPositionWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeACLouverPositionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeACLouverPositionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeACCoilTemperatureWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACCoilTemperatureWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeACCoilTemperatureWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeACCoilTemperatureWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeACCapacityformatWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACCapacityformatWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeACCapacityformatWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACCapacityformatWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeACCapacityformatWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACCapacityformatWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeACCapacityformatWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeACCapacityformatWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLocalTemperatureWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeLocalTemperatureWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOutdoorTemperatureWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeOutdoorTemperatureWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOccupancyWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeOccupancyWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAbsMinHeatSetpointLimitWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeAbsMinHeatSetpointLimitWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAbsMaxHeatSetpointLimitWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeAbsMaxHeatSetpointLimitWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAbsMinCoolSetpointLimitWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeAbsMinCoolSetpointLimitWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAbsMaxCoolSetpointLimitWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeAbsMaxCoolSetpointLimitWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePICoolingDemandWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributePICoolingDemandWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePIHeatingDemandWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributePIHeatingDemandWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeHVACSystemTypeConfigurationWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeHVACSystemTypeConfigurationWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLocalTemperatureCalibrationWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeLocalTemperatureCalibrationWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOccupiedCoolingSetpointWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeOccupiedCoolingSetpointWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOccupiedHeatingSetpointWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeOccupiedHeatingSetpointWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeUnoccupiedCoolingSetpointWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeUnoccupiedCoolingSetpointWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeUnoccupiedHeatingSetpointWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeUnoccupiedHeatingSetpointWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMinHeatSetpointLimitWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeMinHeatSetpointLimitWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxHeatSetpointLimitWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeMaxHeatSetpointLimitWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMinCoolSetpointLimitWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeMinCoolSetpointLimitWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxCoolSetpointLimitWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeMaxCoolSetpointLimitWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMinSetpointDeadBandWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeMinSetpointDeadBandWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRemoteSensingWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeRemoteSensingWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeControlSequenceOfOperationWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeControlSequenceOfOperationWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSystemModeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeSystemModeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeThermostatRunningModeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeThermostatRunningModeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeStartOfWeekWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeStartOfWeekWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNumberOfWeeklyTransitionsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeNumberOfWeeklyTransitionsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNumberOfDailyTransitionsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeNumberOfDailyTransitionsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTemperatureSetpointHoldWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeTemperatureSetpointHoldWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTemperatureSetpointHoldDurationWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeTemperatureSetpointHoldDurationWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeThermostatProgrammingOperationModeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeThermostatProgrammingOperationModeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeThermostatRunningStateWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeThermostatRunningStateWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSetpointChangeSourceWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeSetpointChangeSourceWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSetpointChangeAmountWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeSetpointChangeAmountWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSetpointChangeSourceTimestampWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeSetpointChangeSourceTimestampWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOccupiedSetbackWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeOccupiedSetbackWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOccupiedSetbackMinWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeOccupiedSetbackMinWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOccupiedSetbackMaxWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeOccupiedSetbackMaxWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeUnoccupiedSetbackWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeUnoccupiedSetbackWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeUnoccupiedSetbackMinWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeUnoccupiedSetbackMinWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeUnoccupiedSetbackMaxWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeUnoccupiedSetbackMaxWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeEmergencyHeatDeltaWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeEmergencyHeatDeltaWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeACTypeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeACTypeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeACCapacityWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeACCapacityWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeACRefrigerantTypeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeACRefrigerantTypeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeACCompressorTypeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeACCompressorTypeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeACErrorCodeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeACErrorCodeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeACLouverPositionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeACLouverPositionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeACCoilTemperatureWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeACCoilTemperatureWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeACCapacityformatWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeACCapacityformatWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostat").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterFanControl_Deprecated for MTRBaseClusterFanControl {}
pub trait MTRBaseClusterFanControl_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeFanModeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFanModeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeFanModeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFanModeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeFanModeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFanModeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFanModeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFanModeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFanModeSequenceWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFanModeSequenceWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeFanModeSequenceWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFanModeSequenceWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeFanModeSequenceWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFanModeSequenceWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFanModeSequenceWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFanModeSequenceWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePercentSettingWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePercentSettingWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributePercentSettingWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePercentSettingWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributePercentSettingWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePercentSettingWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePercentSettingWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePercentSettingWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePercentCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePercentCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePercentCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePercentCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSpeedMaxWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeedMaxWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSpeedMaxWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSpeedMaxWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSpeedSettingWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeedSettingWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeSpeedSettingWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSpeedSettingWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeSpeedSettingWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSpeedSettingWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSpeedSettingWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSpeedSettingWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSpeedCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeedCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSpeedCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSpeedCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRockSupportWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRockSupportWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRockSupportWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRockSupportWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRockSettingWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRockSettingWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeRockSettingWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRockSettingWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeRockSettingWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRockSettingWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRockSettingWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRockSettingWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWindSupportWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWindSupportWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeWindSupportWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWindSupportWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWindSettingWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWindSettingWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeWindSettingWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWindSettingWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeWindSettingWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWindSettingWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeWindSettingWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWindSettingWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFanModeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeFanModeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFanModeSequenceWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeFanModeSequenceWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePercentSettingWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributePercentSettingWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePercentCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributePercentCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSpeedMaxWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeSpeedMaxWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSpeedSettingWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeSpeedSettingWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSpeedCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeSpeedCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRockSupportWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeRockSupportWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRockSettingWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeRockSettingWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeWindSupportWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeWindSupportWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeWindSettingWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeWindSettingWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFanControl").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterThermostatUserInterfaceConfiguration_Deprecated
    for MTRBaseClusterThermostatUserInterfaceConfiguration
{
}
pub trait MTRBaseClusterThermostatUserInterfaceConfiguration_Deprecated:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeTemperatureDisplayModeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTemperatureDisplayModeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeTemperatureDisplayModeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureDisplayModeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeTemperatureDisplayModeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureDisplayModeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTemperatureDisplayModeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTemperatureDisplayModeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeKeypadLockoutWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeKeypadLockoutWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeKeypadLockoutWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeKeypadLockoutWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeKeypadLockoutWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeKeypadLockoutWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeKeypadLockoutWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeKeypadLockoutWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeScheduleProgrammingVisibilityWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScheduleProgrammingVisibilityWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeScheduleProgrammingVisibilityWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeScheduleProgrammingVisibilityWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeScheduleProgrammingVisibilityWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeScheduleProgrammingVisibilityWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeScheduleProgrammingVisibilityWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeScheduleProgrammingVisibilityWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTemperatureDisplayModeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostatUserInterfaceConfiguration").unwrap(), readAttributeTemperatureDisplayModeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeKeypadLockoutWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostatUserInterfaceConfiguration").unwrap(), readAttributeKeypadLockoutWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeScheduleProgrammingVisibilityWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostatUserInterfaceConfiguration").unwrap(), readAttributeScheduleProgrammingVisibilityWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostatUserInterfaceConfiguration").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostatUserInterfaceConfiguration").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostatUserInterfaceConfiguration").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostatUserInterfaceConfiguration").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterThermostatUserInterfaceConfiguration").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterColorControl_Deprecated for MTRBaseClusterColorControl {}
pub trait MTRBaseClusterColorControl_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn moveToHueWithParams_completionHandler_(
        &self,
        params: MTRColorControlClusterMoveToHueParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToHueWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn moveHueWithParams_completionHandler_(
        &self,
        params: MTRColorControlClusterMoveHueParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveHueWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn stepHueWithParams_completionHandler_(
        &self,
        params: MTRColorControlClusterStepHueParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepHueWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn moveToSaturationWithParams_completionHandler_(
        &self,
        params: MTRColorControlClusterMoveToSaturationParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToSaturationWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn moveSaturationWithParams_completionHandler_(
        &self,
        params: MTRColorControlClusterMoveSaturationParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveSaturationWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn stepSaturationWithParams_completionHandler_(
        &self,
        params: MTRColorControlClusterStepSaturationParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepSaturationWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn moveToHueAndSaturationWithParams_completionHandler_(
        &self,
        params: MTRColorControlClusterMoveToHueAndSaturationParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToHueAndSaturationWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn moveToColorWithParams_completionHandler_(
        &self,
        params: MTRColorControlClusterMoveToColorParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToColorWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn moveColorWithParams_completionHandler_(
        &self,
        params: MTRColorControlClusterMoveColorParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveColorWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn stepColorWithParams_completionHandler_(
        &self,
        params: MTRColorControlClusterStepColorParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepColorWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn moveToColorTemperatureWithParams_completionHandler_(
        &self,
        params: MTRColorControlClusterMoveToColorTemperatureParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToColorTemperatureWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn enhancedMoveToHueWithParams_completionHandler_(
        &self,
        params: MTRColorControlClusterEnhancedMoveToHueParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enhancedMoveToHueWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn enhancedMoveHueWithParams_completionHandler_(
        &self,
        params: MTRColorControlClusterEnhancedMoveHueParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enhancedMoveHueWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn enhancedStepHueWithParams_completionHandler_(
        &self,
        params: MTRColorControlClusterEnhancedStepHueParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enhancedStepHueWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn enhancedMoveToHueAndSaturationWithParams_completionHandler_(
        &self,
        params: MTRColorControlClusterEnhancedMoveToHueAndSaturationParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enhancedMoveToHueAndSaturationWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn colorLoopSetWithParams_completionHandler_(
        &self,
        params: MTRColorControlClusterColorLoopSetParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, colorLoopSetWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn stopMoveStepWithParams_completionHandler_(
        &self,
        params: MTRColorControlClusterStopMoveStepParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopMoveStepWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn moveColorTemperatureWithParams_completionHandler_(
        &self,
        params: MTRColorControlClusterMoveColorTemperatureParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveColorTemperatureWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn stepColorTemperatureWithParams_completionHandler_(
        &self,
        params: MTRColorControlClusterStepColorTemperatureParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepColorTemperatureWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentHueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentHueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentHueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentHueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentSaturationWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentSaturationWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentSaturationWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentSaturationWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRemainingTimeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRemainingTimeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRemainingTimeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRemainingTimeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentXWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentXWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentXWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentXWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentYWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentYWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentYWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentYWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDriftCompensationWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDriftCompensationWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDriftCompensationWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDriftCompensationWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCompensationTextWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCompensationTextWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCompensationTextWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCompensationTextWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorTemperatureMiredsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorTemperatureMiredsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeColorTemperatureMiredsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorTemperatureMiredsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorModeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorModeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeColorModeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorModeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOptionsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOptionsWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeOptionsWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOptionsWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeOptionsWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOptionsWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOptionsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOptionsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNumberOfPrimariesWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfPrimariesWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNumberOfPrimariesWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNumberOfPrimariesWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary1XWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary1XWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePrimary1XWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary1XWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary1YWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary1YWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePrimary1YWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary1YWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary1IntensityWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary1IntensityWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePrimary1IntensityWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary1IntensityWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary2XWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary2XWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePrimary2XWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary2XWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary2YWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary2YWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePrimary2YWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary2YWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary2IntensityWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary2IntensityWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePrimary2IntensityWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary2IntensityWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary3XWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary3XWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePrimary3XWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary3XWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary3YWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary3YWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePrimary3YWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary3YWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary3IntensityWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary3IntensityWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePrimary3IntensityWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary3IntensityWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary4XWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary4XWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePrimary4XWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary4XWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary4YWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary4YWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePrimary4YWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary4YWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary4IntensityWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary4IntensityWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePrimary4IntensityWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary4IntensityWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary5XWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary5XWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePrimary5XWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary5XWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary5YWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary5YWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePrimary5YWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary5YWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary5IntensityWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary5IntensityWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePrimary5IntensityWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary5IntensityWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary6XWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary6XWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePrimary6XWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary6XWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary6YWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary6YWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePrimary6YWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary6YWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePrimary6IntensityWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary6IntensityWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePrimary6IntensityWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePrimary6IntensityWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWhitePointXWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWhitePointXWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeWhitePointXWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWhitePointXWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWhitePointYWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWhitePointYWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeWhitePointYWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWhitePointYWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorPointRXWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointRXWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeColorPointRXWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorPointRXWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorPointRYWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointRYWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeColorPointRYWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorPointRYWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorPointRIntensityWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointRIntensityWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeColorPointRIntensityWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorPointRIntensityWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorPointGXWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointGXWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeColorPointGXWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorPointGXWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorPointGYWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointGYWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeColorPointGYWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorPointGYWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorPointGIntensityWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointGIntensityWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeColorPointGIntensityWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorPointGIntensityWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorPointBXWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointBXWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeColorPointBXWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorPointBXWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorPointBYWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointBYWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeColorPointBYWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorPointBYWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorPointBIntensityWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointBIntensityWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeColorPointBIntensityWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorPointBIntensityWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEnhancedCurrentHueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnhancedCurrentHueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeEnhancedCurrentHueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnhancedCurrentHueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEnhancedColorModeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnhancedColorModeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeEnhancedColorModeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnhancedColorModeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorLoopActiveWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorLoopActiveWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeColorLoopActiveWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorLoopActiveWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorLoopDirectionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorLoopDirectionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeColorLoopDirectionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorLoopDirectionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorLoopTimeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorLoopTimeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeColorLoopTimeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorLoopTimeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorLoopStartEnhancedHueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorLoopStartEnhancedHueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeColorLoopStartEnhancedHueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorLoopStartEnhancedHueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorLoopStoredEnhancedHueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorLoopStoredEnhancedHueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeColorLoopStoredEnhancedHueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorLoopStoredEnhancedHueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorCapabilitiesWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorCapabilitiesWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeColorCapabilitiesWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorCapabilitiesWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorTempPhysicalMinMiredsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorTempPhysicalMinMiredsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeColorTempPhysicalMinMiredsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorTempPhysicalMinMiredsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeColorTempPhysicalMaxMiredsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorTempPhysicalMaxMiredsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeColorTempPhysicalMaxMiredsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeColorTempPhysicalMaxMiredsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCoupleColorTempToLevelMinMiredsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCoupleColorTempToLevelMinMiredsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCoupleColorTempToLevelMinMiredsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCoupleColorTempToLevelMinMiredsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStartUpColorTemperatureMiredsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStartUpColorTemperatureMiredsWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeStartUpColorTemperatureMiredsWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpColorTemperatureMiredsWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeStartUpColorTemperatureMiredsWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpColorTemperatureMiredsWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeStartUpColorTemperatureMiredsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStartUpColorTemperatureMiredsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentHueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeCurrentHueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentSaturationWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeCurrentSaturationWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRemainingTimeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeRemainingTimeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentXWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeCurrentXWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentYWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeCurrentYWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDriftCompensationWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeDriftCompensationWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCompensationTextWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeCompensationTextWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeColorTemperatureMiredsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorTemperatureMiredsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeColorModeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorModeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOptionsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeOptionsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNumberOfPrimariesWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeNumberOfPrimariesWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePrimary1XWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary1XWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePrimary1YWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary1YWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePrimary1IntensityWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary1IntensityWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePrimary2XWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary2XWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePrimary2YWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary2YWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePrimary2IntensityWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary2IntensityWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePrimary3XWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary3XWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePrimary3YWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary3YWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePrimary3IntensityWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary3IntensityWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePrimary4XWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary4XWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePrimary4YWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary4YWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePrimary4IntensityWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary4IntensityWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePrimary5XWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary5XWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePrimary5YWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary5YWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePrimary5IntensityWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary5IntensityWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePrimary6XWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary6XWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePrimary6YWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary6YWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePrimary6IntensityWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributePrimary6IntensityWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeWhitePointXWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeWhitePointXWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeWhitePointYWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeWhitePointYWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeColorPointRXWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorPointRXWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeColorPointRYWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorPointRYWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeColorPointRIntensityWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorPointRIntensityWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeColorPointGXWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorPointGXWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeColorPointGYWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorPointGYWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeColorPointGIntensityWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorPointGIntensityWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeColorPointBXWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorPointBXWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeColorPointBYWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorPointBYWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeColorPointBIntensityWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorPointBIntensityWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeEnhancedCurrentHueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeEnhancedCurrentHueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeEnhancedColorModeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeEnhancedColorModeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeColorLoopActiveWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorLoopActiveWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeColorLoopDirectionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorLoopDirectionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeColorLoopTimeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorLoopTimeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeColorLoopStartEnhancedHueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorLoopStartEnhancedHueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeColorLoopStoredEnhancedHueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorLoopStoredEnhancedHueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeColorCapabilitiesWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorCapabilitiesWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeColorTempPhysicalMinMiredsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorTempPhysicalMinMiredsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeColorTempPhysicalMaxMiredsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeColorTempPhysicalMaxMiredsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCoupleColorTempToLevelMinMiredsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeCoupleColorTempToLevelMinMiredsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeStartUpColorTemperatureMiredsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeStartUpColorTemperatureMiredsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterColorControl").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterBallastConfiguration_Deprecated for MTRBaseClusterBallastConfiguration {}
pub trait MTRBaseClusterBallastConfiguration_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributePhysicalMinLevelWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhysicalMinLevelWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePhysicalMinLevelWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePhysicalMinLevelWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePhysicalMaxLevelWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhysicalMaxLevelWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePhysicalMaxLevelWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePhysicalMaxLevelWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBallastStatusWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBallastStatusWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBallastStatusWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBallastStatusWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinLevelWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinLevelWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeMinLevelWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinLevelWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeMinLevelWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinLevelWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMinLevelWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinLevelWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxLevelWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxLevelWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeMaxLevelWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMaxLevelWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeMaxLevelWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMaxLevelWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxLevelWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxLevelWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeIntrinsicBalanceFactorWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeIntrinsicBalanceFactorWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeIntrinsicBalanceFactorWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeIntrinsicBalanceFactorWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeIntrinsicBalanceFactorWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeIntrinsicBalanceFactorWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeIntrinsicBalanceFactorWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeIntrinsicBalanceFactorWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBallastFactorAdjustmentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBallastFactorAdjustmentWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeBallastFactorAdjustmentWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBallastFactorAdjustmentWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeBallastFactorAdjustmentWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBallastFactorAdjustmentWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBallastFactorAdjustmentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBallastFactorAdjustmentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLampQuantityWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLampQuantityWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLampQuantityWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLampQuantityWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLampTypeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLampTypeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeLampTypeWithValue_completionHandler_(
        &self,
        value: NSString,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampTypeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeLampTypeWithValue_params_completionHandler_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampTypeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLampTypeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLampTypeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLampManufacturerWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLampManufacturerWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeLampManufacturerWithValue_completionHandler_(
        &self,
        value: NSString,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampManufacturerWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeLampManufacturerWithValue_params_completionHandler_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampManufacturerWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLampManufacturerWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLampManufacturerWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLampRatedHoursWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLampRatedHoursWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeLampRatedHoursWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampRatedHoursWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeLampRatedHoursWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampRatedHoursWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLampRatedHoursWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLampRatedHoursWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLampBurnHoursWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLampBurnHoursWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeLampBurnHoursWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampBurnHoursWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeLampBurnHoursWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampBurnHoursWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLampBurnHoursWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLampBurnHoursWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLampAlarmModeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLampAlarmModeWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeLampAlarmModeWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampAlarmModeWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeLampAlarmModeWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampAlarmModeWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLampAlarmModeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLampAlarmModeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLampBurnHoursTripPointWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLampBurnHoursTripPointWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeLampBurnHoursTripPointWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampBurnHoursTripPointWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeLampBurnHoursTripPointWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampBurnHoursTripPointWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLampBurnHoursTripPointWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLampBurnHoursTripPointWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePhysicalMinLevelWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributePhysicalMinLevelWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePhysicalMaxLevelWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributePhysicalMaxLevelWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBallastStatusWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeBallastStatusWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMinLevelWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeMinLevelWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxLevelWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeMaxLevelWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeIntrinsicBalanceFactorWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeIntrinsicBalanceFactorWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBallastFactorAdjustmentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeBallastFactorAdjustmentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLampQuantityWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeLampQuantityWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLampTypeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeLampTypeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLampManufacturerWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeLampManufacturerWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLampRatedHoursWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeLampRatedHoursWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLampBurnHoursWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeLampBurnHoursWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLampAlarmModeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeLampAlarmModeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLampBurnHoursTripPointWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeLampBurnHoursTripPointWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBallastConfiguration").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterIlluminanceMeasurement_Deprecated for MTRBaseClusterIlluminanceMeasurement {}
pub trait MTRBaseClusterIlluminanceMeasurement_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeMeasuredValueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMeasuredValueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredValueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMinMeasuredValueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinMeasuredValueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxMeasuredValueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxMeasuredValueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeToleranceWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeToleranceWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeToleranceWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeToleranceWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLightSensorTypeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLightSensorTypeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLightSensorTypeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLightSensorTypeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasuredValueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), readAttributeMeasuredValueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), readAttributeMinMeasuredValueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), readAttributeMaxMeasuredValueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeToleranceWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), readAttributeToleranceWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLightSensorTypeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), readAttributeLightSensorTypeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterIlluminanceMeasurement").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterTemperatureMeasurement_Deprecated for MTRBaseClusterTemperatureMeasurement {}
pub trait MTRBaseClusterTemperatureMeasurement_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeMeasuredValueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMeasuredValueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredValueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMinMeasuredValueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinMeasuredValueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxMeasuredValueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxMeasuredValueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeToleranceWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeToleranceWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeToleranceWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeToleranceWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasuredValueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureMeasurement").unwrap(), readAttributeMeasuredValueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureMeasurement").unwrap(), readAttributeMinMeasuredValueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureMeasurement").unwrap(), readAttributeMaxMeasuredValueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeToleranceWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureMeasurement").unwrap(), readAttributeToleranceWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureMeasurement").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureMeasurement").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureMeasurement").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureMeasurement").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTemperatureMeasurement").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterPressureMeasurement_Deprecated for MTRBaseClusterPressureMeasurement {}
pub trait MTRBaseClusterPressureMeasurement_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeMeasuredValueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMeasuredValueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredValueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMinMeasuredValueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinMeasuredValueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxMeasuredValueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxMeasuredValueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeToleranceWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeToleranceWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeToleranceWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeToleranceWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeScaledValueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScaledValueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeScaledValueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeScaledValueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinScaledValueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinScaledValueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMinScaledValueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinScaledValueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxScaledValueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxScaledValueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxScaledValueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxScaledValueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeScaledToleranceWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScaledToleranceWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeScaledToleranceWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeScaledToleranceWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeScaleWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScaleWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeScaleWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeScaleWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasuredValueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeMeasuredValueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeMinMeasuredValueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeMaxMeasuredValueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeToleranceWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeToleranceWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeScaledValueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeScaledValueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMinScaledValueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeMinScaledValueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxScaledValueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeMaxScaledValueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeScaledToleranceWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeScaledToleranceWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeScaleWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeScaleWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterPressureMeasurement").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterFlowMeasurement_Deprecated for MTRBaseClusterFlowMeasurement {}
pub trait MTRBaseClusterFlowMeasurement_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeMeasuredValueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMeasuredValueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredValueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMinMeasuredValueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinMeasuredValueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxMeasuredValueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxMeasuredValueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeToleranceWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeToleranceWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeToleranceWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeToleranceWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasuredValueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFlowMeasurement").unwrap(), readAttributeMeasuredValueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFlowMeasurement").unwrap(), readAttributeMinMeasuredValueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFlowMeasurement").unwrap(), readAttributeMaxMeasuredValueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeToleranceWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFlowMeasurement").unwrap(), readAttributeToleranceWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFlowMeasurement").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFlowMeasurement").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFlowMeasurement").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFlowMeasurement").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterFlowMeasurement").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterRelativeHumidityMeasurement_Deprecated
    for MTRBaseClusterRelativeHumidityMeasurement
{
}
pub trait MTRBaseClusterRelativeHumidityMeasurement_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeMeasuredValueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMeasuredValueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredValueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMinMeasuredValueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMinMeasuredValueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMaxMeasuredValueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMaxMeasuredValueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeToleranceWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeToleranceWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeToleranceWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeToleranceWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasuredValueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRelativeHumidityMeasurement").unwrap(), readAttributeMeasuredValueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMinMeasuredValueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRelativeHumidityMeasurement").unwrap(), readAttributeMinMeasuredValueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMaxMeasuredValueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRelativeHumidityMeasurement").unwrap(), readAttributeMaxMeasuredValueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeToleranceWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRelativeHumidityMeasurement").unwrap(), readAttributeToleranceWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRelativeHumidityMeasurement").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRelativeHumidityMeasurement").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRelativeHumidityMeasurement").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRelativeHumidityMeasurement").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterRelativeHumidityMeasurement").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterOccupancySensing_Deprecated for MTRBaseClusterOccupancySensing {}
pub trait MTRBaseClusterOccupancySensing_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeOccupancyWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupancyWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOccupancyWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOccupancyWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOccupancySensorTypeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupancySensorTypeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOccupancySensorTypeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOccupancySensorTypeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOccupancySensorTypeBitmapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupancySensorTypeBitmapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOccupancySensorTypeBitmapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOccupancySensorTypeBitmapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePirOccupiedToUnoccupiedDelayWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePirOccupiedToUnoccupiedDelayWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributePirOccupiedToUnoccupiedDelayWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePirOccupiedToUnoccupiedDelayWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributePirOccupiedToUnoccupiedDelayWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePirOccupiedToUnoccupiedDelayWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePirOccupiedToUnoccupiedDelayWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePirOccupiedToUnoccupiedDelayWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePirUnoccupiedToOccupiedDelayWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePirUnoccupiedToOccupiedDelayWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributePirUnoccupiedToOccupiedDelayWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePirUnoccupiedToOccupiedDelayWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributePirUnoccupiedToOccupiedDelayWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePirUnoccupiedToOccupiedDelayWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePirUnoccupiedToOccupiedDelayWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePirUnoccupiedToOccupiedDelayWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePirUnoccupiedToOccupiedThresholdWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePirUnoccupiedToOccupiedThresholdWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributePirUnoccupiedToOccupiedThresholdWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePirUnoccupiedToOccupiedThresholdWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributePirUnoccupiedToOccupiedThresholdWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePirUnoccupiedToOccupiedThresholdWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePirUnoccupiedToOccupiedThresholdWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePirUnoccupiedToOccupiedThresholdWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUltrasonicOccupiedToUnoccupiedDelayWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUltrasonicOccupiedToUnoccupiedDelayWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeUltrasonicOccupiedToUnoccupiedDelayWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUltrasonicOccupiedToUnoccupiedDelayWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeUltrasonicOccupiedToUnoccupiedDelayWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUltrasonicOccupiedToUnoccupiedDelayWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeUltrasonicOccupiedToUnoccupiedDelayWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUltrasonicOccupiedToUnoccupiedDelayWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUltrasonicUnoccupiedToOccupiedDelayWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUltrasonicUnoccupiedToOccupiedDelayWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeUltrasonicUnoccupiedToOccupiedDelayWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUltrasonicUnoccupiedToOccupiedDelayWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeUltrasonicUnoccupiedToOccupiedDelayWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUltrasonicUnoccupiedToOccupiedDelayWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeUltrasonicUnoccupiedToOccupiedDelayWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUltrasonicUnoccupiedToOccupiedDelayWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePhysicalContactOccupiedToUnoccupiedDelayWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhysicalContactOccupiedToUnoccupiedDelayWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributePhysicalContactOccupiedToUnoccupiedDelayWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePhysicalContactOccupiedToUnoccupiedDelayWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributePhysicalContactOccupiedToUnoccupiedDelayWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePhysicalContactOccupiedToUnoccupiedDelayWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePhysicalContactOccupiedToUnoccupiedDelayWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePhysicalContactOccupiedToUnoccupiedDelayWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePhysicalContactUnoccupiedToOccupiedDelayWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhysicalContactUnoccupiedToOccupiedDelayWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributePhysicalContactUnoccupiedToOccupiedDelayWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePhysicalContactUnoccupiedToOccupiedDelayWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributePhysicalContactUnoccupiedToOccupiedDelayWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePhysicalContactUnoccupiedToOccupiedDelayWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePhysicalContactUnoccupiedToOccupiedDelayWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePhysicalContactUnoccupiedToOccupiedDelayWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOccupancyWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeOccupancyWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOccupancySensorTypeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeOccupancySensorTypeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOccupancySensorTypeBitmapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeOccupancySensorTypeBitmapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePirOccupiedToUnoccupiedDelayWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributePirOccupiedToUnoccupiedDelayWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePirUnoccupiedToOccupiedDelayWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributePirUnoccupiedToOccupiedDelayWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePirUnoccupiedToOccupiedThresholdWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributePirUnoccupiedToOccupiedThresholdWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeUltrasonicOccupiedToUnoccupiedDelayWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeUltrasonicOccupiedToUnoccupiedDelayWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeUltrasonicUnoccupiedToOccupiedDelayWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeUltrasonicUnoccupiedToOccupiedDelayWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePhysicalContactOccupiedToUnoccupiedDelayWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributePhysicalContactOccupiedToUnoccupiedDelayWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePhysicalContactUnoccupiedToOccupiedDelayWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributePhysicalContactUnoccupiedToOccupiedDelayWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOccupancySensing").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterWakeOnLan_Deprecated for MTRBaseClusterWakeOnLan {}
pub trait MTRBaseClusterWakeOnLan_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeMACAddressWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMACAddressWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMACAddressWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMACAddressWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMACAddressWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWakeOnLan").unwrap(), readAttributeMACAddressWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWakeOnLan").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWakeOnLan").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWakeOnLan").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWakeOnLan").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterWakeOnLan").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterChannel_Deprecated for MTRBaseClusterChannel {}
pub trait MTRBaseClusterChannel_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn changeChannelWithParams_completionHandler_(
        &self,
        params: MTRChannelClusterChangeChannelParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeChannelWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn changeChannelByNumberWithParams_completionHandler_(
        &self,
        params: MTRChannelClusterChangeChannelByNumberParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeChannelByNumberWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn skipChannelWithParams_completionHandler_(
        &self,
        params: MTRChannelClusterSkipChannelParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, skipChannelWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeChannelListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeChannelListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeChannelListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeChannelListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLineupWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLineupWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLineupWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLineupWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentChannelWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentChannelWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentChannelWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentChannelWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeChannelListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChannel").unwrap(), readAttributeChannelListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLineupWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChannel").unwrap(), readAttributeLineupWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentChannelWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChannel").unwrap(), readAttributeCurrentChannelWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChannel").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChannel").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChannel").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChannel").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterChannel").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterTargetNavigator_Deprecated for MTRBaseClusterTargetNavigator {}
pub trait MTRBaseClusterTargetNavigator_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn navigateTargetWithParams_completionHandler_(
        &self,
        params: MTRTargetNavigatorClusterNavigateTargetParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, navigateTargetWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTargetListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTargetListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTargetListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTargetListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentTargetWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentTargetWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentTargetWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentTargetWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTargetListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTargetNavigator").unwrap(), readAttributeTargetListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentTargetWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTargetNavigator").unwrap(), readAttributeCurrentTargetWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTargetNavigator").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTargetNavigator").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTargetNavigator").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTargetNavigator").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTargetNavigator").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterMediaPlayback_Deprecated for MTRBaseClusterMediaPlayback {}
pub trait MTRBaseClusterMediaPlayback_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn playWithParams_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterPlayParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, playWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn playWithCompletionHandler_(&self, completionHandler: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, playWithCompletionHandler : completionHandler)
    }
    unsafe fn pauseWithParams_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterPauseParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn pauseWithCompletionHandler_(&self, completionHandler: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseWithCompletionHandler : completionHandler)
    }
    unsafe fn stopPlaybackWithParams_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterStopPlaybackParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopPlaybackWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn stopPlaybackWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopPlaybackWithCompletionHandler : completionHandler)
    }
    unsafe fn startOverWithParams_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterStartOverParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startOverWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn startOverWithCompletionHandler_(&self, completionHandler: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startOverWithCompletionHandler : completionHandler)
    }
    unsafe fn previousWithParams_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterPreviousParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, previousWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn previousWithCompletionHandler_(&self, completionHandler: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, previousWithCompletionHandler : completionHandler)
    }
    unsafe fn nextWithParams_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterNextParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, nextWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn nextWithCompletionHandler_(&self, completionHandler: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, nextWithCompletionHandler : completionHandler)
    }
    unsafe fn rewindWithParams_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterRewindParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rewindWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn rewindWithCompletionHandler_(&self, completionHandler: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rewindWithCompletionHandler : completionHandler)
    }
    unsafe fn fastForwardWithParams_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterFastForwardParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fastForwardWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn fastForwardWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fastForwardWithCompletionHandler : completionHandler)
    }
    unsafe fn skipForwardWithParams_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterSkipForwardParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, skipForwardWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn skipBackwardWithParams_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterSkipBackwardParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, skipBackwardWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn seekWithParams_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterSeekParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, seekWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentStateWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentStateWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentStateWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentStateWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStartTimeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStartTimeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeStartTimeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStartTimeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDurationWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDurationWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDurationWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDurationWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSampledPositionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSampledPositionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSampledPositionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSampledPositionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePlaybackSpeedWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePlaybackSpeedWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePlaybackSpeedWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePlaybackSpeedWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSeekRangeEndWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSeekRangeEndWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSeekRangeEndWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSeekRangeEndWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSeekRangeStartWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSeekRangeStartWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSeekRangeStartWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSeekRangeStartWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentStateWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeCurrentStateWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeStartTimeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeStartTimeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDurationWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeDurationWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSampledPositionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeSampledPositionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePlaybackSpeedWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributePlaybackSpeedWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSeekRangeEndWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeSeekRangeEndWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSeekRangeStartWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeSeekRangeStartWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaPlayback").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterMediaInput_Deprecated for MTRBaseClusterMediaInput {}
pub trait MTRBaseClusterMediaInput_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn selectInputWithParams_completionHandler_(
        &self,
        params: MTRMediaInputClusterSelectInputParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, selectInputWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn showInputStatusWithParams_completionHandler_(
        &self,
        params: MTRMediaInputClusterShowInputStatusParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, showInputStatusWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn showInputStatusWithCompletionHandler_(&self, completionHandler: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, showInputStatusWithCompletionHandler : completionHandler)
    }
    unsafe fn hideInputStatusWithParams_completionHandler_(
        &self,
        params: MTRMediaInputClusterHideInputStatusParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hideInputStatusWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn hideInputStatusWithCompletionHandler_(&self, completionHandler: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hideInputStatusWithCompletionHandler : completionHandler)
    }
    unsafe fn renameInputWithParams_completionHandler_(
        &self,
        params: MTRMediaInputClusterRenameInputParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, renameInputWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInputListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInputListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInputListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInputListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentInputWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentInputWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentInputWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentInputWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInputListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaInput").unwrap(), readAttributeInputListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentInputWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaInput").unwrap(), readAttributeCurrentInputWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaInput").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaInput").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaInput").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaInput").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterMediaInput").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterLowPower_Deprecated for MTRBaseClusterLowPower {}
pub trait MTRBaseClusterLowPower_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn sleepWithParams_completionHandler_(
        &self,
        params: MTRLowPowerClusterSleepParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sleepWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn sleepWithCompletionHandler_(&self, completionHandler: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sleepWithCompletionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLowPower").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLowPower").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLowPower").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLowPower").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterLowPower").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterKeypadInput_Deprecated for MTRBaseClusterKeypadInput {}
pub trait MTRBaseClusterKeypadInput_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn sendKeyWithParams_completionHandler_(
        &self,
        params: MTRKeypadInputClusterSendKeyParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sendKeyWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterKeypadInput").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterKeypadInput").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterKeypadInput").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterKeypadInput").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterKeypadInput").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterContentLauncher_Deprecated for MTRBaseClusterContentLauncher {}
pub trait MTRBaseClusterContentLauncher_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn launchContentWithParams_completionHandler_(
        &self,
        params: MTRContentLauncherClusterLaunchContentParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, launchContentWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn launchURLWithParams_completionHandler_(
        &self,
        params: MTRContentLauncherClusterLaunchURLParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, launchURLWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptHeaderWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptHeaderWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptHeaderWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptHeaderWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSupportedStreamingProtocolsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedStreamingProtocolsWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeSupportedStreamingProtocolsWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSupportedStreamingProtocolsWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeSupportedStreamingProtocolsWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSupportedStreamingProtocolsWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSupportedStreamingProtocolsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSupportedStreamingProtocolsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptHeaderWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentLauncher").unwrap(), readAttributeAcceptHeaderWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSupportedStreamingProtocolsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentLauncher").unwrap(), readAttributeSupportedStreamingProtocolsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentLauncher").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentLauncher").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentLauncher").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentLauncher").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterContentLauncher").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterAudioOutput_Deprecated for MTRBaseClusterAudioOutput {}
pub trait MTRBaseClusterAudioOutput_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn selectOutputWithParams_completionHandler_(
        &self,
        params: MTRAudioOutputClusterSelectOutputParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, selectOutputWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn renameOutputWithParams_completionHandler_(
        &self,
        params: MTRAudioOutputClusterRenameOutputParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, renameOutputWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOutputListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOutputListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOutputListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOutputListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentOutputWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentOutputWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentOutputWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentOutputWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOutputListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAudioOutput").unwrap(), readAttributeOutputListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentOutputWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAudioOutput").unwrap(), readAttributeCurrentOutputWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAudioOutput").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAudioOutput").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAudioOutput").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAudioOutput").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAudioOutput").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterApplicationLauncher_Deprecated for MTRBaseClusterApplicationLauncher {}
pub trait MTRBaseClusterApplicationLauncher_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn launchAppWithParams_completionHandler_(
        &self,
        params: MTRApplicationLauncherClusterLaunchAppParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, launchAppWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn stopAppWithParams_completionHandler_(
        &self,
        params: MTRApplicationLauncherClusterStopAppParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopAppWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn hideAppWithParams_completionHandler_(
        &self,
        params: MTRApplicationLauncherClusterHideAppParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hideAppWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCatalogListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCatalogListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCatalogListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCatalogListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentAppWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentAppWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeCurrentAppWithValue_completionHandler_(
        &self,
        value: MTRApplicationLauncherClusterApplicationEP,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCurrentAppWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeCurrentAppWithValue_params_completionHandler_(
        &self,
        value: MTRApplicationLauncherClusterApplicationEP,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCurrentAppWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentAppWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentAppWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCatalogListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationLauncher").unwrap(), readAttributeCatalogListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentAppWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationLauncher").unwrap(), readAttributeCurrentAppWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationLauncher").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationLauncher").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationLauncher").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationLauncher").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationLauncher").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterApplicationBasic_Deprecated for MTRBaseClusterApplicationBasic {}
pub trait MTRBaseClusterApplicationBasic_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeVendorNameWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVendorNameWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeVendorNameWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeVendorNameWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeVendorIDWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVendorIDWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeVendorIDWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeVendorIDWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeApplicationNameWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApplicationNameWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeApplicationNameWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeApplicationNameWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeProductIDWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductIDWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeProductIDWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeProductIDWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeApplicationWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApplicationWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeApplicationWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeApplicationWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStatusWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStatusWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeStatusWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStatusWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeApplicationVersionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApplicationVersionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeApplicationVersionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeApplicationVersionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAllowedVendorListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAllowedVendorListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAllowedVendorListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAllowedVendorListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeVendorNameWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeVendorNameWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeVendorIDWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeVendorIDWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeApplicationNameWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeApplicationNameWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeProductIDWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeProductIDWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeApplicationWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeApplicationWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeStatusWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeStatusWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeApplicationVersionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeApplicationVersionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAllowedVendorListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeAllowedVendorListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterApplicationBasic").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterAccountLogin_Deprecated for MTRBaseClusterAccountLogin {}
pub trait MTRBaseClusterAccountLogin_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn getSetupPINWithParams_completionHandler_(
        &self,
        params: MTRAccountLoginClusterGetSetupPINParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getSetupPINWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn loginWithParams_completionHandler_(
        &self,
        params: MTRAccountLoginClusterLoginParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, loginWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn logoutWithParams_completionHandler_(
        &self,
        params: MTRAccountLoginClusterLogoutParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, logoutWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn logoutWithCompletionHandler_(&self, completionHandler: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, logoutWithCompletionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccountLogin").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccountLogin").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccountLogin").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccountLogin").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterAccountLogin").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
impl MTRBaseClusterTestCluster_Deprecated for MTRBaseClusterTestCluster {}
pub trait MTRBaseClusterTestCluster_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn testWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn testWithCompletionHandler_(&self, completionHandler: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testWithCompletionHandler : completionHandler)
    }
    unsafe fn testNotHandledWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestNotHandledParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNotHandledWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn testNotHandledWithCompletionHandler_(&self, completionHandler: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNotHandledWithCompletionHandler : completionHandler)
    }
    unsafe fn testSpecificWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestSpecificParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSpecificWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn testSpecificWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSpecificWithCompletionHandler : completionHandler)
    }
    unsafe fn testUnknownCommandWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestUnknownCommandParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testUnknownCommandWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn testUnknownCommandWithCompletionHandler_(
        &self,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testUnknownCommandWithCompletionHandler : completionHandler)
    }
    unsafe fn testAddArgumentsWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestAddArgumentsParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testAddArgumentsWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn testSimpleArgumentRequestWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestSimpleArgumentRequestParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSimpleArgumentRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn testStructArrayArgumentRequestWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestStructArrayArgumentRequestParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testStructArrayArgumentRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn testStructArgumentRequestWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestStructArgumentRequestParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testStructArgumentRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn testNestedStructArgumentRequestWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestNestedStructArgumentRequestParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNestedStructArgumentRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn testListStructArgumentRequestWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestListStructArgumentRequestParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testListStructArgumentRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn testListInt8UArgumentRequestWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestListInt8UArgumentRequestParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testListInt8UArgumentRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn testNestedStructListArgumentRequestWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestNestedStructListArgumentRequestParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNestedStructListArgumentRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn testListNestedStructListArgumentRequestWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestListNestedStructListArgumentRequestParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testListNestedStructListArgumentRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn testListInt8UReverseRequestWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestListInt8UReverseRequestParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testListInt8UReverseRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn testEnumsRequestWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestEnumsRequestParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testEnumsRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn testNullableOptionalRequestWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestNullableOptionalRequestParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNullableOptionalRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn testNullableOptionalRequestWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNullableOptionalRequestWithCompletionHandler : completionHandler)
    }
    unsafe fn testComplexNullableOptionalRequestWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestComplexNullableOptionalRequestParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testComplexNullableOptionalRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn simpleStructEchoRequestWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterSimpleStructEchoRequestParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, simpleStructEchoRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn timedInvokeRequestWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterTimedInvokeRequestParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, timedInvokeRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn timedInvokeRequestWithCompletionHandler_(
        &self,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, timedInvokeRequestWithCompletionHandler : completionHandler)
    }
    unsafe fn testSimpleOptionalArgumentRequestWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSimpleOptionalArgumentRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn testSimpleOptionalArgumentRequestWithCompletionHandler_(
        &self,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSimpleOptionalArgumentRequestWithCompletionHandler : completionHandler)
    }
    unsafe fn testEmitTestEventRequestWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestEmitTestEventRequestParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testEmitTestEventRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn testEmitTestFabricScopedEventRequestWithParams_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testEmitTestFabricScopedEventRequestWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBooleanWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBooleanWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeBooleanWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBooleanWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeBooleanWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBooleanWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBooleanWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBooleanWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBitmap8WithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBitmap8WithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeBitmap8WithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap8WithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeBitmap8WithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap8WithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBitmap8WithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBitmap8WithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBitmap16WithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBitmap16WithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeBitmap16WithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap16WithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeBitmap16WithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap16WithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBitmap16WithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBitmap16WithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBitmap32WithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBitmap32WithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeBitmap32WithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap32WithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeBitmap32WithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap32WithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBitmap32WithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBitmap32WithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBitmap64WithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBitmap64WithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeBitmap64WithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap64WithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeBitmap64WithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap64WithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBitmap64WithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBitmap64WithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt8uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt8uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt8uWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt8uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt8uWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt8uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInt8uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt8uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt16uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt16uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt16uWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt16uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt16uWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt16uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInt16uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt16uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt24uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt24uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt24uWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt24uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt24uWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt24uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInt24uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt24uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt32uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt32uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt32uWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt32uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt32uWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt32uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInt32uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt32uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt40uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt40uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt40uWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt40uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt40uWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt40uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInt40uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt40uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt48uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt48uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt48uWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt48uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt48uWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt48uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInt48uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt48uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt56uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt56uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt56uWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt56uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt56uWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt56uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInt56uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt56uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt64uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt64uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt64uWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt64uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt64uWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt64uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInt64uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt64uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt8sWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt8sWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt8sWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt8sWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt8sWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt8sWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInt8sWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt8sWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt16sWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt16sWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt16sWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt16sWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt16sWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt16sWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInt16sWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt16sWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt24sWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt24sWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt24sWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt24sWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt24sWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt24sWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInt24sWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt24sWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt32sWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt32sWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt32sWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt32sWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt32sWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt32sWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInt32sWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt32sWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt40sWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt40sWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt40sWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt40sWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt40sWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt40sWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInt40sWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt40sWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt48sWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt48sWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt48sWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt48sWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt48sWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt48sWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInt48sWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt48sWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt56sWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt56sWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt56sWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt56sWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt56sWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt56sWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInt56sWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt56sWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInt64sWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt64sWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt64sWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt64sWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeInt64sWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt64sWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInt64sWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInt64sWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEnum8WithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnum8WithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeEnum8WithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnum8WithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeEnum8WithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnum8WithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeEnum8WithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnum8WithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEnum16WithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnum16WithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeEnum16WithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnum16WithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeEnum16WithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnum16WithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeEnum16WithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnum16WithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFloatSingleWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFloatSingleWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeFloatSingleWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFloatSingleWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeFloatSingleWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFloatSingleWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFloatSingleWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFloatSingleWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFloatDoubleWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFloatDoubleWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeFloatDoubleWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFloatDoubleWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeFloatDoubleWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFloatDoubleWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFloatDoubleWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFloatDoubleWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOctetStringWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOctetStringWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeOctetStringWithValue_completionHandler_(
        &self,
        value: NSData,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOctetStringWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeOctetStringWithValue_params_completionHandler_(
        &self,
        value: NSData,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOctetStringWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOctetStringWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOctetStringWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeListInt8uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeListInt8uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeListInt8uWithValue_completionHandler_(
        &self,
        value: NSArray,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListInt8uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeListInt8uWithValue_params_completionHandler_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListInt8uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeListInt8uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeListInt8uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeListOctetStringWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeListOctetStringWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeListOctetStringWithValue_completionHandler_(
        &self,
        value: NSArray,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListOctetStringWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeListOctetStringWithValue_params_completionHandler_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListOctetStringWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeListOctetStringWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeListOctetStringWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeListStructOctetStringWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeListStructOctetStringWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeListStructOctetStringWithValue_completionHandler_(
        &self,
        value: NSArray,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListStructOctetStringWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeListStructOctetStringWithValue_params_completionHandler_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListStructOctetStringWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeListStructOctetStringWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeListStructOctetStringWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLongOctetStringWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLongOctetStringWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeLongOctetStringWithValue_completionHandler_(
        &self,
        value: NSData,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLongOctetStringWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeLongOctetStringWithValue_params_completionHandler_(
        &self,
        value: NSData,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLongOctetStringWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLongOctetStringWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLongOctetStringWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCharStringWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCharStringWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeCharStringWithValue_completionHandler_(
        &self,
        value: NSString,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCharStringWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeCharStringWithValue_params_completionHandler_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCharStringWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCharStringWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCharStringWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLongCharStringWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLongCharStringWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeLongCharStringWithValue_completionHandler_(
        &self,
        value: NSString,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLongCharStringWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeLongCharStringWithValue_params_completionHandler_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLongCharStringWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLongCharStringWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLongCharStringWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEpochUsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEpochUsWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeEpochUsWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEpochUsWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeEpochUsWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEpochUsWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeEpochUsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEpochUsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEpochSWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEpochSWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeEpochSWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEpochSWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeEpochSWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEpochSWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeEpochSWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEpochSWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeVendorIdWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVendorIdWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeVendorIdWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeVendorIdWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeVendorIdWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeVendorIdWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeVendorIdWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeVendorIdWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeListNullablesAndOptionalsStructWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeListNullablesAndOptionalsStructWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeListNullablesAndOptionalsStructWithValue_completionHandler_(
        &self,
        value: NSArray,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListNullablesAndOptionalsStructWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeListNullablesAndOptionalsStructWithValue_params_completionHandler_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListNullablesAndOptionalsStructWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeListNullablesAndOptionalsStructWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeListNullablesAndOptionalsStructWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeEnumAttrWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnumAttrWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeEnumAttrWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnumAttrWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeEnumAttrWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnumAttrWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeEnumAttrWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeEnumAttrWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStructAttrWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStructAttrWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeStructAttrWithValue_completionHandler_(
        &self,
        value: MTRTestClusterClusterSimpleStruct,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStructAttrWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeStructAttrWithValue_params_completionHandler_(
        &self,
        value: MTRTestClusterClusterSimpleStruct,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStructAttrWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeStructAttrWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStructAttrWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRangeRestrictedInt8uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRangeRestrictedInt8uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeRangeRestrictedInt8uWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt8uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeRangeRestrictedInt8uWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt8uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRangeRestrictedInt8uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRangeRestrictedInt8uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRangeRestrictedInt8sWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRangeRestrictedInt8sWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeRangeRestrictedInt8sWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt8sWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeRangeRestrictedInt8sWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt8sWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRangeRestrictedInt8sWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRangeRestrictedInt8sWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRangeRestrictedInt16uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRangeRestrictedInt16uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeRangeRestrictedInt16uWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt16uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeRangeRestrictedInt16uWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt16uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRangeRestrictedInt16uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRangeRestrictedInt16uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRangeRestrictedInt16sWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRangeRestrictedInt16sWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeRangeRestrictedInt16sWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt16sWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeRangeRestrictedInt16sWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt16sWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRangeRestrictedInt16sWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRangeRestrictedInt16sWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeListLongOctetStringWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeListLongOctetStringWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeListLongOctetStringWithValue_completionHandler_(
        &self,
        value: NSArray,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListLongOctetStringWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeListLongOctetStringWithValue_params_completionHandler_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListLongOctetStringWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeListLongOctetStringWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeListLongOctetStringWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeListFabricScopedWithParams_completionHandler_(
        &self,
        params: MTRReadParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeListFabricScopedWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeListFabricScopedWithValue_completionHandler_(
        &self,
        value: NSArray,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListFabricScopedWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeListFabricScopedWithValue_params_completionHandler_(
        &self,
        value: NSArray,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListFabricScopedWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeListFabricScopedWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeListFabricScopedWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTimedWriteBooleanWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTimedWriteBooleanWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeTimedWriteBooleanWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTimedWriteBooleanWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeTimedWriteBooleanWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTimedWriteBooleanWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTimedWriteBooleanWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTimedWriteBooleanWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneralErrorBooleanWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneralErrorBooleanWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeGeneralErrorBooleanWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeGeneralErrorBooleanWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeGeneralErrorBooleanWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeGeneralErrorBooleanWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneralErrorBooleanWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneralErrorBooleanWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterErrorBooleanWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterErrorBooleanWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeClusterErrorBooleanWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeClusterErrorBooleanWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeClusterErrorBooleanWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeClusterErrorBooleanWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterErrorBooleanWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterErrorBooleanWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeUnsupportedWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnsupportedWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeUnsupportedWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnsupportedWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeUnsupportedWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnsupportedWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeUnsupportedWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeUnsupportedWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableBooleanWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableBooleanWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableBooleanWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBooleanWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableBooleanWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBooleanWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableBooleanWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableBooleanWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableBitmap8WithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableBitmap8WithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableBitmap8WithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap8WithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableBitmap8WithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap8WithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableBitmap8WithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableBitmap8WithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableBitmap16WithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableBitmap16WithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableBitmap16WithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap16WithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableBitmap16WithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap16WithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableBitmap16WithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableBitmap16WithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableBitmap32WithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableBitmap32WithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableBitmap32WithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap32WithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableBitmap32WithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap32WithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableBitmap32WithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableBitmap32WithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableBitmap64WithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableBitmap64WithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableBitmap64WithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap64WithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableBitmap64WithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap64WithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableBitmap64WithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableBitmap64WithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt8uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt8uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt8uWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt8uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt8uWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt8uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableInt8uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt8uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt16uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt16uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt16uWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt16uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt16uWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt16uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableInt16uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt16uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt24uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt24uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt24uWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt24uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt24uWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt24uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableInt24uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt24uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt32uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt32uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt32uWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt32uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt32uWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt32uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableInt32uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt32uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt40uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt40uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt40uWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt40uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt40uWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt40uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableInt40uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt40uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt48uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt48uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt48uWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt48uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt48uWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt48uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableInt48uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt48uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt56uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt56uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt56uWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt56uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt56uWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt56uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableInt56uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt56uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt64uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt64uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt64uWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt64uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt64uWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt64uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableInt64uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt64uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt8sWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt8sWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt8sWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt8sWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt8sWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt8sWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableInt8sWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt8sWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt16sWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt16sWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt16sWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt16sWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt16sWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt16sWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableInt16sWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt16sWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt24sWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt24sWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt24sWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt24sWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt24sWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt24sWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableInt24sWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt24sWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt32sWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt32sWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt32sWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt32sWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt32sWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt32sWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableInt32sWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt32sWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt40sWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt40sWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt40sWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt40sWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt40sWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt40sWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableInt40sWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt40sWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt48sWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt48sWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt48sWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt48sWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt48sWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt48sWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableInt48sWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt48sWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt56sWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt56sWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt56sWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt56sWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt56sWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt56sWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableInt56sWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt56sWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableInt64sWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt64sWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt64sWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt64sWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableInt64sWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt64sWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableInt64sWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableInt64sWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableEnum8WithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableEnum8WithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableEnum8WithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableEnum8WithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableEnum8WithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableEnum8WithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableEnum8WithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableEnum8WithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableEnum16WithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableEnum16WithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableEnum16WithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableEnum16WithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableEnum16WithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableEnum16WithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableEnum16WithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableEnum16WithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableFloatSingleWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableFloatSingleWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableFloatSingleWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableFloatSingleWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableFloatSingleWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableFloatSingleWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableFloatSingleWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableFloatSingleWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableFloatDoubleWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableFloatDoubleWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableFloatDoubleWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableFloatDoubleWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableFloatDoubleWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableFloatDoubleWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableFloatDoubleWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableFloatDoubleWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableOctetStringWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableOctetStringWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableOctetStringWithValue_completionHandler_(
        &self,
        value: NSData,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableOctetStringWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableOctetStringWithValue_params_completionHandler_(
        &self,
        value: NSData,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableOctetStringWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableOctetStringWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableOctetStringWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableCharStringWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableCharStringWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableCharStringWithValue_completionHandler_(
        &self,
        value: NSString,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableCharStringWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableCharStringWithValue_params_completionHandler_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableCharStringWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableCharStringWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableCharStringWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableEnumAttrWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableEnumAttrWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableEnumAttrWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableEnumAttrWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableEnumAttrWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableEnumAttrWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableEnumAttrWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableEnumAttrWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableStructWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableStructWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableStructWithValue_completionHandler_(
        &self,
        value: MTRTestClusterClusterSimpleStruct,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableStructWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableStructWithValue_params_completionHandler_(
        &self,
        value: MTRTestClusterClusterSimpleStruct,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableStructWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableStructWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableStructWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableRangeRestrictedInt8uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableRangeRestrictedInt8uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt8uWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt8uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt8uWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt8uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableRangeRestrictedInt8uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableRangeRestrictedInt8uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableRangeRestrictedInt8sWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableRangeRestrictedInt8sWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt8sWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt8sWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt8sWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt8sWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableRangeRestrictedInt8sWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableRangeRestrictedInt8sWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableRangeRestrictedInt16uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableRangeRestrictedInt16uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt16uWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt16uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt16uWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt16uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableRangeRestrictedInt16uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableRangeRestrictedInt16uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNullableRangeRestrictedInt16sWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableRangeRestrictedInt16sWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt16sWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt16sWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt16sWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt16sWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNullableRangeRestrictedInt16sWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNullableRangeRestrictedInt16sWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeWriteOnlyInt8uWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWriteOnlyInt8uWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeWriteOnlyInt8uWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWriteOnlyInt8uWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeWriteOnlyInt8uWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWriteOnlyInt8uWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeWriteOnlyInt8uWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWriteOnlyInt8uWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBooleanWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeBooleanWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBitmap8WithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeBitmap8WithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBitmap16WithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeBitmap16WithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBitmap32WithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeBitmap32WithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBitmap64WithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeBitmap64WithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInt8uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeInt8uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInt16uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeInt16uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInt24uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeInt24uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInt32uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeInt32uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInt40uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeInt40uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInt48uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeInt48uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInt56uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeInt56uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInt64uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeInt64uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInt8sWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeInt8sWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInt16sWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeInt16sWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInt24sWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeInt24sWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInt32sWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeInt32sWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInt40sWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeInt40sWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInt48sWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeInt48sWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInt56sWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeInt56sWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInt64sWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeInt64sWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeEnum8WithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeEnum8WithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeEnum16WithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeEnum16WithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFloatSingleWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeFloatSingleWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFloatDoubleWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeFloatDoubleWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOctetStringWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeOctetStringWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeListInt8uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeListInt8uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeListOctetStringWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeListOctetStringWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeListStructOctetStringWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeListStructOctetStringWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLongOctetStringWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeLongOctetStringWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCharStringWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeCharStringWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLongCharStringWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeLongCharStringWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeEpochUsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeEpochUsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeEpochSWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeEpochSWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeVendorIdWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeVendorIdWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeListNullablesAndOptionalsStructWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeListNullablesAndOptionalsStructWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeEnumAttrWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeEnumAttrWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeStructAttrWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeStructAttrWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRangeRestrictedInt8uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeRangeRestrictedInt8uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRangeRestrictedInt8sWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeRangeRestrictedInt8sWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRangeRestrictedInt16uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeRangeRestrictedInt16uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRangeRestrictedInt16sWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeRangeRestrictedInt16sWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeListLongOctetStringWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeListLongOctetStringWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeListFabricScopedWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeListFabricScopedWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTimedWriteBooleanWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeTimedWriteBooleanWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneralErrorBooleanWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeGeneralErrorBooleanWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterErrorBooleanWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeClusterErrorBooleanWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeUnsupportedWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeUnsupportedWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableBooleanWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableBooleanWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableBitmap8WithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableBitmap8WithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableBitmap16WithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableBitmap16WithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableBitmap32WithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableBitmap32WithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableBitmap64WithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableBitmap64WithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableInt8uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableInt8uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableInt16uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableInt16uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableInt24uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableInt24uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableInt32uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableInt32uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableInt40uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableInt40uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableInt48uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableInt48uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableInt56uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableInt56uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableInt64uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableInt64uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableInt8sWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableInt8sWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableInt16sWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableInt16sWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableInt24sWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableInt24sWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableInt32sWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableInt32sWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableInt40sWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableInt40sWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableInt48sWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableInt48sWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableInt56sWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableInt56sWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableInt64sWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableInt64sWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableEnum8WithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableEnum8WithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableEnum16WithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableEnum16WithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableFloatSingleWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableFloatSingleWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableFloatDoubleWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableFloatDoubleWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableOctetStringWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableOctetStringWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableCharStringWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableCharStringWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableEnumAttrWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableEnumAttrWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableStructWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableStructWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableRangeRestrictedInt8uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableRangeRestrictedInt8uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableRangeRestrictedInt8sWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableRangeRestrictedInt8sWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableRangeRestrictedInt16uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableRangeRestrictedInt16uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNullableRangeRestrictedInt16sWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeNullableRangeRestrictedInt16sWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeWriteOnlyInt8uWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeWriteOnlyInt8uWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterTestCluster").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAccessGrant(pub id);
impl std::ops::Deref for MTRAccessGrant {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAccessGrant {}
impl MTRAccessGrant {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccessGrant").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRAccessGrant {}
impl INSObject for MTRAccessGrant {}
impl PNSObject for MTRAccessGrant {}
impl std::convert::TryFrom<NSObject> for MTRAccessGrant {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRAccessGrant, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAccessGrant").unwrap()) };
        if is_kind_of {
            Ok(MTRAccessGrant(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRAccessGrant")
        }
    }
}
impl IMTRAccessGrant for MTRAccessGrant {}
pub trait IMTRAccessGrant: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn subjectID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, subjectID)
    }
    unsafe fn grantedPrivilege(&self) -> MTRAccessControlEntryPrivilege
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, grantedPrivilege)
    }
    unsafe fn authenticationMode(&self) -> MTRAccessControlEntryAuthMode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, authenticationMode)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccessGrant").unwrap(), new)
    }
    unsafe fn accessGrantForNodeID_privilege_(
        nodeID: NSNumber,
        privilege: MTRAccessControlEntryPrivilege,
    ) -> MTRAccessGrant
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccessGrant").unwrap(), accessGrantForNodeID : nodeID, privilege : privilege)
    }
    unsafe fn accessGrantForCASEAuthenticatedTag_privilege_(
        caseAuthenticatedTag: NSNumber,
        privilege: MTRAccessControlEntryPrivilege,
    ) -> MTRAccessGrant
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccessGrant").unwrap(), accessGrantForCASEAuthenticatedTag : caseAuthenticatedTag, privilege : privilege)
    }
    unsafe fn accessGrantForGroupID_privilege_(
        groupID: NSNumber,
        privilege: MTRAccessControlEntryPrivilege,
    ) -> MTRAccessGrant
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccessGrant").unwrap(), accessGrantForGroupID : groupID, privilege : privilege)
    }
    unsafe fn accessGrantForAllNodesWithPrivilege_(
        privilege: MTRAccessControlEntryPrivilege,
    ) -> MTRAccessGrant
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAccessGrant").unwrap(), accessGrantForAllNodesWithPrivilege : privilege)
    }
}
pub type MTRAsyncCallbackReadyHandler = *mut ::std::os::raw::c_void;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAsyncCallbackWorkQueue(pub id);
impl std::ops::Deref for MTRAsyncCallbackWorkQueue {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAsyncCallbackWorkQueue {}
impl MTRAsyncCallbackWorkQueue {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAsyncCallbackWorkQueue").unwrap(), alloc) })
    }
}
impl INSObject for MTRAsyncCallbackWorkQueue {}
impl PNSObject for MTRAsyncCallbackWorkQueue {}
impl std::convert::TryFrom<NSObject> for MTRAsyncCallbackWorkQueue {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRAsyncCallbackWorkQueue, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAsyncCallbackWorkQueue").unwrap()) };
        if is_kind_of {
            Ok(MTRAsyncCallbackWorkQueue(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRAsyncCallbackWorkQueue")
        }
    }
}
impl IMTRAsyncCallbackWorkQueue for MTRAsyncCallbackWorkQueue {}
pub trait IMTRAsyncCallbackWorkQueue: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithContext_queue_(&self, context: id, queue: NSObject) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContext : context, queue : queue)
    }
    unsafe fn invalidate(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invalidate)
    }
    unsafe fn enqueueWorkItem_(&self, item: MTRAsyncCallbackQueueWorkItem)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enqueueWorkItem : item)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAsyncCallbackWorkQueue").unwrap(), new)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAsyncCallbackQueueWorkItem(pub id);
impl std::ops::Deref for MTRAsyncCallbackQueueWorkItem {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAsyncCallbackQueueWorkItem {}
impl MTRAsyncCallbackQueueWorkItem {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAsyncCallbackQueueWorkItem").unwrap(), alloc) })
    }
}
impl INSObject for MTRAsyncCallbackQueueWorkItem {}
impl PNSObject for MTRAsyncCallbackQueueWorkItem {}
impl std::convert::TryFrom<NSObject> for MTRAsyncCallbackQueueWorkItem {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRAsyncCallbackQueueWorkItem, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAsyncCallbackQueueWorkItem").unwrap())
        };
        if is_kind_of {
            Ok(MTRAsyncCallbackQueueWorkItem(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRAsyncCallbackQueueWorkItem")
        }
    }
}
impl IMTRAsyncCallbackQueueWorkItem for MTRAsyncCallbackQueueWorkItem {}
pub trait IMTRAsyncCallbackQueueWorkItem: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithQueue_(&self, queue: NSObject) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithQueue : queue)
    }
    unsafe fn endWork(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endWork)
    }
    unsafe fn retryWork(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, retryWork)
    }
    unsafe fn readyHandler(&self) -> MTRAsyncCallbackReadyHandler
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, readyHandler)
    }
    unsafe fn setReadyHandler_(&self, readyHandler: MTRAsyncCallbackReadyHandler)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReadyHandler : readyHandler)
    }
    unsafe fn cancelHandler(&self) -> dispatch_block_t
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cancelHandler)
    }
    unsafe fn setCancelHandler_(&self, cancelHandler: dispatch_block_t)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCancelHandler : cancelHandler)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAsyncCallbackQueueWorkItem").unwrap(), new)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRAttributeValueWaiter(pub id);
impl std::ops::Deref for MTRAttributeValueWaiter {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRAttributeValueWaiter {}
impl MTRAttributeValueWaiter {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAttributeValueWaiter").unwrap(), alloc) })
    }
}
impl INSObject for MTRAttributeValueWaiter {}
impl PNSObject for MTRAttributeValueWaiter {}
impl std::convert::TryFrom<NSObject> for MTRAttributeValueWaiter {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRAttributeValueWaiter, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRAttributeValueWaiter").unwrap()) };
        if is_kind_of {
            Ok(MTRAttributeValueWaiter(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRAttributeValueWaiter")
        }
    }
}
impl IMTRAttributeValueWaiter for MTRAttributeValueWaiter {}
pub trait IMTRAttributeValueWaiter: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn cancel(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cancel)
    }
    unsafe fn UUID(&self) -> NSUUID
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, UUID)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRAttributeValueWaiter").unwrap(), new)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommandWithRequiredResponse(pub id);
impl std::ops::Deref for MTRCommandWithRequiredResponse {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommandWithRequiredResponse {}
impl MTRCommandWithRequiredResponse {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommandWithRequiredResponse").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRCommandWithRequiredResponse {}
impl PNSSecureCoding for MTRCommandWithRequiredResponse {}
impl INSObject for MTRCommandWithRequiredResponse {}
impl PNSObject for MTRCommandWithRequiredResponse {}
impl std::convert::TryFrom<NSObject> for MTRCommandWithRequiredResponse {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRCommandWithRequiredResponse, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommandWithRequiredResponse").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommandWithRequiredResponse(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRCommandWithRequiredResponse")
        }
    }
}
impl IMTRCommandWithRequiredResponse for MTRCommandWithRequiredResponse {}
pub trait IMTRCommandWithRequiredResponse: Sized + std::ops::Deref {
    unsafe fn initWithPath_commandFields_requiredResponse_(
        &self,
        path: MTRCommandPath,
        commandFields: NSDictionary,
        requiredResponse: NSDictionary,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithPath : path, commandFields : commandFields, requiredResponse : requiredResponse)
    }
    unsafe fn path(&self) -> MTRCommandPath
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, path)
    }
    unsafe fn setPath_(&self, path: MTRCommandPath)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPath : path)
    }
    unsafe fn commandFields(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, commandFields)
    }
    unsafe fn setCommandFields_(&self, commandFields: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCommandFields : commandFields)
    }
    unsafe fn requiredResponse(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requiredResponse)
    }
    unsafe fn setRequiredResponse_(&self, requiredResponse: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRequiredResponse : requiredResponse)
    }
}
pub type MTRDeviceState = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDevice(pub id);
impl std::ops::Deref for MTRDevice {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDevice {}
impl MTRDevice {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDevice").unwrap(), alloc) })
    }
}
impl INSObject for MTRDevice {}
impl PNSObject for MTRDevice {}
impl std::convert::TryFrom<NSObject> for MTRDevice {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDevice, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDevice").unwrap()) };
        if is_kind_of {
            Ok(MTRDevice(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDevice")
        }
    }
}
impl IMTRDevice for MTRDevice {}
pub trait IMTRDevice: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn setDelegate_queue_(&self, delegate: *mut u64, queue: NSObject)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelegate : delegate, queue : queue)
    }
    unsafe fn addDelegate_queue_(&self, delegate: *mut u64, queue: NSObject)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addDelegate : delegate, queue : queue)
    }
    unsafe fn addDelegate_queue_interestedPathsForAttributes_interestedPathsForEvents_(
        &self,
        delegate: *mut u64,
        queue: NSObject,
        interestedPathsForAttributes: NSArray,
        interestedPathsForEvents: NSArray,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addDelegate : delegate, queue : queue, interestedPathsForAttributes : interestedPathsForAttributes, interestedPathsForEvents : interestedPathsForEvents)
    }
    unsafe fn removeDelegate_(&self, delegate: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeDelegate : delegate)
    }
    unsafe fn readAttributeWithEndpointID_clusterID_attributeID_params_(
        &self,
        endpointID: NSNumber,
        clusterID: NSNumber,
        attributeID: NSNumber,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWithEndpointID : endpointID, clusterID : clusterID, attributeID : attributeID, params : params)
    }
    unsafe fn writeAttributeWithEndpointID_clusterID_attributeID_value_expectedValueInterval_timedWriteTimeout_(
        &self,
        endpointID: NSNumber,
        clusterID: NSNumber,
        attributeID: NSNumber,
        value: id,
        expectedValueInterval: NSNumber,
        timeout: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWithEndpointID : endpointID, clusterID : clusterID, attributeID : attributeID, value : value, expectedValueInterval : expectedValueInterval, timedWriteTimeout : timeout)
    }
    unsafe fn readAttributePaths_(&self, attributePaths: NSArray) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePaths : attributePaths)
    }
    unsafe fn descriptorClusters(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, descriptorClusters)
    }
    unsafe fn invokeCommandWithEndpointID_clusterID_commandID_commandFields_expectedValues_expectedValueInterval_queue_completion_(
        &self,
        endpointID: NSNumber,
        clusterID: NSNumber,
        commandID: NSNumber,
        commandFields: NSDictionary,
        expectedValues: NSArray,
        expectedValueInterval: NSNumber,
        queue: NSObject,
        completion: MTRDeviceResponseHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, invokeCommandWithEndpointID : endpointID, clusterID : clusterID, commandID : commandID, commandFields : commandFields, expectedValues : expectedValues, expectedValueInterval : expectedValueInterval, queue : queue, completion : completion)
    }
    unsafe fn invokeCommandWithEndpointID_clusterID_commandID_commandFields_expectedValues_expectedValueInterval_timedInvokeTimeout_queue_completion_(
        &self,
        endpointID: NSNumber,
        clusterID: NSNumber,
        commandID: NSNumber,
        commandFields: id,
        expectedValues: NSArray,
        expectedValueInterval: NSNumber,
        timeout: NSNumber,
        queue: NSObject,
        completion: MTRDeviceResponseHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, invokeCommandWithEndpointID : endpointID, clusterID : clusterID, commandID : commandID, commandFields : commandFields, expectedValues : expectedValues, expectedValueInterval : expectedValueInterval, timedInvokeTimeout : timeout, queue : queue, completion : completion)
    }
    unsafe fn invokeCommands_queue_completion_(
        &self,
        commands: NSArray,
        queue: NSObject,
        completion: MTRDeviceResponseHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, invokeCommands : commands, queue : queue, completion : completion)
    }
    unsafe fn openCommissioningWindowWithSetupPasscode_discriminator_duration_queue_completion_(
        &self,
        setupPasscode: NSNumber,
        discriminator: NSNumber,
        duration: NSNumber,
        queue: NSObject,
        completion: MTRDeviceOpenCommissioningWindowHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, openCommissioningWindowWithSetupPasscode : setupPasscode, discriminator : discriminator, duration : duration, queue : queue, completion : completion)
    }
    unsafe fn openCommissioningWindowWithDiscriminator_duration_queue_completion_(
        &self,
        discriminator: NSNumber,
        duration: NSNumber,
        queue: NSObject,
        completion: MTRDeviceOpenCommissioningWindowHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, openCommissioningWindowWithDiscriminator : discriminator, duration : duration, queue : queue, completion : completion)
    }
    unsafe fn downloadLogOfType_timeout_queue_completion_(
        &self,
        type_: MTRDiagnosticLogType,
        timeout: NSTimeInterval,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, downloadLogOfType : type_, timeout : timeout, queue : queue, completion : completion)
    }
    unsafe fn waitForAttributeValues_timeout_queue_completion_(
        &self,
        values: NSDictionary,
        timeout: NSTimeInterval,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) -> MTRAttributeValueWaiter
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, waitForAttributeValues : values, timeout : timeout, queue : queue, completion : completion)
    }
    unsafe fn state(&self) -> MTRDeviceState
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, state)
    }
    unsafe fn deviceCachePrimed(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deviceCachePrimed)
    }
    unsafe fn estimatedStartTime(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, estimatedStartTime)
    }
    unsafe fn deviceController(&self) -> MTRDeviceController
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deviceController)
    }
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn estimatedSubscriptionLatency(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, estimatedSubscriptionLatency)
    }
    unsafe fn vendorID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vendorID)
    }
    unsafe fn productID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, productID)
    }
    unsafe fn networkCommissioningFeatures(&self) -> MTRNetworkCommissioningFeature
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkCommissioningFeatures)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDevice").unwrap(), new)
    }
    unsafe fn deviceWithNodeID_controller_(
        nodeID: NSNumber,
        controller: MTRDeviceController,
    ) -> MTRDevice
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDevice").unwrap(), deviceWithNodeID : nodeID, controller : controller)
    }
}
pub trait PMTRDeviceDelegate: Sized + std::ops::Deref {
    unsafe fn device_stateChanged_(&self, device: MTRDevice, state: MTRDeviceState)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, device : device, stateChanged : state)
    }
    unsafe fn device_receivedAttributeReport_(&self, device: MTRDevice, attributeReport: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, device : device, receivedAttributeReport : attributeReport)
    }
    unsafe fn device_receivedEventReport_(&self, device: MTRDevice, eventReport: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, device : device, receivedEventReport : eventReport)
    }
    unsafe fn deviceBecameActive_(&self, device: MTRDevice)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceBecameActive : device)
    }
    unsafe fn deviceCachePrimed_(&self, device: MTRDevice)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceCachePrimed : device)
    }
    unsafe fn deviceConfigurationChanged_(&self, device: MTRDevice)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceConfigurationChanged : device)
    }
}
impl MTRDevice_Deprecated for MTRDevice {}
pub trait MTRDevice_Deprecated: Sized + std::ops::Deref {
    unsafe fn invokeCommandWithEndpointID_clusterID_commandID_commandFields_expectedValues_expectedValueInterval_timedInvokeTimeout_clientQueue_completion_(
        &self,
        endpointID: NSNumber,
        clusterID: NSNumber,
        commandID: NSNumber,
        commandFields: id,
        expectedValues: NSArray,
        expectedValueInterval: NSNumber,
        timeout: NSNumber,
        queue: NSObject,
        completion: MTRDeviceResponseHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, invokeCommandWithEndpointID : endpointID, clusterID : clusterID, commandID : commandID, commandFields : commandFields, expectedValues : expectedValues, expectedValueInterval : expectedValueInterval, timedInvokeTimeout : timeout, clientQueue : queue, completion : completion)
    }
    unsafe fn deviceWithNodeID_deviceController_(
        nodeID: u64,
        deviceController: MTRDeviceController,
    ) -> MTRDevice
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDevice").unwrap(), deviceWithNodeID : nodeID, deviceController : deviceController)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterIdentify(pub id);
impl std::ops::Deref for MTRClusterIdentify {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterIdentify {}
impl MTRClusterIdentify {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterIdentify").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterIdentify {}
impl From<MTRClusterIdentify> for MTRGenericCluster {
    fn from(child: MTRClusterIdentify) -> MTRGenericCluster {
        MTRGenericCluster(child.0)
    }
}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterIdentify {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterIdentify, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterIdentify").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterIdentify(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterIdentify")
        }
    }
}
impl IMTRCluster for MTRClusterIdentify {}
impl INSObject for MTRClusterIdentify {}
impl PNSObject for MTRClusterIdentify {}
impl IMTRClusterIdentify for MTRClusterIdentify {}
pub trait IMTRClusterIdentify: Sized + std::ops::Deref {
    unsafe fn identifyWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRIdentifyClusterIdentifyParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, identifyWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn triggerEffectWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRIdentifyClusterTriggerEffectParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, triggerEffectWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeIdentifyTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeIdentifyTimeWithParams : params)
    }
    unsafe fn writeAttributeIdentifyTimeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeIdentifyTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeIdentifyTimeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeIdentifyTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeIdentifyTypeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeIdentifyTypeWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterIdentify").unwrap(), new)
    }
}
impl MTRClusterIdentify_Availability for MTRClusterIdentify {}
pub trait MTRClusterIdentify_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterGroups(pub id);
impl std::ops::Deref for MTRClusterGroups {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterGroups {}
impl MTRClusterGroups {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterGroups").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterGroups {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterGroups {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterGroups, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterGroups").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterGroups(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterGroups")
        }
    }
}
impl IMTRCluster for MTRClusterGroups {}
impl INSObject for MTRClusterGroups {}
impl PNSObject for MTRClusterGroups {}
impl IMTRClusterGroups for MTRClusterGroups {}
pub trait IMTRClusterGroups: Sized + std::ops::Deref {
    unsafe fn addGroupWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGroupsClusterAddGroupParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addGroupWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn viewGroupWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGroupsClusterViewGroupParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, viewGroupWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn getGroupMembershipWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGroupsClusterGetGroupMembershipParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getGroupMembershipWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn removeGroupWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGroupsClusterRemoveGroupParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeGroupWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn removeAllGroupsWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGroupsClusterRemoveAllGroupsParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeAllGroupsWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn removeAllGroupsWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeAllGroupsWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn addGroupIfIdentifyingWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGroupsClusterAddGroupIfIdentifyingParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addGroupIfIdentifyingWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeNameSupportWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNameSupportWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterGroups").unwrap(), new)
    }
}
impl MTRClusterGroups_Availability for MTRClusterGroups {}
pub trait MTRClusterGroups_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterOnOff(pub id);
impl std::ops::Deref for MTRClusterOnOff {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterOnOff {}
impl MTRClusterOnOff {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOnOff").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterOnOff {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterOnOff {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterOnOff, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterOnOff").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterOnOff(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterOnOff")
        }
    }
}
impl IMTRCluster for MTRClusterOnOff {}
impl INSObject for MTRClusterOnOff {}
impl PNSObject for MTRClusterOnOff {}
impl IMTRClusterOnOff for MTRClusterOnOff {}
pub trait IMTRClusterOnOff: Sized + std::ops::Deref {
    unsafe fn offWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROnOffClusterOffParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, offWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn offWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, offWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn onWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROnOffClusterOnParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn onWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn toggleWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROnOffClusterToggleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, toggleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn toggleWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, toggleWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn offWithEffectWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROnOffClusterOffWithEffectParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, offWithEffectWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn onWithRecallGlobalSceneWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROnOffClusterOnWithRecallGlobalSceneParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onWithRecallGlobalSceneWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn onWithRecallGlobalSceneWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onWithRecallGlobalSceneWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn onWithTimedOffWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROnOffClusterOnWithTimedOffParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onWithTimedOffWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeOnOffWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnOffWithParams : params)
    }
    unsafe fn readAttributeGlobalSceneControlWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGlobalSceneControlWithParams : params)
    }
    unsafe fn readAttributeOnTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnTimeWithParams : params)
    }
    unsafe fn writeAttributeOnTimeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeOnTimeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeOffWaitTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOffWaitTimeWithParams : params)
    }
    unsafe fn writeAttributeOffWaitTimeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOffWaitTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeOffWaitTimeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOffWaitTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeStartUpOnOffWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStartUpOnOffWithParams : params)
    }
    unsafe fn writeAttributeStartUpOnOffWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpOnOffWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeStartUpOnOffWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpOnOffWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOnOff").unwrap(), new)
    }
}
impl MTRClusterOnOff_Availability for MTRClusterOnOff {}
pub trait MTRClusterOnOff_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterLevelControl(pub id);
impl std::ops::Deref for MTRClusterLevelControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterLevelControl {}
impl MTRClusterLevelControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterLevelControl").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterLevelControl {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterLevelControl {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterLevelControl, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterLevelControl").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterLevelControl(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterLevelControl")
        }
    }
}
impl IMTRCluster for MTRClusterLevelControl {}
impl INSObject for MTRClusterLevelControl {}
impl PNSObject for MTRClusterLevelControl {}
impl IMTRClusterLevelControl for MTRClusterLevelControl {}
pub trait IMTRClusterLevelControl: Sized + std::ops::Deref {
    unsafe fn moveToLevelWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRLevelControlClusterMoveToLevelParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToLevelWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn moveWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRLevelControlClusterMoveParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stepWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRLevelControlClusterStepParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stopWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRLevelControlClusterStopParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn moveToLevelWithOnOffWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRLevelControlClusterMoveToLevelWithOnOffParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToLevelWithOnOffWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn moveWithOnOffWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRLevelControlClusterMoveWithOnOffParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveWithOnOffWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stepWithOnOffWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRLevelControlClusterStepWithOnOffParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepWithOnOffWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stopWithOnOffWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRLevelControlClusterStopWithOnOffParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithOnOffWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn moveToClosestFrequencyWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRLevelControlClusterMoveToClosestFrequencyParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToClosestFrequencyWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeCurrentLevelWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentLevelWithParams : params)
    }
    unsafe fn readAttributeRemainingTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRemainingTimeWithParams : params)
    }
    unsafe fn readAttributeMinLevelWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinLevelWithParams : params)
    }
    unsafe fn readAttributeMaxLevelWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxLevelWithParams : params)
    }
    unsafe fn readAttributeCurrentFrequencyWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentFrequencyWithParams : params)
    }
    unsafe fn readAttributeMinFrequencyWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinFrequencyWithParams : params)
    }
    unsafe fn readAttributeMaxFrequencyWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxFrequencyWithParams : params)
    }
    unsafe fn readAttributeOptionsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOptionsWithParams : params)
    }
    unsafe fn writeAttributeOptionsWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOptionsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeOptionsWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOptionsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeOnOffTransitionTimeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnOffTransitionTimeWithParams : params)
    }
    unsafe fn writeAttributeOnOffTransitionTimeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnOffTransitionTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeOnOffTransitionTimeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnOffTransitionTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeOnLevelWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnLevelWithParams : params)
    }
    unsafe fn writeAttributeOnLevelWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnLevelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeOnLevelWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnLevelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeOnTransitionTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnTransitionTimeWithParams : params)
    }
    unsafe fn writeAttributeOnTransitionTimeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnTransitionTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeOnTransitionTimeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnTransitionTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeOffTransitionTimeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOffTransitionTimeWithParams : params)
    }
    unsafe fn writeAttributeOffTransitionTimeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOffTransitionTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeOffTransitionTimeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOffTransitionTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeDefaultMoveRateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultMoveRateWithParams : params)
    }
    unsafe fn writeAttributeDefaultMoveRateWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultMoveRateWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeDefaultMoveRateWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultMoveRateWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeStartUpCurrentLevelWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStartUpCurrentLevelWithParams : params)
    }
    unsafe fn writeAttributeStartUpCurrentLevelWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpCurrentLevelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeStartUpCurrentLevelWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpCurrentLevelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterLevelControl").unwrap(), new)
    }
}
impl MTRClusterLevelControl_Availability for MTRClusterLevelControl {}
pub trait MTRClusterLevelControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterPulseWidthModulation(pub id);
impl std::ops::Deref for MTRClusterPulseWidthModulation {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterPulseWidthModulation {}
impl MTRClusterPulseWidthModulation {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPulseWidthModulation").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterPulseWidthModulation {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterPulseWidthModulation {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterPulseWidthModulation, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterPulseWidthModulation").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterPulseWidthModulation(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterPulseWidthModulation")
        }
    }
}
impl IMTRCluster for MTRClusterPulseWidthModulation {}
impl INSObject for MTRClusterPulseWidthModulation {}
impl PNSObject for MTRClusterPulseWidthModulation {}
impl IMTRClusterPulseWidthModulation for MTRClusterPulseWidthModulation {}
pub trait IMTRClusterPulseWidthModulation: Sized + std::ops::Deref {
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPulseWidthModulation").unwrap(), new)
    }
}
impl MTRClusterPulseWidthModulation_Availability for MTRClusterPulseWidthModulation {}
pub trait MTRClusterPulseWidthModulation_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterDescriptor(pub id);
impl std::ops::Deref for MTRClusterDescriptor {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterDescriptor {}
impl MTRClusterDescriptor {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterDescriptor").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterDescriptor {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterDescriptor {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterDescriptor, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterDescriptor").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterDescriptor(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterDescriptor")
        }
    }
}
impl IMTRCluster for MTRClusterDescriptor {}
impl INSObject for MTRClusterDescriptor {}
impl PNSObject for MTRClusterDescriptor {}
impl IMTRClusterDescriptor for MTRClusterDescriptor {}
pub trait IMTRClusterDescriptor: Sized + std::ops::Deref {
    unsafe fn readAttributeDeviceTypeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDeviceTypeListWithParams : params)
    }
    unsafe fn readAttributeServerListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeServerListWithParams : params)
    }
    unsafe fn readAttributeClientListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClientListWithParams : params)
    }
    unsafe fn readAttributePartsListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePartsListWithParams : params)
    }
    unsafe fn readAttributeTagListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTagListWithParams : params)
    }
    unsafe fn readAttributeEndpointUniqueIDWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEndpointUniqueIDWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterDescriptor").unwrap(), new)
    }
}
impl MTRClusterDescriptor_Availability for MTRClusterDescriptor {}
pub trait MTRClusterDescriptor_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterBinding(pub id);
impl std::ops::Deref for MTRClusterBinding {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterBinding {}
impl MTRClusterBinding {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterBinding").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterBinding {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterBinding {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterBinding, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterBinding").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterBinding(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterBinding")
        }
    }
}
impl IMTRCluster for MTRClusterBinding {}
impl INSObject for MTRClusterBinding {}
impl PNSObject for MTRClusterBinding {}
impl IMTRClusterBinding for MTRClusterBinding {}
pub trait IMTRClusterBinding: Sized + std::ops::Deref {
    unsafe fn readAttributeBindingWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBindingWithParams : params)
    }
    unsafe fn writeAttributeBindingWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBindingWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeBindingWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBindingWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterBinding").unwrap(), new)
    }
}
impl MTRClusterBinding_Availability for MTRClusterBinding {}
pub trait MTRClusterBinding_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterAccessControl(pub id);
impl std::ops::Deref for MTRClusterAccessControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterAccessControl {}
impl MTRClusterAccessControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterAccessControl").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterAccessControl {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterAccessControl {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterAccessControl, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterAccessControl").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterAccessControl(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterAccessControl")
        }
    }
}
impl IMTRCluster for MTRClusterAccessControl {}
impl INSObject for MTRClusterAccessControl {}
impl PNSObject for MTRClusterAccessControl {}
impl IMTRClusterAccessControl for MTRClusterAccessControl {}
pub trait IMTRClusterAccessControl: Sized + std::ops::Deref {
    unsafe fn reviewFabricRestrictionsWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRAccessControlClusterReviewFabricRestrictionsParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, reviewFabricRestrictionsWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeACLWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACLWithParams : params)
    }
    unsafe fn writeAttributeACLWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACLWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeACLWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACLWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeExtensionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeExtensionWithParams : params)
    }
    unsafe fn writeAttributeExtensionWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeExtensionWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeExtensionWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeExtensionWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeSubjectsPerAccessControlEntryWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSubjectsPerAccessControlEntryWithParams : params)
    }
    unsafe fn readAttributeTargetsPerAccessControlEntryWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTargetsPerAccessControlEntryWithParams : params)
    }
    unsafe fn readAttributeAccessControlEntriesPerFabricWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAccessControlEntriesPerFabricWithParams : params)
    }
    unsafe fn readAttributeCommissioningARLWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCommissioningARLWithParams : params)
    }
    unsafe fn readAttributeARLWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeARLWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterAccessControl").unwrap(), new)
    }
}
impl MTRClusterAccessControl_Availability for MTRClusterAccessControl {}
pub trait MTRClusterAccessControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterActions(pub id);
impl std::ops::Deref for MTRClusterActions {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterActions {}
impl MTRClusterActions {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterActions").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterActions {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterActions {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterActions, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterActions").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterActions(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterActions")
        }
    }
}
impl IMTRCluster for MTRClusterActions {}
impl INSObject for MTRClusterActions {}
impl PNSObject for MTRClusterActions {}
impl IMTRClusterActions for MTRClusterActions {}
pub trait IMTRClusterActions: Sized + std::ops::Deref {
    unsafe fn instantActionWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRActionsClusterInstantActionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, instantActionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn instantActionWithTransitionWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRActionsClusterInstantActionWithTransitionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, instantActionWithTransitionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn startActionWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRActionsClusterStartActionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startActionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn startActionWithDurationWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRActionsClusterStartActionWithDurationParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startActionWithDurationWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stopActionWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRActionsClusterStopActionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopActionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn pauseActionWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRActionsClusterPauseActionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseActionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn pauseActionWithDurationWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRActionsClusterPauseActionWithDurationParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseActionWithDurationWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn resumeActionWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRActionsClusterResumeActionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resumeActionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn enableActionWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRActionsClusterEnableActionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enableActionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn enableActionWithDurationWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRActionsClusterEnableActionWithDurationParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enableActionWithDurationWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn disableActionWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRActionsClusterDisableActionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, disableActionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn disableActionWithDurationWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRActionsClusterDisableActionWithDurationParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, disableActionWithDurationWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeActionListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActionListWithParams : params)
    }
    unsafe fn readAttributeEndpointListsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEndpointListsWithParams : params)
    }
    unsafe fn readAttributeSetupURLWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSetupURLWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterActions").unwrap(), new)
    }
}
impl MTRClusterActions_Availability for MTRClusterActions {}
pub trait MTRClusterActions_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterBasicInformation(pub id);
impl std::ops::Deref for MTRClusterBasicInformation {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterBasicInformation {}
impl MTRClusterBasicInformation {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterBasicInformation").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterBasicInformation {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterBasicInformation {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterBasicInformation, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterBasicInformation").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterBasicInformation(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterBasicInformation")
        }
    }
}
impl IMTRCluster for MTRClusterBasicInformation {}
impl INSObject for MTRClusterBasicInformation {}
impl PNSObject for MTRClusterBasicInformation {}
impl IMTRClusterBasicInformation for MTRClusterBasicInformation {}
pub trait IMTRClusterBasicInformation: Sized + std::ops::Deref {
    unsafe fn readAttributeDataModelRevisionWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDataModelRevisionWithParams : params)
    }
    unsafe fn readAttributeVendorNameWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVendorNameWithParams : params)
    }
    unsafe fn readAttributeVendorIDWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVendorIDWithParams : params)
    }
    unsafe fn readAttributeProductNameWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductNameWithParams : params)
    }
    unsafe fn readAttributeProductIDWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductIDWithParams : params)
    }
    unsafe fn readAttributeNodeLabelWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNodeLabelWithParams : params)
    }
    unsafe fn writeAttributeNodeLabelWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNodeLabelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNodeLabelWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNodeLabelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeLocationWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocationWithParams : params)
    }
    unsafe fn writeAttributeLocationWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocationWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLocationWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocationWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeHardwareVersionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHardwareVersionWithParams : params)
    }
    unsafe fn readAttributeHardwareVersionStringWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHardwareVersionStringWithParams : params)
    }
    unsafe fn readAttributeSoftwareVersionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoftwareVersionWithParams : params)
    }
    unsafe fn readAttributeSoftwareVersionStringWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoftwareVersionStringWithParams : params)
    }
    unsafe fn readAttributeManufacturingDateWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeManufacturingDateWithParams : params)
    }
    unsafe fn readAttributePartNumberWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePartNumberWithParams : params)
    }
    unsafe fn readAttributeProductURLWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductURLWithParams : params)
    }
    unsafe fn readAttributeProductLabelWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductLabelWithParams : params)
    }
    unsafe fn readAttributeSerialNumberWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSerialNumberWithParams : params)
    }
    unsafe fn readAttributeLocalConfigDisabledWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocalConfigDisabledWithParams : params)
    }
    unsafe fn writeAttributeLocalConfigDisabledWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalConfigDisabledWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLocalConfigDisabledWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalConfigDisabledWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeReachableWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReachableWithParams : params)
    }
    unsafe fn readAttributeUniqueIDWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUniqueIDWithParams : params)
    }
    unsafe fn readAttributeCapabilityMinimaWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCapabilityMinimaWithParams : params)
    }
    unsafe fn readAttributeProductAppearanceWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductAppearanceWithParams : params)
    }
    unsafe fn readAttributeSpecificationVersionWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpecificationVersionWithParams : params)
    }
    unsafe fn readAttributeMaxPathsPerInvokeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxPathsPerInvokeWithParams : params)
    }
    unsafe fn readAttributeConfigurationVersionWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeConfigurationVersionWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterBasicInformation").unwrap(), new)
    }
}
impl MTRClusterBasicInformation_Availability for MTRClusterBasicInformation {}
pub trait MTRClusterBasicInformation_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterOTASoftwareUpdateProvider(pub id);
impl std::ops::Deref for MTRClusterOTASoftwareUpdateProvider {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterOTASoftwareUpdateProvider {}
impl MTRClusterOTASoftwareUpdateProvider {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOTASoftwareUpdateProvider").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterOTASoftwareUpdateProvider {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterOTASoftwareUpdateProvider {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterOTASoftwareUpdateProvider, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterOTASoftwareUpdateProvider").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterOTASoftwareUpdateProvider(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterOTASoftwareUpdateProvider" ,)
        }
    }
}
impl IMTRCluster for MTRClusterOTASoftwareUpdateProvider {}
impl INSObject for MTRClusterOTASoftwareUpdateProvider {}
impl PNSObject for MTRClusterOTASoftwareUpdateProvider {}
impl IMTRClusterOTASoftwareUpdateProvider for MTRClusterOTASoftwareUpdateProvider {}
pub trait IMTRClusterOTASoftwareUpdateProvider: Sized + std::ops::Deref {
    unsafe fn queryImageWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROTASoftwareUpdateProviderClusterQueryImageParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, queryImageWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn applyUpdateRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, applyUpdateRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn notifyUpdateAppliedWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, notifyUpdateAppliedWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOTASoftwareUpdateProvider").unwrap(), new)
    }
}
impl MTRClusterOTASoftwareUpdateProvider_Availability for MTRClusterOTASoftwareUpdateProvider {}
pub trait MTRClusterOTASoftwareUpdateProvider_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterOTASoftwareUpdateRequestor(pub id);
impl std::ops::Deref for MTRClusterOTASoftwareUpdateRequestor {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterOTASoftwareUpdateRequestor {}
impl MTRClusterOTASoftwareUpdateRequestor {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOTASoftwareUpdateRequestor").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterOTASoftwareUpdateRequestor {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterOTASoftwareUpdateRequestor {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterOTASoftwareUpdateRequestor, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterOTASoftwareUpdateRequestor").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterOTASoftwareUpdateRequestor(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterOTASoftwareUpdateRequestor" ,)
        }
    }
}
impl IMTRCluster for MTRClusterOTASoftwareUpdateRequestor {}
impl INSObject for MTRClusterOTASoftwareUpdateRequestor {}
impl PNSObject for MTRClusterOTASoftwareUpdateRequestor {}
impl IMTRClusterOTASoftwareUpdateRequestor for MTRClusterOTASoftwareUpdateRequestor {}
pub trait IMTRClusterOTASoftwareUpdateRequestor: Sized + std::ops::Deref {
    unsafe fn announceOTAProviderWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, announceOTAProviderWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeDefaultOTAProvidersWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultOTAProvidersWithParams : params)
    }
    unsafe fn writeAttributeDefaultOTAProvidersWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultOTAProvidersWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeDefaultOTAProvidersWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultOTAProvidersWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeUpdatePossibleWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUpdatePossibleWithParams : params)
    }
    unsafe fn readAttributeUpdateStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUpdateStateWithParams : params)
    }
    unsafe fn readAttributeUpdateStateProgressWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUpdateStateProgressWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOTASoftwareUpdateRequestor").unwrap(), new)
    }
}
impl MTRClusterOTASoftwareUpdateRequestor_Availability for MTRClusterOTASoftwareUpdateRequestor {}
pub trait MTRClusterOTASoftwareUpdateRequestor_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterLocalizationConfiguration(pub id);
impl std::ops::Deref for MTRClusterLocalizationConfiguration {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterLocalizationConfiguration {}
impl MTRClusterLocalizationConfiguration {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterLocalizationConfiguration").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterLocalizationConfiguration {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterLocalizationConfiguration {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterLocalizationConfiguration, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterLocalizationConfiguration").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterLocalizationConfiguration(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterLocalizationConfiguration" ,)
        }
    }
}
impl IMTRCluster for MTRClusterLocalizationConfiguration {}
impl INSObject for MTRClusterLocalizationConfiguration {}
impl PNSObject for MTRClusterLocalizationConfiguration {}
impl IMTRClusterLocalizationConfiguration for MTRClusterLocalizationConfiguration {}
pub trait IMTRClusterLocalizationConfiguration: Sized + std::ops::Deref {
    unsafe fn readAttributeActiveLocaleWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveLocaleWithParams : params)
    }
    unsafe fn writeAttributeActiveLocaleWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeActiveLocaleWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeActiveLocaleWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeActiveLocaleWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeSupportedLocalesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedLocalesWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterLocalizationConfiguration").unwrap(), new)
    }
}
impl MTRClusterLocalizationConfiguration_Availability for MTRClusterLocalizationConfiguration {}
pub trait MTRClusterLocalizationConfiguration_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterTimeFormatLocalization(pub id);
impl std::ops::Deref for MTRClusterTimeFormatLocalization {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterTimeFormatLocalization {}
impl MTRClusterTimeFormatLocalization {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterTimeFormatLocalization").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterTimeFormatLocalization {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterTimeFormatLocalization {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterTimeFormatLocalization, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterTimeFormatLocalization").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterTimeFormatLocalization(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterTimeFormatLocalization")
        }
    }
}
impl IMTRCluster for MTRClusterTimeFormatLocalization {}
impl INSObject for MTRClusterTimeFormatLocalization {}
impl PNSObject for MTRClusterTimeFormatLocalization {}
impl IMTRClusterTimeFormatLocalization for MTRClusterTimeFormatLocalization {}
pub trait IMTRClusterTimeFormatLocalization: Sized + std::ops::Deref {
    unsafe fn readAttributeHourFormatWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHourFormatWithParams : params)
    }
    unsafe fn writeAttributeHourFormatWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeHourFormatWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeHourFormatWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeHourFormatWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeActiveCalendarTypeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveCalendarTypeWithParams : params)
    }
    unsafe fn writeAttributeActiveCalendarTypeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeActiveCalendarTypeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeActiveCalendarTypeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeActiveCalendarTypeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeSupportedCalendarTypesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedCalendarTypesWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterTimeFormatLocalization").unwrap(), new)
    }
}
impl MTRClusterTimeFormatLocalization_Availability for MTRClusterTimeFormatLocalization {}
pub trait MTRClusterTimeFormatLocalization_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterUnitLocalization(pub id);
impl std::ops::Deref for MTRClusterUnitLocalization {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterUnitLocalization {}
impl MTRClusterUnitLocalization {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterUnitLocalization").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterUnitLocalization {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterUnitLocalization {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterUnitLocalization, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterUnitLocalization").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterUnitLocalization(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterUnitLocalization")
        }
    }
}
impl IMTRCluster for MTRClusterUnitLocalization {}
impl INSObject for MTRClusterUnitLocalization {}
impl PNSObject for MTRClusterUnitLocalization {}
impl IMTRClusterUnitLocalization for MTRClusterUnitLocalization {}
pub trait IMTRClusterUnitLocalization: Sized + std::ops::Deref {
    unsafe fn readAttributeTemperatureUnitWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTemperatureUnitWithParams : params)
    }
    unsafe fn writeAttributeTemperatureUnitWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureUnitWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeTemperatureUnitWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureUnitWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeSupportedTemperatureUnitsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedTemperatureUnitsWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterUnitLocalization").unwrap(), new)
    }
}
impl MTRClusterUnitLocalization_Availability for MTRClusterUnitLocalization {}
pub trait MTRClusterUnitLocalization_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterPowerSourceConfiguration(pub id);
impl std::ops::Deref for MTRClusterPowerSourceConfiguration {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterPowerSourceConfiguration {}
impl MTRClusterPowerSourceConfiguration {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPowerSourceConfiguration").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterPowerSourceConfiguration {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterPowerSourceConfiguration {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterPowerSourceConfiguration, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterPowerSourceConfiguration").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterPowerSourceConfiguration(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterPowerSourceConfiguration")
        }
    }
}
impl IMTRCluster for MTRClusterPowerSourceConfiguration {}
impl INSObject for MTRClusterPowerSourceConfiguration {}
impl PNSObject for MTRClusterPowerSourceConfiguration {}
impl IMTRClusterPowerSourceConfiguration for MTRClusterPowerSourceConfiguration {}
pub trait IMTRClusterPowerSourceConfiguration: Sized + std::ops::Deref {
    unsafe fn readAttributeSourcesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSourcesWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPowerSourceConfiguration").unwrap(), new)
    }
}
impl MTRClusterPowerSourceConfiguration_Availability for MTRClusterPowerSourceConfiguration {}
pub trait MTRClusterPowerSourceConfiguration_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterPowerSource(pub id);
impl std::ops::Deref for MTRClusterPowerSource {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterPowerSource {}
impl MTRClusterPowerSource {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPowerSource").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterPowerSource {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterPowerSource {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterPowerSource, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterPowerSource").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterPowerSource(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterPowerSource")
        }
    }
}
impl IMTRCluster for MTRClusterPowerSource {}
impl INSObject for MTRClusterPowerSource {}
impl PNSObject for MTRClusterPowerSource {}
impl IMTRClusterPowerSource for MTRClusterPowerSource {}
pub trait IMTRClusterPowerSource: Sized + std::ops::Deref {
    unsafe fn readAttributeStatusWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStatusWithParams : params)
    }
    unsafe fn readAttributeOrderWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOrderWithParams : params)
    }
    unsafe fn readAttributeDescriptionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDescriptionWithParams : params)
    }
    unsafe fn readAttributeWiredAssessedInputVoltageWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiredAssessedInputVoltageWithParams : params)
    }
    unsafe fn readAttributeWiredAssessedInputFrequencyWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiredAssessedInputFrequencyWithParams : params)
    }
    unsafe fn readAttributeWiredCurrentTypeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiredCurrentTypeWithParams : params)
    }
    unsafe fn readAttributeWiredAssessedCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiredAssessedCurrentWithParams : params)
    }
    unsafe fn readAttributeWiredNominalVoltageWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiredNominalVoltageWithParams : params)
    }
    unsafe fn readAttributeWiredMaximumCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiredMaximumCurrentWithParams : params)
    }
    unsafe fn readAttributeWiredPresentWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiredPresentWithParams : params)
    }
    unsafe fn readAttributeActiveWiredFaultsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveWiredFaultsWithParams : params)
    }
    unsafe fn readAttributeBatVoltageWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatVoltageWithParams : params)
    }
    unsafe fn readAttributeBatPercentRemainingWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatPercentRemainingWithParams : params)
    }
    unsafe fn readAttributeBatTimeRemainingWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatTimeRemainingWithParams : params)
    }
    unsafe fn readAttributeBatChargeLevelWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatChargeLevelWithParams : params)
    }
    unsafe fn readAttributeBatReplacementNeededWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatReplacementNeededWithParams : params)
    }
    unsafe fn readAttributeBatReplaceabilityWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatReplaceabilityWithParams : params)
    }
    unsafe fn readAttributeBatPresentWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatPresentWithParams : params)
    }
    unsafe fn readAttributeActiveBatFaultsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveBatFaultsWithParams : params)
    }
    unsafe fn readAttributeBatReplacementDescriptionWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatReplacementDescriptionWithParams : params)
    }
    unsafe fn readAttributeBatCommonDesignationWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatCommonDesignationWithParams : params)
    }
    unsafe fn readAttributeBatANSIDesignationWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatANSIDesignationWithParams : params)
    }
    unsafe fn readAttributeBatIECDesignationWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatIECDesignationWithParams : params)
    }
    unsafe fn readAttributeBatApprovedChemistryWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatApprovedChemistryWithParams : params)
    }
    unsafe fn readAttributeBatCapacityWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatCapacityWithParams : params)
    }
    unsafe fn readAttributeBatQuantityWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatQuantityWithParams : params)
    }
    unsafe fn readAttributeBatChargeStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatChargeStateWithParams : params)
    }
    unsafe fn readAttributeBatTimeToFullChargeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatTimeToFullChargeWithParams : params)
    }
    unsafe fn readAttributeBatFunctionalWhileChargingWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatFunctionalWhileChargingWithParams : params)
    }
    unsafe fn readAttributeBatChargingCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatChargingCurrentWithParams : params)
    }
    unsafe fn readAttributeActiveBatChargeFaultsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveBatChargeFaultsWithParams : params)
    }
    unsafe fn readAttributeEndpointListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEndpointListWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPowerSource").unwrap(), new)
    }
}
impl MTRClusterPowerSource_Availability for MTRClusterPowerSource {}
pub trait MTRClusterPowerSource_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterGeneralCommissioning(pub id);
impl std::ops::Deref for MTRClusterGeneralCommissioning {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterGeneralCommissioning {}
impl MTRClusterGeneralCommissioning {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterGeneralCommissioning").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterGeneralCommissioning {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterGeneralCommissioning {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterGeneralCommissioning, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterGeneralCommissioning").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterGeneralCommissioning(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterGeneralCommissioning")
        }
    }
}
impl IMTRCluster for MTRClusterGeneralCommissioning {}
impl INSObject for MTRClusterGeneralCommissioning {}
impl PNSObject for MTRClusterGeneralCommissioning {}
impl IMTRClusterGeneralCommissioning for MTRClusterGeneralCommissioning {}
pub trait IMTRClusterGeneralCommissioning: Sized + std::ops::Deref {
    unsafe fn armFailSafeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGeneralCommissioningClusterArmFailSafeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, armFailSafeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setRegulatoryConfigWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGeneralCommissioningClusterSetRegulatoryConfigParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRegulatoryConfigWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn commissioningCompleteWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGeneralCommissioningClusterCommissioningCompleteParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commissioningCompleteWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn commissioningCompleteWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commissioningCompleteWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setTCAcknowledgementsWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGeneralCommissioningClusterSetTCAcknowledgementsParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTCAcknowledgementsWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeBreadcrumbWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBreadcrumbWithParams : params)
    }
    unsafe fn writeAttributeBreadcrumbWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBreadcrumbWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeBreadcrumbWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBreadcrumbWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeBasicCommissioningInfoWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBasicCommissioningInfoWithParams : params)
    }
    unsafe fn readAttributeRegulatoryConfigWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRegulatoryConfigWithParams : params)
    }
    unsafe fn readAttributeLocationCapabilityWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocationCapabilityWithParams : params)
    }
    unsafe fn readAttributeSupportsConcurrentConnectionWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportsConcurrentConnectionWithParams : params)
    }
    unsafe fn readAttributeTCAcceptedVersionWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTCAcceptedVersionWithParams : params)
    }
    unsafe fn readAttributeTCMinRequiredVersionWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTCMinRequiredVersionWithParams : params)
    }
    unsafe fn readAttributeTCAcknowledgementsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTCAcknowledgementsWithParams : params)
    }
    unsafe fn readAttributeTCAcknowledgementsRequiredWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTCAcknowledgementsRequiredWithParams : params)
    }
    unsafe fn readAttributeTCUpdateDeadlineWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTCUpdateDeadlineWithParams : params)
    }
    unsafe fn readAttributeRecoveryIdentifierWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRecoveryIdentifierWithParams : params)
    }
    unsafe fn readAttributeNetworkRecoveryReasonWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNetworkRecoveryReasonWithParams : params)
    }
    unsafe fn readAttributeIsCommissioningWithoutPowerWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeIsCommissioningWithoutPowerWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterGeneralCommissioning").unwrap(), new)
    }
}
impl MTRClusterGeneralCommissioning_Availability for MTRClusterGeneralCommissioning {}
pub trait MTRClusterGeneralCommissioning_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterNetworkCommissioning(pub id);
impl std::ops::Deref for MTRClusterNetworkCommissioning {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterNetworkCommissioning {}
impl MTRClusterNetworkCommissioning {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterNetworkCommissioning").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterNetworkCommissioning {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterNetworkCommissioning {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterNetworkCommissioning, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterNetworkCommissioning").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterNetworkCommissioning(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterNetworkCommissioning")
        }
    }
}
impl IMTRCluster for MTRClusterNetworkCommissioning {}
impl INSObject for MTRClusterNetworkCommissioning {}
impl PNSObject for MTRClusterNetworkCommissioning {}
impl IMTRClusterNetworkCommissioning for MTRClusterNetworkCommissioning {}
pub trait IMTRClusterNetworkCommissioning: Sized + std::ops::Deref {
    unsafe fn scanNetworksWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRNetworkCommissioningClusterScanNetworksParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scanNetworksWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn scanNetworksWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scanNetworksWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn addOrUpdateWiFiNetworkWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addOrUpdateWiFiNetworkWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn addOrUpdateThreadNetworkWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addOrUpdateThreadNetworkWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn removeNetworkWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRNetworkCommissioningClusterRemoveNetworkParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeNetworkWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn connectNetworkWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRNetworkCommissioningClusterConnectNetworkParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connectNetworkWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn reorderNetworkWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRNetworkCommissioningClusterReorderNetworkParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, reorderNetworkWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn queryIdentityWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRNetworkCommissioningClusterQueryIdentityParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, queryIdentityWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeMaxNetworksWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxNetworksWithParams : params)
    }
    unsafe fn readAttributeNetworksWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNetworksWithParams : params)
    }
    unsafe fn readAttributeScanMaxTimeSecondsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScanMaxTimeSecondsWithParams : params)
    }
    unsafe fn readAttributeConnectMaxTimeSecondsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeConnectMaxTimeSecondsWithParams : params)
    }
    unsafe fn readAttributeInterfaceEnabledWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInterfaceEnabledWithParams : params)
    }
    unsafe fn writeAttributeInterfaceEnabledWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInterfaceEnabledWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeInterfaceEnabledWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInterfaceEnabledWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeLastNetworkingStatusWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLastNetworkingStatusWithParams : params)
    }
    unsafe fn readAttributeLastNetworkIDWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLastNetworkIDWithParams : params)
    }
    unsafe fn readAttributeLastConnectErrorValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLastConnectErrorValueWithParams : params)
    }
    unsafe fn readAttributeSupportedWiFiBandsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedWiFiBandsWithParams : params)
    }
    unsafe fn readAttributeSupportedThreadFeaturesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedThreadFeaturesWithParams : params)
    }
    unsafe fn readAttributeThreadVersionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThreadVersionWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterNetworkCommissioning").unwrap(), new)
    }
}
impl MTRClusterNetworkCommissioning_Availability for MTRClusterNetworkCommissioning {}
pub trait MTRClusterNetworkCommissioning_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterDiagnosticLogs(pub id);
impl std::ops::Deref for MTRClusterDiagnosticLogs {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterDiagnosticLogs {}
impl MTRClusterDiagnosticLogs {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterDiagnosticLogs").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterDiagnosticLogs {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterDiagnosticLogs {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterDiagnosticLogs, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterDiagnosticLogs").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterDiagnosticLogs(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterDiagnosticLogs")
        }
    }
}
impl IMTRCluster for MTRClusterDiagnosticLogs {}
impl INSObject for MTRClusterDiagnosticLogs {}
impl PNSObject for MTRClusterDiagnosticLogs {}
impl IMTRClusterDiagnosticLogs for MTRClusterDiagnosticLogs {}
pub trait IMTRClusterDiagnosticLogs: Sized + std::ops::Deref {
    unsafe fn retrieveLogsRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDiagnosticLogsClusterRetrieveLogsRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, retrieveLogsRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterDiagnosticLogs").unwrap(), new)
    }
}
impl MTRClusterDiagnosticLogs_Availability for MTRClusterDiagnosticLogs {}
pub trait MTRClusterDiagnosticLogs_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterGeneralDiagnostics(pub id);
impl std::ops::Deref for MTRClusterGeneralDiagnostics {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterGeneralDiagnostics {}
impl MTRClusterGeneralDiagnostics {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterGeneralDiagnostics").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterGeneralDiagnostics {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterGeneralDiagnostics {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterGeneralDiagnostics, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterGeneralDiagnostics").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterGeneralDiagnostics(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterGeneralDiagnostics")
        }
    }
}
impl IMTRCluster for MTRClusterGeneralDiagnostics {}
impl INSObject for MTRClusterGeneralDiagnostics {}
impl PNSObject for MTRClusterGeneralDiagnostics {}
impl IMTRClusterGeneralDiagnostics for MTRClusterGeneralDiagnostics {}
pub trait IMTRClusterGeneralDiagnostics: Sized + std::ops::Deref {
    unsafe fn testEventTriggerWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGeneralDiagnosticsClusterTestEventTriggerParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testEventTriggerWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn timeSnapshotWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGeneralDiagnosticsClusterTimeSnapshotParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, timeSnapshotWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn timeSnapshotWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, timeSnapshotWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn payloadTestRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGeneralDiagnosticsClusterPayloadTestRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, payloadTestRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeNetworkInterfacesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNetworkInterfacesWithParams : params)
    }
    unsafe fn readAttributeRebootCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRebootCountWithParams : params)
    }
    unsafe fn readAttributeUpTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUpTimeWithParams : params)
    }
    unsafe fn readAttributeTotalOperationalHoursWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTotalOperationalHoursWithParams : params)
    }
    unsafe fn readAttributeBootReasonWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBootReasonWithParams : params)
    }
    unsafe fn readAttributeActiveHardwareFaultsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveHardwareFaultsWithParams : params)
    }
    unsafe fn readAttributeActiveRadioFaultsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveRadioFaultsWithParams : params)
    }
    unsafe fn readAttributeActiveNetworkFaultsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveNetworkFaultsWithParams : params)
    }
    unsafe fn readAttributeTestEventTriggersEnabledWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTestEventTriggersEnabledWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterGeneralDiagnostics").unwrap(), new)
    }
}
impl MTRClusterGeneralDiagnostics_Availability for MTRClusterGeneralDiagnostics {}
pub trait MTRClusterGeneralDiagnostics_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterSoftwareDiagnostics(pub id);
impl std::ops::Deref for MTRClusterSoftwareDiagnostics {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterSoftwareDiagnostics {}
impl MTRClusterSoftwareDiagnostics {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterSoftwareDiagnostics").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterSoftwareDiagnostics {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterSoftwareDiagnostics {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterSoftwareDiagnostics, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterSoftwareDiagnostics").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterSoftwareDiagnostics(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterSoftwareDiagnostics")
        }
    }
}
impl IMTRCluster for MTRClusterSoftwareDiagnostics {}
impl INSObject for MTRClusterSoftwareDiagnostics {}
impl PNSObject for MTRClusterSoftwareDiagnostics {}
impl IMTRClusterSoftwareDiagnostics for MTRClusterSoftwareDiagnostics {}
pub trait IMTRClusterSoftwareDiagnostics: Sized + std::ops::Deref {
    unsafe fn resetWatermarksWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRSoftwareDiagnosticsClusterResetWatermarksParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetWatermarksWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn resetWatermarksWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetWatermarksWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeThreadMetricsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThreadMetricsWithParams : params)
    }
    unsafe fn readAttributeCurrentHeapFreeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentHeapFreeWithParams : params)
    }
    unsafe fn readAttributeCurrentHeapUsedWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentHeapUsedWithParams : params)
    }
    unsafe fn readAttributeCurrentHeapHighWatermarkWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentHeapHighWatermarkWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterSoftwareDiagnostics").unwrap(), new)
    }
}
impl MTRClusterSoftwareDiagnostics_Availability for MTRClusterSoftwareDiagnostics {}
pub trait MTRClusterSoftwareDiagnostics_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterThreadNetworkDiagnostics(pub id);
impl std::ops::Deref for MTRClusterThreadNetworkDiagnostics {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterThreadNetworkDiagnostics {}
impl MTRClusterThreadNetworkDiagnostics {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterThreadNetworkDiagnostics").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterThreadNetworkDiagnostics {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterThreadNetworkDiagnostics {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterThreadNetworkDiagnostics, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterThreadNetworkDiagnostics").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterThreadNetworkDiagnostics(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterThreadNetworkDiagnostics")
        }
    }
}
impl IMTRCluster for MTRClusterThreadNetworkDiagnostics {}
impl INSObject for MTRClusterThreadNetworkDiagnostics {}
impl PNSObject for MTRClusterThreadNetworkDiagnostics {}
impl IMTRClusterThreadNetworkDiagnostics for MTRClusterThreadNetworkDiagnostics {}
pub trait IMTRClusterThreadNetworkDiagnostics: Sized + std::ops::Deref {
    unsafe fn resetCountsWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRThreadNetworkDiagnosticsClusterResetCountsParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn resetCountsWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeChannelWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeChannelWithParams : params)
    }
    unsafe fn readAttributeRoutingRoleWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRoutingRoleWithParams : params)
    }
    unsafe fn readAttributeNetworkNameWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNetworkNameWithParams : params)
    }
    unsafe fn readAttributePanIdWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePanIdWithParams : params)
    }
    unsafe fn readAttributeExtendedPanIdWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeExtendedPanIdWithParams : params)
    }
    unsafe fn readAttributeMeshLocalPrefixWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeshLocalPrefixWithParams : params)
    }
    unsafe fn readAttributeOverrunCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOverrunCountWithParams : params)
    }
    unsafe fn readAttributeNeighborTableWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNeighborTableWithParams : params)
    }
    unsafe fn readAttributeRouteTableWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRouteTableWithParams : params)
    }
    unsafe fn readAttributePartitionIdWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePartitionIdWithParams : params)
    }
    unsafe fn readAttributeWeightingWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWeightingWithParams : params)
    }
    unsafe fn readAttributeDataVersionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDataVersionWithParams : params)
    }
    unsafe fn readAttributeStableDataVersionWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStableDataVersionWithParams : params)
    }
    unsafe fn readAttributeLeaderRouterIdWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLeaderRouterIdWithParams : params)
    }
    unsafe fn readAttributeDetachedRoleCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDetachedRoleCountWithParams : params)
    }
    unsafe fn readAttributeChildRoleCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeChildRoleCountWithParams : params)
    }
    unsafe fn readAttributeRouterRoleCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRouterRoleCountWithParams : params)
    }
    unsafe fn readAttributeLeaderRoleCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLeaderRoleCountWithParams : params)
    }
    unsafe fn readAttributeAttachAttemptCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttachAttemptCountWithParams : params)
    }
    unsafe fn readAttributePartitionIdChangeCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePartitionIdChangeCountWithParams : params)
    }
    unsafe fn readAttributeBetterPartitionAttachAttemptCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBetterPartitionAttachAttemptCountWithParams : params)
    }
    unsafe fn readAttributeParentChangeCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeParentChangeCountWithParams : params)
    }
    unsafe fn readAttributeTxTotalCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxTotalCountWithParams : params)
    }
    unsafe fn readAttributeTxUnicastCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxUnicastCountWithParams : params)
    }
    unsafe fn readAttributeTxBroadcastCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxBroadcastCountWithParams : params)
    }
    unsafe fn readAttributeTxAckRequestedCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxAckRequestedCountWithParams : params)
    }
    unsafe fn readAttributeTxAckedCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxAckedCountWithParams : params)
    }
    unsafe fn readAttributeTxNoAckRequestedCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxNoAckRequestedCountWithParams : params)
    }
    unsafe fn readAttributeTxDataCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxDataCountWithParams : params)
    }
    unsafe fn readAttributeTxDataPollCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxDataPollCountWithParams : params)
    }
    unsafe fn readAttributeTxBeaconCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxBeaconCountWithParams : params)
    }
    unsafe fn readAttributeTxBeaconRequestCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxBeaconRequestCountWithParams : params)
    }
    unsafe fn readAttributeTxOtherCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxOtherCountWithParams : params)
    }
    unsafe fn readAttributeTxRetryCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxRetryCountWithParams : params)
    }
    unsafe fn readAttributeTxDirectMaxRetryExpiryCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxDirectMaxRetryExpiryCountWithParams : params)
    }
    unsafe fn readAttributeTxIndirectMaxRetryExpiryCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxIndirectMaxRetryExpiryCountWithParams : params)
    }
    unsafe fn readAttributeTxErrCcaCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxErrCcaCountWithParams : params)
    }
    unsafe fn readAttributeTxErrAbortCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxErrAbortCountWithParams : params)
    }
    unsafe fn readAttributeTxErrBusyChannelCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxErrBusyChannelCountWithParams : params)
    }
    unsafe fn readAttributeRxTotalCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxTotalCountWithParams : params)
    }
    unsafe fn readAttributeRxUnicastCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxUnicastCountWithParams : params)
    }
    unsafe fn readAttributeRxBroadcastCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxBroadcastCountWithParams : params)
    }
    unsafe fn readAttributeRxDataCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxDataCountWithParams : params)
    }
    unsafe fn readAttributeRxDataPollCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxDataPollCountWithParams : params)
    }
    unsafe fn readAttributeRxBeaconCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxBeaconCountWithParams : params)
    }
    unsafe fn readAttributeRxBeaconRequestCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxBeaconRequestCountWithParams : params)
    }
    unsafe fn readAttributeRxOtherCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxOtherCountWithParams : params)
    }
    unsafe fn readAttributeRxAddressFilteredCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxAddressFilteredCountWithParams : params)
    }
    unsafe fn readAttributeRxDestAddrFilteredCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxDestAddrFilteredCountWithParams : params)
    }
    unsafe fn readAttributeRxDuplicatedCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxDuplicatedCountWithParams : params)
    }
    unsafe fn readAttributeRxErrNoFrameCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxErrNoFrameCountWithParams : params)
    }
    unsafe fn readAttributeRxErrUnknownNeighborCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxErrUnknownNeighborCountWithParams : params)
    }
    unsafe fn readAttributeRxErrInvalidSrcAddrCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxErrInvalidSrcAddrCountWithParams : params)
    }
    unsafe fn readAttributeRxErrSecCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxErrSecCountWithParams : params)
    }
    unsafe fn readAttributeRxErrFcsCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxErrFcsCountWithParams : params)
    }
    unsafe fn readAttributeRxErrOtherCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRxErrOtherCountWithParams : params)
    }
    unsafe fn readAttributeActiveTimestampWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveTimestampWithParams : params)
    }
    unsafe fn readAttributePendingTimestampWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePendingTimestampWithParams : params)
    }
    unsafe fn readAttributeDelayWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDelayWithParams : params)
    }
    unsafe fn readAttributeSecurityPolicyWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSecurityPolicyWithParams : params)
    }
    unsafe fn readAttributeChannelPage0MaskWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeChannelPage0MaskWithParams : params)
    }
    unsafe fn readAttributeOperationalDatasetComponentsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalDatasetComponentsWithParams : params)
    }
    unsafe fn readAttributeActiveNetworkFaultsListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveNetworkFaultsListWithParams : params)
    }
    unsafe fn readAttributeExtAddressWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeExtAddressWithParams : params)
    }
    unsafe fn readAttributeRloc16WithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRloc16WithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterThreadNetworkDiagnostics").unwrap(), new)
    }
}
impl MTRClusterThreadNetworkDiagnostics_Availability for MTRClusterThreadNetworkDiagnostics {}
pub trait MTRClusterThreadNetworkDiagnostics_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterWiFiNetworkDiagnostics(pub id);
impl std::ops::Deref for MTRClusterWiFiNetworkDiagnostics {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterWiFiNetworkDiagnostics {}
impl MTRClusterWiFiNetworkDiagnostics {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterWiFiNetworkDiagnostics").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterWiFiNetworkDiagnostics {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterWiFiNetworkDiagnostics {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterWiFiNetworkDiagnostics, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterWiFiNetworkDiagnostics").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterWiFiNetworkDiagnostics(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterWiFiNetworkDiagnostics")
        }
    }
}
impl IMTRCluster for MTRClusterWiFiNetworkDiagnostics {}
impl INSObject for MTRClusterWiFiNetworkDiagnostics {}
impl PNSObject for MTRClusterWiFiNetworkDiagnostics {}
impl IMTRClusterWiFiNetworkDiagnostics for MTRClusterWiFiNetworkDiagnostics {}
pub trait IMTRClusterWiFiNetworkDiagnostics: Sized + std::ops::Deref {
    unsafe fn resetCountsWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRWiFiNetworkDiagnosticsClusterResetCountsParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn resetCountsWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeBSSIDWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBSSIDWithParams : params)
    }
    unsafe fn readAttributeSecurityTypeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSecurityTypeWithParams : params)
    }
    unsafe fn readAttributeWiFiVersionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWiFiVersionWithParams : params)
    }
    unsafe fn readAttributeChannelNumberWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeChannelNumberWithParams : params)
    }
    unsafe fn readAttributeRSSIWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRSSIWithParams : params)
    }
    unsafe fn readAttributeBeaconLostCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBeaconLostCountWithParams : params)
    }
    unsafe fn readAttributeBeaconRxCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBeaconRxCountWithParams : params)
    }
    unsafe fn readAttributePacketMulticastRxCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePacketMulticastRxCountWithParams : params)
    }
    unsafe fn readAttributePacketMulticastTxCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePacketMulticastTxCountWithParams : params)
    }
    unsafe fn readAttributePacketUnicastRxCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePacketUnicastRxCountWithParams : params)
    }
    unsafe fn readAttributePacketUnicastTxCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePacketUnicastTxCountWithParams : params)
    }
    unsafe fn readAttributeCurrentMaxRateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentMaxRateWithParams : params)
    }
    unsafe fn readAttributeOverrunCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOverrunCountWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterWiFiNetworkDiagnostics").unwrap(), new)
    }
}
impl MTRClusterWiFiNetworkDiagnostics_Availability for MTRClusterWiFiNetworkDiagnostics {}
pub trait MTRClusterWiFiNetworkDiagnostics_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterEthernetNetworkDiagnostics(pub id);
impl std::ops::Deref for MTRClusterEthernetNetworkDiagnostics {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterEthernetNetworkDiagnostics {}
impl MTRClusterEthernetNetworkDiagnostics {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterEthernetNetworkDiagnostics").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterEthernetNetworkDiagnostics {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterEthernetNetworkDiagnostics {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterEthernetNetworkDiagnostics, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterEthernetNetworkDiagnostics").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterEthernetNetworkDiagnostics(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterEthernetNetworkDiagnostics" ,)
        }
    }
}
impl IMTRCluster for MTRClusterEthernetNetworkDiagnostics {}
impl INSObject for MTRClusterEthernetNetworkDiagnostics {}
impl PNSObject for MTRClusterEthernetNetworkDiagnostics {}
impl IMTRClusterEthernetNetworkDiagnostics for MTRClusterEthernetNetworkDiagnostics {}
pub trait IMTRClusterEthernetNetworkDiagnostics: Sized + std::ops::Deref {
    unsafe fn resetCountsWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTREthernetNetworkDiagnosticsClusterResetCountsParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn resetCountsWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributePHYRateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePHYRateWithParams : params)
    }
    unsafe fn readAttributeFullDuplexWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFullDuplexWithParams : params)
    }
    unsafe fn readAttributePacketRxCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePacketRxCountWithParams : params)
    }
    unsafe fn readAttributePacketTxCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePacketTxCountWithParams : params)
    }
    unsafe fn readAttributeTxErrCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTxErrCountWithParams : params)
    }
    unsafe fn readAttributeCollisionCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCollisionCountWithParams : params)
    }
    unsafe fn readAttributeOverrunCountWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOverrunCountWithParams : params)
    }
    unsafe fn readAttributeCarrierDetectWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCarrierDetectWithParams : params)
    }
    unsafe fn readAttributeTimeSinceResetWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTimeSinceResetWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterEthernetNetworkDiagnostics").unwrap(), new)
    }
}
impl MTRClusterEthernetNetworkDiagnostics_Availability for MTRClusterEthernetNetworkDiagnostics {}
pub trait MTRClusterEthernetNetworkDiagnostics_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterTimeSynchronization(pub id);
impl std::ops::Deref for MTRClusterTimeSynchronization {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterTimeSynchronization {}
impl MTRClusterTimeSynchronization {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterTimeSynchronization").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterTimeSynchronization {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterTimeSynchronization {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterTimeSynchronization, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterTimeSynchronization").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterTimeSynchronization(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterTimeSynchronization")
        }
    }
}
impl IMTRCluster for MTRClusterTimeSynchronization {}
impl INSObject for MTRClusterTimeSynchronization {}
impl PNSObject for MTRClusterTimeSynchronization {}
impl IMTRClusterTimeSynchronization for MTRClusterTimeSynchronization {}
pub trait IMTRClusterTimeSynchronization: Sized + std::ops::Deref {
    unsafe fn setUTCTimeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTimeSynchronizationClusterSetUTCTimeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUTCTimeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setTrustedTimeSourceWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTimeSynchronizationClusterSetTrustedTimeSourceParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTrustedTimeSourceWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setTimeZoneWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTimeSynchronizationClusterSetTimeZoneParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeZoneWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setDSTOffsetWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTimeSynchronizationClusterSetDSTOffsetParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDSTOffsetWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setDefaultNTPWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTimeSynchronizationClusterSetDefaultNTPParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDefaultNTPWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeUTCTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUTCTimeWithParams : params)
    }
    unsafe fn readAttributeGranularityWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGranularityWithParams : params)
    }
    unsafe fn readAttributeTimeSourceWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTimeSourceWithParams : params)
    }
    unsafe fn readAttributeTrustedTimeSourceWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTrustedTimeSourceWithParams : params)
    }
    unsafe fn readAttributeDefaultNTPWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultNTPWithParams : params)
    }
    unsafe fn readAttributeTimeZoneWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTimeZoneWithParams : params)
    }
    unsafe fn readAttributeDSTOffsetWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDSTOffsetWithParams : params)
    }
    unsafe fn readAttributeLocalTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocalTimeWithParams : params)
    }
    unsafe fn readAttributeTimeZoneDatabaseWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTimeZoneDatabaseWithParams : params)
    }
    unsafe fn readAttributeNTPServerAvailableWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNTPServerAvailableWithParams : params)
    }
    unsafe fn readAttributeTimeZoneListMaxSizeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTimeZoneListMaxSizeWithParams : params)
    }
    unsafe fn readAttributeDSTOffsetListMaxSizeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDSTOffsetListMaxSizeWithParams : params)
    }
    unsafe fn readAttributeSupportsDNSResolveWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportsDNSResolveWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterTimeSynchronization").unwrap(), new)
    }
}
impl MTRClusterTimeSynchronization_Availability for MTRClusterTimeSynchronization {}
pub trait MTRClusterTimeSynchronization_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterBridgedDeviceBasicInformation(pub id);
impl std::ops::Deref for MTRClusterBridgedDeviceBasicInformation {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterBridgedDeviceBasicInformation {}
impl MTRClusterBridgedDeviceBasicInformation {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterBridgedDeviceBasicInformation").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterBridgedDeviceBasicInformation {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterBridgedDeviceBasicInformation {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterBridgedDeviceBasicInformation, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterBridgedDeviceBasicInformation").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterBridgedDeviceBasicInformation(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterBridgedDeviceBasicInformation" ,)
        }
    }
}
impl IMTRCluster for MTRClusterBridgedDeviceBasicInformation {}
impl INSObject for MTRClusterBridgedDeviceBasicInformation {}
impl PNSObject for MTRClusterBridgedDeviceBasicInformation {}
impl IMTRClusterBridgedDeviceBasicInformation for MTRClusterBridgedDeviceBasicInformation {}
pub trait IMTRClusterBridgedDeviceBasicInformation: Sized + std::ops::Deref {
    unsafe fn keepActiveWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRBridgedDeviceBasicInformationClusterKeepActiveParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keepActiveWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeVendorNameWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVendorNameWithParams : params)
    }
    unsafe fn readAttributeVendorIDWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVendorIDWithParams : params)
    }
    unsafe fn readAttributeProductNameWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductNameWithParams : params)
    }
    unsafe fn readAttributeProductIDWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductIDWithParams : params)
    }
    unsafe fn readAttributeNodeLabelWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNodeLabelWithParams : params)
    }
    unsafe fn writeAttributeNodeLabelWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNodeLabelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNodeLabelWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNodeLabelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeHardwareVersionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHardwareVersionWithParams : params)
    }
    unsafe fn readAttributeHardwareVersionStringWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHardwareVersionStringWithParams : params)
    }
    unsafe fn readAttributeSoftwareVersionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoftwareVersionWithParams : params)
    }
    unsafe fn readAttributeSoftwareVersionStringWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoftwareVersionStringWithParams : params)
    }
    unsafe fn readAttributeManufacturingDateWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeManufacturingDateWithParams : params)
    }
    unsafe fn readAttributePartNumberWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePartNumberWithParams : params)
    }
    unsafe fn readAttributeProductURLWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductURLWithParams : params)
    }
    unsafe fn readAttributeProductLabelWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductLabelWithParams : params)
    }
    unsafe fn readAttributeSerialNumberWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSerialNumberWithParams : params)
    }
    unsafe fn readAttributeReachableWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReachableWithParams : params)
    }
    unsafe fn readAttributeUniqueIDWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUniqueIDWithParams : params)
    }
    unsafe fn readAttributeProductAppearanceWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductAppearanceWithParams : params)
    }
    unsafe fn readAttributeConfigurationVersionWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeConfigurationVersionWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterBridgedDeviceBasicInformation").unwrap(), new)
    }
}
impl MTRClusterBridgedDeviceBasicInformation_Availability
    for MTRClusterBridgedDeviceBasicInformation
{
}
pub trait MTRClusterBridgedDeviceBasicInformation_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterSwitch(pub id);
impl std::ops::Deref for MTRClusterSwitch {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterSwitch {}
impl MTRClusterSwitch {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterSwitch").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterSwitch {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterSwitch {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterSwitch, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterSwitch").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterSwitch(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterSwitch")
        }
    }
}
impl IMTRCluster for MTRClusterSwitch {}
impl INSObject for MTRClusterSwitch {}
impl PNSObject for MTRClusterSwitch {}
impl IMTRClusterSwitch for MTRClusterSwitch {}
pub trait IMTRClusterSwitch: Sized + std::ops::Deref {
    unsafe fn readAttributeNumberOfPositionsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfPositionsWithParams : params)
    }
    unsafe fn readAttributeCurrentPositionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPositionWithParams : params)
    }
    unsafe fn readAttributeMultiPressMaxWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMultiPressMaxWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterSwitch").unwrap(), new)
    }
}
impl MTRClusterSwitch_Availability for MTRClusterSwitch {}
pub trait MTRClusterSwitch_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterAdministratorCommissioning(pub id);
impl std::ops::Deref for MTRClusterAdministratorCommissioning {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterAdministratorCommissioning {}
impl MTRClusterAdministratorCommissioning {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterAdministratorCommissioning").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterAdministratorCommissioning {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterAdministratorCommissioning {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterAdministratorCommissioning, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterAdministratorCommissioning").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterAdministratorCommissioning(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterAdministratorCommissioning" ,)
        }
    }
}
impl IMTRCluster for MTRClusterAdministratorCommissioning {}
impl INSObject for MTRClusterAdministratorCommissioning {}
impl PNSObject for MTRClusterAdministratorCommissioning {}
impl IMTRClusterAdministratorCommissioning for MTRClusterAdministratorCommissioning {}
pub trait IMTRClusterAdministratorCommissioning: Sized + std::ops::Deref {
    unsafe fn openCommissioningWindowWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRAdministratorCommissioningClusterOpenCommissioningWindowParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, openCommissioningWindowWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn openBasicCommissioningWindowWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, openBasicCommissioningWindowWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn revokeCommissioningWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRAdministratorCommissioningClusterRevokeCommissioningParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, revokeCommissioningWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn revokeCommissioningWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, revokeCommissioningWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeWindowStatusWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWindowStatusWithParams : params)
    }
    unsafe fn readAttributeAdminFabricIndexWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAdminFabricIndexWithParams : params)
    }
    unsafe fn readAttributeAdminVendorIdWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAdminVendorIdWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterAdministratorCommissioning").unwrap(), new)
    }
}
impl MTRClusterAdministratorCommissioning_Availability for MTRClusterAdministratorCommissioning {}
pub trait MTRClusterAdministratorCommissioning_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterOperationalCredentials(pub id);
impl std::ops::Deref for MTRClusterOperationalCredentials {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterOperationalCredentials {}
impl MTRClusterOperationalCredentials {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOperationalCredentials").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterOperationalCredentials {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterOperationalCredentials {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterOperationalCredentials, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterOperationalCredentials").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterOperationalCredentials(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterOperationalCredentials")
        }
    }
}
impl IMTRCluster for MTRClusterOperationalCredentials {}
impl INSObject for MTRClusterOperationalCredentials {}
impl PNSObject for MTRClusterOperationalCredentials {}
impl IMTRClusterOperationalCredentials for MTRClusterOperationalCredentials {}
pub trait IMTRClusterOperationalCredentials: Sized + std::ops::Deref {
    unsafe fn attestationRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROperationalCredentialsClusterAttestationRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, attestationRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn certificateChainRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROperationalCredentialsClusterCertificateChainRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, certificateChainRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn CSRRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROperationalCredentialsClusterCSRRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, CSRRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn addNOCWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROperationalCredentialsClusterAddNOCParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addNOCWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn updateNOCWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROperationalCredentialsClusterUpdateNOCParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateNOCWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn updateFabricLabelWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROperationalCredentialsClusterUpdateFabricLabelParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateFabricLabelWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn removeFabricWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROperationalCredentialsClusterRemoveFabricParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeFabricWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn addTrustedRootCertificateWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROperationalCredentialsClusterAddTrustedRootCertificateParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addTrustedRootCertificateWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setVIDVerificationStatementWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROperationalCredentialsClusterSetVIDVerificationStatementParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVIDVerificationStatementWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setVIDVerificationStatementWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVIDVerificationStatementWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn signVIDVerificationRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROperationalCredentialsClusterSignVIDVerificationRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, signVIDVerificationRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeNOCsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNOCsWithParams : params)
    }
    unsafe fn readAttributeFabricsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFabricsWithParams : params)
    }
    unsafe fn readAttributeSupportedFabricsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedFabricsWithParams : params)
    }
    unsafe fn readAttributeCommissionedFabricsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCommissionedFabricsWithParams : params)
    }
    unsafe fn readAttributeTrustedRootCertificatesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTrustedRootCertificatesWithParams : params)
    }
    unsafe fn readAttributeCurrentFabricIndexWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentFabricIndexWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOperationalCredentials").unwrap(), new)
    }
}
impl MTRClusterOperationalCredentials_Availability for MTRClusterOperationalCredentials {}
pub trait MTRClusterOperationalCredentials_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterGroupKeyManagement(pub id);
impl std::ops::Deref for MTRClusterGroupKeyManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterGroupKeyManagement {}
impl MTRClusterGroupKeyManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterGroupKeyManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterGroupKeyManagement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterGroupKeyManagement {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterGroupKeyManagement, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterGroupKeyManagement").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterGroupKeyManagement(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterGroupKeyManagement")
        }
    }
}
impl IMTRCluster for MTRClusterGroupKeyManagement {}
impl INSObject for MTRClusterGroupKeyManagement {}
impl PNSObject for MTRClusterGroupKeyManagement {}
impl IMTRClusterGroupKeyManagement for MTRClusterGroupKeyManagement {}
pub trait IMTRClusterGroupKeyManagement: Sized + std::ops::Deref {
    unsafe fn keySetWriteWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGroupKeyManagementClusterKeySetWriteParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keySetWriteWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn keySetReadWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGroupKeyManagementClusterKeySetReadParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keySetReadWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn keySetRemoveWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGroupKeyManagementClusterKeySetRemoveParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keySetRemoveWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn keySetReadAllIndicesWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGroupKeyManagementClusterKeySetReadAllIndicesParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keySetReadAllIndicesWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn keySetReadAllIndicesWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keySetReadAllIndicesWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeGroupKeyMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGroupKeyMapWithParams : params)
    }
    unsafe fn writeAttributeGroupKeyMapWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeGroupKeyMapWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeGroupKeyMapWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeGroupKeyMapWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGroupTableWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGroupTableWithParams : params)
    }
    unsafe fn readAttributeMaxGroupsPerFabricWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxGroupsPerFabricWithParams : params)
    }
    unsafe fn readAttributeMaxGroupKeysPerFabricWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxGroupKeysPerFabricWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterGroupKeyManagement").unwrap(), new)
    }
}
impl MTRClusterGroupKeyManagement_Availability for MTRClusterGroupKeyManagement {}
pub trait MTRClusterGroupKeyManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterFixedLabel(pub id);
impl std::ops::Deref for MTRClusterFixedLabel {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterFixedLabel {}
impl MTRClusterFixedLabel {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterFixedLabel").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterFixedLabel {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterFixedLabel {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterFixedLabel, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterFixedLabel").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterFixedLabel(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterFixedLabel")
        }
    }
}
impl IMTRCluster for MTRClusterFixedLabel {}
impl INSObject for MTRClusterFixedLabel {}
impl PNSObject for MTRClusterFixedLabel {}
impl IMTRClusterFixedLabel for MTRClusterFixedLabel {}
pub trait IMTRClusterFixedLabel: Sized + std::ops::Deref {
    unsafe fn readAttributeLabelListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLabelListWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterFixedLabel").unwrap(), new)
    }
}
impl MTRClusterFixedLabel_Availability for MTRClusterFixedLabel {}
pub trait MTRClusterFixedLabel_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterUserLabel(pub id);
impl std::ops::Deref for MTRClusterUserLabel {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterUserLabel {}
impl MTRClusterUserLabel {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterUserLabel").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterUserLabel {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterUserLabel {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterUserLabel, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterUserLabel").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterUserLabel(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterUserLabel")
        }
    }
}
impl IMTRCluster for MTRClusterUserLabel {}
impl INSObject for MTRClusterUserLabel {}
impl PNSObject for MTRClusterUserLabel {}
impl IMTRClusterUserLabel for MTRClusterUserLabel {}
pub trait IMTRClusterUserLabel: Sized + std::ops::Deref {
    unsafe fn readAttributeLabelListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLabelListWithParams : params)
    }
    unsafe fn writeAttributeLabelListWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLabelListWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLabelListWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLabelListWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterUserLabel").unwrap(), new)
    }
}
impl MTRClusterUserLabel_Availability for MTRClusterUserLabel {}
pub trait MTRClusterUserLabel_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterBooleanState(pub id);
impl std::ops::Deref for MTRClusterBooleanState {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterBooleanState {}
impl MTRClusterBooleanState {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterBooleanState").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterBooleanState {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterBooleanState {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterBooleanState, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterBooleanState").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterBooleanState(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterBooleanState")
        }
    }
}
impl IMTRCluster for MTRClusterBooleanState {}
impl INSObject for MTRClusterBooleanState {}
impl PNSObject for MTRClusterBooleanState {}
impl IMTRClusterBooleanState for MTRClusterBooleanState {}
pub trait IMTRClusterBooleanState: Sized + std::ops::Deref {
    unsafe fn readAttributeStateValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStateValueWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterBooleanState").unwrap(), new)
    }
}
impl MTRClusterBooleanState_Availability for MTRClusterBooleanState {}
pub trait MTRClusterBooleanState_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterICDManagement(pub id);
impl std::ops::Deref for MTRClusterICDManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterICDManagement {}
impl MTRClusterICDManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterICDManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterICDManagement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterICDManagement {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterICDManagement, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterICDManagement").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterICDManagement(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterICDManagement")
        }
    }
}
impl IMTRCluster for MTRClusterICDManagement {}
impl INSObject for MTRClusterICDManagement {}
impl PNSObject for MTRClusterICDManagement {}
impl IMTRClusterICDManagement for MTRClusterICDManagement {}
pub trait IMTRClusterICDManagement: Sized + std::ops::Deref {
    unsafe fn registerClientWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRICDManagementClusterRegisterClientParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, registerClientWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn unregisterClientWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRICDManagementClusterUnregisterClientParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unregisterClientWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stayActiveRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRICDManagementClusterStayActiveRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stayActiveRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeIdleModeDurationWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeIdleModeDurationWithParams : params)
    }
    unsafe fn readAttributeActiveModeDurationWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveModeDurationWithParams : params)
    }
    unsafe fn readAttributeActiveModeThresholdWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveModeThresholdWithParams : params)
    }
    unsafe fn readAttributeRegisteredClientsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRegisteredClientsWithParams : params)
    }
    unsafe fn readAttributeICDCounterWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeICDCounterWithParams : params)
    }
    unsafe fn readAttributeClientsSupportedPerFabricWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClientsSupportedPerFabricWithParams : params)
    }
    unsafe fn readAttributeUserActiveModeTriggerHintWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUserActiveModeTriggerHintWithParams : params)
    }
    unsafe fn readAttributeUserActiveModeTriggerInstructionWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUserActiveModeTriggerInstructionWithParams : params)
    }
    unsafe fn readAttributeOperatingModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperatingModeWithParams : params)
    }
    unsafe fn readAttributeMaximumCheckInBackOffWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaximumCheckInBackOffWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterICDManagement").unwrap(), new)
    }
}
impl MTRClusterICDManagement_Availability for MTRClusterICDManagement {}
pub trait MTRClusterICDManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterTimer(pub id);
impl std::ops::Deref for MTRClusterTimer {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterTimer {}
impl MTRClusterTimer {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterTimer").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterTimer {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterTimer {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterTimer, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterTimer").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterTimer(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterTimer")
        }
    }
}
impl IMTRCluster for MTRClusterTimer {}
impl INSObject for MTRClusterTimer {}
impl PNSObject for MTRClusterTimer {}
impl IMTRClusterTimer for MTRClusterTimer {}
pub trait IMTRClusterTimer: Sized + std::ops::Deref {
    unsafe fn setTimerWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTimerClusterSetTimerParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimerWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn resetTimerWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTimerClusterResetTimerParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetTimerWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn resetTimerWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetTimerWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn addTimeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTimerClusterAddTimeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addTimeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn reduceTimeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTimerClusterReduceTimeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, reduceTimeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeSetTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSetTimeWithParams : params)
    }
    unsafe fn readAttributeTimeRemainingWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTimeRemainingWithParams : params)
    }
    unsafe fn readAttributeTimerStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTimerStateWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterTimer").unwrap(), new)
    }
}
impl MTRClusterTimer_Availability for MTRClusterTimer {}
pub trait MTRClusterTimer_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterOvenCavityOperationalState(pub id);
impl std::ops::Deref for MTRClusterOvenCavityOperationalState {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterOvenCavityOperationalState {}
impl MTRClusterOvenCavityOperationalState {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOvenCavityOperationalState").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterOvenCavityOperationalState {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterOvenCavityOperationalState {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterOvenCavityOperationalState, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterOvenCavityOperationalState").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterOvenCavityOperationalState(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterOvenCavityOperationalState" ,)
        }
    }
}
impl IMTRCluster for MTRClusterOvenCavityOperationalState {}
impl INSObject for MTRClusterOvenCavityOperationalState {}
impl PNSObject for MTRClusterOvenCavityOperationalState {}
impl IMTRClusterOvenCavityOperationalState for MTRClusterOvenCavityOperationalState {}
pub trait IMTRClusterOvenCavityOperationalState: Sized + std::ops::Deref {
    unsafe fn stopWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROvenCavityOperationalStateClusterStopParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stopWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn startWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROvenCavityOperationalStateClusterStartParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn startWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributePhaseListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhaseListWithParams : params)
    }
    unsafe fn readAttributeCurrentPhaseWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPhaseWithParams : params)
    }
    unsafe fn readAttributeCountdownTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCountdownTimeWithParams : params)
    }
    unsafe fn readAttributeOperationalStateListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalStateListWithParams : params)
    }
    unsafe fn readAttributeOperationalStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalStateWithParams : params)
    }
    unsafe fn readAttributeOperationalErrorWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalErrorWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOvenCavityOperationalState").unwrap(), new)
    }
}
impl MTRClusterOvenCavityOperationalState_Availability for MTRClusterOvenCavityOperationalState {}
pub trait MTRClusterOvenCavityOperationalState_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterOvenMode(pub id);
impl std::ops::Deref for MTRClusterOvenMode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterOvenMode {}
impl MTRClusterOvenMode {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOvenMode").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterOvenMode {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterOvenMode {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterOvenMode, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterOvenMode").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterOvenMode(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterOvenMode")
        }
    }
}
impl IMTRCluster for MTRClusterOvenMode {}
impl INSObject for MTRClusterOvenMode {}
impl PNSObject for MTRClusterOvenMode {}
impl IMTRClusterOvenMode for MTRClusterOvenMode {}
pub trait IMTRClusterOvenMode: Sized + std::ops::Deref {
    unsafe fn changeToModeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROvenModeClusterChangeToModeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeSupportedModesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithParams : params)
    }
    unsafe fn readAttributeCurrentModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOvenMode").unwrap(), new)
    }
}
impl MTRClusterOvenMode_Availability for MTRClusterOvenMode {}
pub trait MTRClusterOvenMode_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterLaundryDryerControls(pub id);
impl std::ops::Deref for MTRClusterLaundryDryerControls {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterLaundryDryerControls {}
impl MTRClusterLaundryDryerControls {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterLaundryDryerControls").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterLaundryDryerControls {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterLaundryDryerControls {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterLaundryDryerControls, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterLaundryDryerControls").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterLaundryDryerControls(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterLaundryDryerControls")
        }
    }
}
impl IMTRCluster for MTRClusterLaundryDryerControls {}
impl INSObject for MTRClusterLaundryDryerControls {}
impl PNSObject for MTRClusterLaundryDryerControls {}
impl IMTRClusterLaundryDryerControls for MTRClusterLaundryDryerControls {}
pub trait IMTRClusterLaundryDryerControls: Sized + std::ops::Deref {
    unsafe fn readAttributeSupportedDrynessLevelsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedDrynessLevelsWithParams : params)
    }
    unsafe fn readAttributeSelectedDrynessLevelWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSelectedDrynessLevelWithParams : params)
    }
    unsafe fn writeAttributeSelectedDrynessLevelWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSelectedDrynessLevelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeSelectedDrynessLevelWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSelectedDrynessLevelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterLaundryDryerControls").unwrap(), new)
    }
}
impl MTRClusterLaundryDryerControls_Availability for MTRClusterLaundryDryerControls {}
pub trait MTRClusterLaundryDryerControls_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterModeSelect(pub id);
impl std::ops::Deref for MTRClusterModeSelect {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterModeSelect {}
impl MTRClusterModeSelect {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterModeSelect").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterModeSelect {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterModeSelect {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterModeSelect, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterModeSelect").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterModeSelect(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterModeSelect")
        }
    }
}
impl IMTRCluster for MTRClusterModeSelect {}
impl INSObject for MTRClusterModeSelect {}
impl PNSObject for MTRClusterModeSelect {}
impl IMTRClusterModeSelect for MTRClusterModeSelect {}
pub trait IMTRClusterModeSelect: Sized + std::ops::Deref {
    unsafe fn changeToModeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRModeSelectClusterChangeToModeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeDescriptionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDescriptionWithParams : params)
    }
    unsafe fn readAttributeStandardNamespaceWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStandardNamespaceWithParams : params)
    }
    unsafe fn readAttributeSupportedModesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithParams : params)
    }
    unsafe fn readAttributeCurrentModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithParams : params)
    }
    unsafe fn readAttributeStartUpModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStartUpModeWithParams : params)
    }
    unsafe fn writeAttributeStartUpModeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeStartUpModeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeOnModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnModeWithParams : params)
    }
    unsafe fn writeAttributeOnModeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeOnModeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOnModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterModeSelect").unwrap(), new)
    }
}
impl MTRClusterModeSelect_Availability for MTRClusterModeSelect {}
pub trait MTRClusterModeSelect_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterLaundryWasherMode(pub id);
impl std::ops::Deref for MTRClusterLaundryWasherMode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterLaundryWasherMode {}
impl MTRClusterLaundryWasherMode {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterLaundryWasherMode").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterLaundryWasherMode {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterLaundryWasherMode {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterLaundryWasherMode, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterLaundryWasherMode").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterLaundryWasherMode(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterLaundryWasherMode")
        }
    }
}
impl IMTRCluster for MTRClusterLaundryWasherMode {}
impl INSObject for MTRClusterLaundryWasherMode {}
impl PNSObject for MTRClusterLaundryWasherMode {}
impl IMTRClusterLaundryWasherMode for MTRClusterLaundryWasherMode {}
pub trait IMTRClusterLaundryWasherMode: Sized + std::ops::Deref {
    unsafe fn changeToModeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRLaundryWasherModeClusterChangeToModeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeSupportedModesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithParams : params)
    }
    unsafe fn readAttributeCurrentModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterLaundryWasherMode").unwrap(), new)
    }
}
impl MTRClusterLaundryWasherMode_Availability for MTRClusterLaundryWasherMode {}
pub trait MTRClusterLaundryWasherMode_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterRefrigeratorAndTemperatureControlledCabinetMode(pub id);
impl std::ops::Deref for MTRClusterRefrigeratorAndTemperatureControlledCabinetMode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterRefrigeratorAndTemperatureControlledCabinetMode {}
impl MTRClusterRefrigeratorAndTemperatureControlledCabinetMode {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterRefrigeratorAndTemperatureControlledCabinetMode").unwrap(), alloc)
        })
    }
}
impl IMTRGenericCluster for MTRClusterRefrigeratorAndTemperatureControlledCabinetMode {}
impl std::convert::TryFrom<MTRGenericCluster>
    for MTRClusterRefrigeratorAndTemperatureControlledCabinetMode
{
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterRefrigeratorAndTemperatureControlledCabinetMode, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterRefrigeratorAndTemperatureControlledCabinetMode").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterRefrigeratorAndTemperatureControlledCabinetMode(
                parent.0,
            ))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterRefrigeratorAndTemperatureControlledCabinetMode" ,)
        }
    }
}
impl IMTRCluster for MTRClusterRefrigeratorAndTemperatureControlledCabinetMode {}
impl INSObject for MTRClusterRefrigeratorAndTemperatureControlledCabinetMode {}
impl PNSObject for MTRClusterRefrigeratorAndTemperatureControlledCabinetMode {}
impl IMTRClusterRefrigeratorAndTemperatureControlledCabinetMode
    for MTRClusterRefrigeratorAndTemperatureControlledCabinetMode
{
}
pub trait IMTRClusterRefrigeratorAndTemperatureControlledCabinetMode:
    Sized + std::ops::Deref
{
    unsafe fn changeToModeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeSupportedModesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithParams : params)
    }
    unsafe fn readAttributeCurrentModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterRefrigeratorAndTemperatureControlledCabinetMode").unwrap(), new)
    }
}
impl MTRClusterRefrigeratorAndTemperatureControlledCabinetMode_Availability
    for MTRClusterRefrigeratorAndTemperatureControlledCabinetMode
{
}
pub trait MTRClusterRefrigeratorAndTemperatureControlledCabinetMode_Availability:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterLaundryWasherControls(pub id);
impl std::ops::Deref for MTRClusterLaundryWasherControls {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterLaundryWasherControls {}
impl MTRClusterLaundryWasherControls {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterLaundryWasherControls").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterLaundryWasherControls {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterLaundryWasherControls {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterLaundryWasherControls, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterLaundryWasherControls").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterLaundryWasherControls(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterLaundryWasherControls")
        }
    }
}
impl IMTRCluster for MTRClusterLaundryWasherControls {}
impl INSObject for MTRClusterLaundryWasherControls {}
impl PNSObject for MTRClusterLaundryWasherControls {}
impl IMTRClusterLaundryWasherControls for MTRClusterLaundryWasherControls {}
pub trait IMTRClusterLaundryWasherControls: Sized + std::ops::Deref {
    unsafe fn readAttributeSpinSpeedsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpinSpeedsWithParams : params)
    }
    unsafe fn readAttributeSpinSpeedCurrentWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpinSpeedCurrentWithParams : params)
    }
    unsafe fn writeAttributeSpinSpeedCurrentWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSpinSpeedCurrentWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeSpinSpeedCurrentWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSpinSpeedCurrentWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNumberOfRinsesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfRinsesWithParams : params)
    }
    unsafe fn writeAttributeNumberOfRinsesWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNumberOfRinsesWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNumberOfRinsesWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNumberOfRinsesWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeSupportedRinsesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedRinsesWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterLaundryWasherControls").unwrap(), new)
    }
}
impl MTRClusterLaundryWasherControls_Availability for MTRClusterLaundryWasherControls {}
pub trait MTRClusterLaundryWasherControls_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterRVCRunMode(pub id);
impl std::ops::Deref for MTRClusterRVCRunMode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterRVCRunMode {}
impl MTRClusterRVCRunMode {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterRVCRunMode").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterRVCRunMode {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterRVCRunMode {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterRVCRunMode, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterRVCRunMode").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterRVCRunMode(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterRVCRunMode")
        }
    }
}
impl IMTRCluster for MTRClusterRVCRunMode {}
impl INSObject for MTRClusterRVCRunMode {}
impl PNSObject for MTRClusterRVCRunMode {}
impl IMTRClusterRVCRunMode for MTRClusterRVCRunMode {}
pub trait IMTRClusterRVCRunMode: Sized + std::ops::Deref {
    unsafe fn changeToModeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRRVCRunModeClusterChangeToModeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeSupportedModesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithParams : params)
    }
    unsafe fn readAttributeCurrentModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterRVCRunMode").unwrap(), new)
    }
}
impl MTRClusterRVCRunMode_Availability for MTRClusterRVCRunMode {}
pub trait MTRClusterRVCRunMode_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterRVCCleanMode(pub id);
impl std::ops::Deref for MTRClusterRVCCleanMode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterRVCCleanMode {}
impl MTRClusterRVCCleanMode {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterRVCCleanMode").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterRVCCleanMode {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterRVCCleanMode {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterRVCCleanMode, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterRVCCleanMode").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterRVCCleanMode(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterRVCCleanMode")
        }
    }
}
impl IMTRCluster for MTRClusterRVCCleanMode {}
impl INSObject for MTRClusterRVCCleanMode {}
impl PNSObject for MTRClusterRVCCleanMode {}
impl IMTRClusterRVCCleanMode for MTRClusterRVCCleanMode {}
pub trait IMTRClusterRVCCleanMode: Sized + std::ops::Deref {
    unsafe fn changeToModeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRRVCCleanModeClusterChangeToModeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeSupportedModesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithParams : params)
    }
    unsafe fn readAttributeCurrentModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterRVCCleanMode").unwrap(), new)
    }
}
impl MTRClusterRVCCleanMode_Availability for MTRClusterRVCCleanMode {}
pub trait MTRClusterRVCCleanMode_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterTemperatureControl(pub id);
impl std::ops::Deref for MTRClusterTemperatureControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterTemperatureControl {}
impl MTRClusterTemperatureControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterTemperatureControl").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterTemperatureControl {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterTemperatureControl {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterTemperatureControl, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterTemperatureControl").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterTemperatureControl(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterTemperatureControl")
        }
    }
}
impl IMTRCluster for MTRClusterTemperatureControl {}
impl INSObject for MTRClusterTemperatureControl {}
impl PNSObject for MTRClusterTemperatureControl {}
impl IMTRClusterTemperatureControl for MTRClusterTemperatureControl {}
pub trait IMTRClusterTemperatureControl: Sized + std::ops::Deref {
    unsafe fn setTemperatureWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTemperatureControlClusterSetTemperatureParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTemperatureWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setTemperatureWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTemperatureWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeTemperatureSetpointWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTemperatureSetpointWithParams : params)
    }
    unsafe fn readAttributeMinTemperatureWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinTemperatureWithParams : params)
    }
    unsafe fn readAttributeMaxTemperatureWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxTemperatureWithParams : params)
    }
    unsafe fn readAttributeStepWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStepWithParams : params)
    }
    unsafe fn readAttributeSelectedTemperatureLevelWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSelectedTemperatureLevelWithParams : params)
    }
    unsafe fn readAttributeSupportedTemperatureLevelsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedTemperatureLevelsWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterTemperatureControl").unwrap(), new)
    }
}
impl MTRClusterTemperatureControl_Availability for MTRClusterTemperatureControl {}
pub trait MTRClusterTemperatureControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterRefrigeratorAlarm(pub id);
impl std::ops::Deref for MTRClusterRefrigeratorAlarm {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterRefrigeratorAlarm {}
impl MTRClusterRefrigeratorAlarm {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterRefrigeratorAlarm").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterRefrigeratorAlarm {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterRefrigeratorAlarm {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterRefrigeratorAlarm, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterRefrigeratorAlarm").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterRefrigeratorAlarm(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterRefrigeratorAlarm")
        }
    }
}
impl IMTRCluster for MTRClusterRefrigeratorAlarm {}
impl INSObject for MTRClusterRefrigeratorAlarm {}
impl PNSObject for MTRClusterRefrigeratorAlarm {}
impl IMTRClusterRefrigeratorAlarm for MTRClusterRefrigeratorAlarm {}
pub trait IMTRClusterRefrigeratorAlarm: Sized + std::ops::Deref {
    unsafe fn readAttributeMaskWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaskWithParams : params)
    }
    unsafe fn readAttributeStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStateWithParams : params)
    }
    unsafe fn readAttributeSupportedWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterRefrigeratorAlarm").unwrap(), new)
    }
}
impl MTRClusterRefrigeratorAlarm_Availability for MTRClusterRefrigeratorAlarm {}
pub trait MTRClusterRefrigeratorAlarm_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterDishwasherMode(pub id);
impl std::ops::Deref for MTRClusterDishwasherMode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterDishwasherMode {}
impl MTRClusterDishwasherMode {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterDishwasherMode").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterDishwasherMode {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterDishwasherMode {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterDishwasherMode, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterDishwasherMode").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterDishwasherMode(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterDishwasherMode")
        }
    }
}
impl IMTRCluster for MTRClusterDishwasherMode {}
impl INSObject for MTRClusterDishwasherMode {}
impl PNSObject for MTRClusterDishwasherMode {}
impl IMTRClusterDishwasherMode for MTRClusterDishwasherMode {}
pub trait IMTRClusterDishwasherMode: Sized + std::ops::Deref {
    unsafe fn changeToModeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDishwasherModeClusterChangeToModeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeSupportedModesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithParams : params)
    }
    unsafe fn readAttributeCurrentModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterDishwasherMode").unwrap(), new)
    }
}
impl MTRClusterDishwasherMode_Availability for MTRClusterDishwasherMode {}
pub trait MTRClusterDishwasherMode_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterAirQuality(pub id);
impl std::ops::Deref for MTRClusterAirQuality {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterAirQuality {}
impl MTRClusterAirQuality {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterAirQuality").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterAirQuality {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterAirQuality {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterAirQuality, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterAirQuality").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterAirQuality(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterAirQuality")
        }
    }
}
impl IMTRCluster for MTRClusterAirQuality {}
impl INSObject for MTRClusterAirQuality {}
impl PNSObject for MTRClusterAirQuality {}
impl IMTRClusterAirQuality for MTRClusterAirQuality {}
pub trait IMTRClusterAirQuality: Sized + std::ops::Deref {
    unsafe fn readAttributeAirQualityWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAirQualityWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterAirQuality").unwrap(), new)
    }
}
impl MTRClusterAirQuality_Availability for MTRClusterAirQuality {}
pub trait MTRClusterAirQuality_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterSmokeCOAlarm(pub id);
impl std::ops::Deref for MTRClusterSmokeCOAlarm {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterSmokeCOAlarm {}
impl MTRClusterSmokeCOAlarm {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterSmokeCOAlarm").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterSmokeCOAlarm {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterSmokeCOAlarm {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterSmokeCOAlarm, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterSmokeCOAlarm").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterSmokeCOAlarm(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterSmokeCOAlarm")
        }
    }
}
impl IMTRCluster for MTRClusterSmokeCOAlarm {}
impl INSObject for MTRClusterSmokeCOAlarm {}
impl PNSObject for MTRClusterSmokeCOAlarm {}
impl IMTRClusterSmokeCOAlarm for MTRClusterSmokeCOAlarm {}
pub trait IMTRClusterSmokeCOAlarm: Sized + std::ops::Deref {
    unsafe fn selfTestRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRSmokeCOAlarmClusterSelfTestRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, selfTestRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn selfTestRequestWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, selfTestRequestWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeExpressedStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeExpressedStateWithParams : params)
    }
    unsafe fn readAttributeSmokeStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSmokeStateWithParams : params)
    }
    unsafe fn readAttributeCOStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCOStateWithParams : params)
    }
    unsafe fn readAttributeBatteryAlertWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatteryAlertWithParams : params)
    }
    unsafe fn readAttributeDeviceMutedWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDeviceMutedWithParams : params)
    }
    unsafe fn readAttributeTestInProgressWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTestInProgressWithParams : params)
    }
    unsafe fn readAttributeHardwareFaultAlertWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHardwareFaultAlertWithParams : params)
    }
    unsafe fn readAttributeEndOfServiceAlertWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEndOfServiceAlertWithParams : params)
    }
    unsafe fn readAttributeInterconnectSmokeAlarmWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInterconnectSmokeAlarmWithParams : params)
    }
    unsafe fn readAttributeInterconnectCOAlarmWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInterconnectCOAlarmWithParams : params)
    }
    unsafe fn readAttributeContaminationStateWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeContaminationStateWithParams : params)
    }
    unsafe fn readAttributeSmokeSensitivityLevelWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSmokeSensitivityLevelWithParams : params)
    }
    unsafe fn writeAttributeSmokeSensitivityLevelWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSmokeSensitivityLevelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeSmokeSensitivityLevelWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSmokeSensitivityLevelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeExpiryDateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeExpiryDateWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterSmokeCOAlarm").unwrap(), new)
    }
}
impl MTRClusterSmokeCOAlarm_Availability for MTRClusterSmokeCOAlarm {}
pub trait MTRClusterSmokeCOAlarm_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterDishwasherAlarm(pub id);
impl std::ops::Deref for MTRClusterDishwasherAlarm {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterDishwasherAlarm {}
impl MTRClusterDishwasherAlarm {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterDishwasherAlarm").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterDishwasherAlarm {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterDishwasherAlarm {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterDishwasherAlarm, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterDishwasherAlarm").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterDishwasherAlarm(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterDishwasherAlarm")
        }
    }
}
impl IMTRCluster for MTRClusterDishwasherAlarm {}
impl INSObject for MTRClusterDishwasherAlarm {}
impl PNSObject for MTRClusterDishwasherAlarm {}
impl IMTRClusterDishwasherAlarm for MTRClusterDishwasherAlarm {}
pub trait IMTRClusterDishwasherAlarm: Sized + std::ops::Deref {
    unsafe fn resetWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDishwasherAlarmClusterResetParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn modifyEnabledAlarmsWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDishwasherAlarmClusterModifyEnabledAlarmsParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, modifyEnabledAlarmsWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeMaskWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaskWithParams : params)
    }
    unsafe fn readAttributeLatchWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLatchWithParams : params)
    }
    unsafe fn readAttributeStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStateWithParams : params)
    }
    unsafe fn readAttributeSupportedWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterDishwasherAlarm").unwrap(), new)
    }
}
impl MTRClusterDishwasherAlarm_Availability for MTRClusterDishwasherAlarm {}
pub trait MTRClusterDishwasherAlarm_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterMicrowaveOvenMode(pub id);
impl std::ops::Deref for MTRClusterMicrowaveOvenMode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterMicrowaveOvenMode {}
impl MTRClusterMicrowaveOvenMode {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterMicrowaveOvenMode").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterMicrowaveOvenMode {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterMicrowaveOvenMode {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterMicrowaveOvenMode, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterMicrowaveOvenMode").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterMicrowaveOvenMode(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterMicrowaveOvenMode")
        }
    }
}
impl IMTRCluster for MTRClusterMicrowaveOvenMode {}
impl INSObject for MTRClusterMicrowaveOvenMode {}
impl PNSObject for MTRClusterMicrowaveOvenMode {}
impl IMTRClusterMicrowaveOvenMode for MTRClusterMicrowaveOvenMode {}
pub trait IMTRClusterMicrowaveOvenMode: Sized + std::ops::Deref {
    unsafe fn readAttributeSupportedModesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithParams : params)
    }
    unsafe fn readAttributeCurrentModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterMicrowaveOvenMode").unwrap(), new)
    }
}
impl MTRClusterMicrowaveOvenMode_Availability for MTRClusterMicrowaveOvenMode {}
pub trait MTRClusterMicrowaveOvenMode_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterMicrowaveOvenControl(pub id);
impl std::ops::Deref for MTRClusterMicrowaveOvenControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterMicrowaveOvenControl {}
impl MTRClusterMicrowaveOvenControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterMicrowaveOvenControl").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterMicrowaveOvenControl {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterMicrowaveOvenControl {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterMicrowaveOvenControl, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterMicrowaveOvenControl").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterMicrowaveOvenControl(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterMicrowaveOvenControl")
        }
    }
}
impl IMTRCluster for MTRClusterMicrowaveOvenControl {}
impl INSObject for MTRClusterMicrowaveOvenControl {}
impl PNSObject for MTRClusterMicrowaveOvenControl {}
impl IMTRClusterMicrowaveOvenControl for MTRClusterMicrowaveOvenControl {}
pub trait IMTRClusterMicrowaveOvenControl: Sized + std::ops::Deref {
    unsafe fn setCookingParametersWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMicrowaveOvenControlClusterSetCookingParametersParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCookingParametersWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setCookingParametersWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCookingParametersWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn addMoreTimeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMicrowaveOvenControlClusterAddMoreTimeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addMoreTimeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeCookTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCookTimeWithParams : params)
    }
    unsafe fn readAttributeMaxCookTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxCookTimeWithParams : params)
    }
    unsafe fn readAttributePowerSettingWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerSettingWithParams : params)
    }
    unsafe fn readAttributeMinPowerWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinPowerWithParams : params)
    }
    unsafe fn readAttributeMaxPowerWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxPowerWithParams : params)
    }
    unsafe fn readAttributePowerStepWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerStepWithParams : params)
    }
    unsafe fn readAttributeSupportedWattsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedWattsWithParams : params)
    }
    unsafe fn readAttributeSelectedWattIndexWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSelectedWattIndexWithParams : params)
    }
    unsafe fn readAttributeWattRatingWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWattRatingWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterMicrowaveOvenControl").unwrap(), new)
    }
}
impl MTRClusterMicrowaveOvenControl_Availability for MTRClusterMicrowaveOvenControl {}
pub trait MTRClusterMicrowaveOvenControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterOperationalState(pub id);
impl std::ops::Deref for MTRClusterOperationalState {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterOperationalState {}
impl MTRClusterOperationalState {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOperationalState").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterOperationalState {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterOperationalState {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterOperationalState, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterOperationalState").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterOperationalState(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterOperationalState")
        }
    }
}
impl IMTRCluster for MTRClusterOperationalState {}
impl INSObject for MTRClusterOperationalState {}
impl PNSObject for MTRClusterOperationalState {}
impl IMTRClusterOperationalState for MTRClusterOperationalState {}
pub trait IMTRClusterOperationalState: Sized + std::ops::Deref {
    unsafe fn pauseWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROperationalStateClusterPauseParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn pauseWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stopWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROperationalStateClusterStopParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stopWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn startWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROperationalStateClusterStartParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn startWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn resumeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTROperationalStateClusterResumeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resumeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn resumeWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resumeWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributePhaseListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhaseListWithParams : params)
    }
    unsafe fn readAttributeCurrentPhaseWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPhaseWithParams : params)
    }
    unsafe fn readAttributeCountdownTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCountdownTimeWithParams : params)
    }
    unsafe fn readAttributeOperationalStateListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalStateListWithParams : params)
    }
    unsafe fn readAttributeOperationalStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalStateWithParams : params)
    }
    unsafe fn readAttributeOperationalErrorWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalErrorWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOperationalState").unwrap(), new)
    }
}
impl MTRClusterOperationalState_Availability for MTRClusterOperationalState {}
pub trait MTRClusterOperationalState_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterRVCOperationalState(pub id);
impl std::ops::Deref for MTRClusterRVCOperationalState {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterRVCOperationalState {}
impl MTRClusterRVCOperationalState {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterRVCOperationalState").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterRVCOperationalState {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterRVCOperationalState {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterRVCOperationalState, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterRVCOperationalState").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterRVCOperationalState(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterRVCOperationalState")
        }
    }
}
impl IMTRCluster for MTRClusterRVCOperationalState {}
impl INSObject for MTRClusterRVCOperationalState {}
impl PNSObject for MTRClusterRVCOperationalState {}
impl IMTRClusterRVCOperationalState for MTRClusterRVCOperationalState {}
pub trait IMTRClusterRVCOperationalState: Sized + std::ops::Deref {
    unsafe fn pauseWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRRVCOperationalStateClusterPauseParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn pauseWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn resumeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRRVCOperationalStateClusterResumeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resumeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn resumeWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resumeWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn goHomeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRRVCOperationalStateClusterGoHomeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, goHomeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn goHomeWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, goHomeWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributePhaseListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhaseListWithParams : params)
    }
    unsafe fn readAttributeCurrentPhaseWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPhaseWithParams : params)
    }
    unsafe fn readAttributeCountdownTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCountdownTimeWithParams : params)
    }
    unsafe fn readAttributeOperationalStateListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalStateListWithParams : params)
    }
    unsafe fn readAttributeOperationalStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalStateWithParams : params)
    }
    unsafe fn readAttributeOperationalErrorWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalErrorWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterRVCOperationalState").unwrap(), new)
    }
}
impl MTRClusterRVCOperationalState_Availability for MTRClusterRVCOperationalState {}
pub trait MTRClusterRVCOperationalState_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterScenesManagement(pub id);
impl std::ops::Deref for MTRClusterScenesManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterScenesManagement {}
impl MTRClusterScenesManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterScenesManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterScenesManagement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterScenesManagement {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterScenesManagement, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterScenesManagement").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterScenesManagement(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterScenesManagement")
        }
    }
}
impl IMTRCluster for MTRClusterScenesManagement {}
impl INSObject for MTRClusterScenesManagement {}
impl PNSObject for MTRClusterScenesManagement {}
impl IMTRClusterScenesManagement for MTRClusterScenesManagement {}
pub trait IMTRClusterScenesManagement: Sized + std::ops::Deref {
    unsafe fn addSceneWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRScenesManagementClusterAddSceneParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addSceneWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn viewSceneWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRScenesManagementClusterViewSceneParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, viewSceneWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn removeSceneWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRScenesManagementClusterRemoveSceneParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeSceneWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn removeAllScenesWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRScenesManagementClusterRemoveAllScenesParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeAllScenesWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn storeSceneWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRScenesManagementClusterStoreSceneParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, storeSceneWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn recallSceneWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRScenesManagementClusterRecallSceneParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, recallSceneWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn getSceneMembershipWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRScenesManagementClusterGetSceneMembershipParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getSceneMembershipWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn copySceneWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRScenesManagementClusterCopySceneParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, copySceneWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeSceneTableSizeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSceneTableSizeWithParams : params)
    }
    unsafe fn readAttributeFabricSceneInfoWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFabricSceneInfoWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterScenesManagement").unwrap(), new)
    }
}
impl MTRClusterScenesManagement_Availability for MTRClusterScenesManagement {}
pub trait MTRClusterScenesManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterGroupcast(pub id);
impl std::ops::Deref for MTRClusterGroupcast {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterGroupcast {}
impl MTRClusterGroupcast {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterGroupcast").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterGroupcast {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterGroupcast {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterGroupcast, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterGroupcast").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterGroupcast(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterGroupcast")
        }
    }
}
impl IMTRCluster for MTRClusterGroupcast {}
impl INSObject for MTRClusterGroupcast {}
impl PNSObject for MTRClusterGroupcast {}
impl IMTRClusterGroupcast for MTRClusterGroupcast {}
pub trait IMTRClusterGroupcast: Sized + std::ops::Deref {
    unsafe fn joinGroupWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGroupcastClusterJoinGroupParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, joinGroupWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn leaveGroupWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGroupcastClusterLeaveGroupParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, leaveGroupWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn updateGroupKeyWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGroupcastClusterUpdateGroupKeyParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateGroupKeyWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn expireGracePeriodWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGroupcastClusterExpireGracePeriodParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, expireGracePeriodWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn configureAuxiliaryACLWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRGroupcastClusterConfigureAuxiliaryACLParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, configureAuxiliaryACLWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeMembershipWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMembershipWithParams : params)
    }
    unsafe fn readAttributeMaxMembershipCountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMembershipCountWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterGroupcast").unwrap(), new)
    }
}
impl MTRClusterGroupcast_Availability for MTRClusterGroupcast {}
pub trait MTRClusterGroupcast_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterHEPAFilterMonitoring(pub id);
impl std::ops::Deref for MTRClusterHEPAFilterMonitoring {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterHEPAFilterMonitoring {}
impl MTRClusterHEPAFilterMonitoring {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterHEPAFilterMonitoring").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterHEPAFilterMonitoring {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterHEPAFilterMonitoring {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterHEPAFilterMonitoring, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterHEPAFilterMonitoring").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterHEPAFilterMonitoring(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterHEPAFilterMonitoring")
        }
    }
}
impl IMTRCluster for MTRClusterHEPAFilterMonitoring {}
impl INSObject for MTRClusterHEPAFilterMonitoring {}
impl PNSObject for MTRClusterHEPAFilterMonitoring {}
impl IMTRClusterHEPAFilterMonitoring for MTRClusterHEPAFilterMonitoring {}
pub trait IMTRClusterHEPAFilterMonitoring: Sized + std::ops::Deref {
    unsafe fn resetConditionWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRHEPAFilterMonitoringClusterResetConditionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetConditionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn resetConditionWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetConditionWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeConditionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeConditionWithParams : params)
    }
    unsafe fn readAttributeDegradationDirectionWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDegradationDirectionWithParams : params)
    }
    unsafe fn readAttributeChangeIndicationWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeChangeIndicationWithParams : params)
    }
    unsafe fn readAttributeInPlaceIndicatorWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInPlaceIndicatorWithParams : params)
    }
    unsafe fn readAttributeLastChangedTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLastChangedTimeWithParams : params)
    }
    unsafe fn writeAttributeLastChangedTimeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLastChangedTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLastChangedTimeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLastChangedTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeReplacementProductListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReplacementProductListWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterHEPAFilterMonitoring").unwrap(), new)
    }
}
impl MTRClusterHEPAFilterMonitoring_Availability for MTRClusterHEPAFilterMonitoring {}
pub trait MTRClusterHEPAFilterMonitoring_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterActivatedCarbonFilterMonitoring(pub id);
impl std::ops::Deref for MTRClusterActivatedCarbonFilterMonitoring {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterActivatedCarbonFilterMonitoring {}
impl MTRClusterActivatedCarbonFilterMonitoring {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterActivatedCarbonFilterMonitoring").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterActivatedCarbonFilterMonitoring {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterActivatedCarbonFilterMonitoring {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterActivatedCarbonFilterMonitoring, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterActivatedCarbonFilterMonitoring").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterActivatedCarbonFilterMonitoring(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterActivatedCarbonFilterMonitoring" ,)
        }
    }
}
impl IMTRCluster for MTRClusterActivatedCarbonFilterMonitoring {}
impl INSObject for MTRClusterActivatedCarbonFilterMonitoring {}
impl PNSObject for MTRClusterActivatedCarbonFilterMonitoring {}
impl IMTRClusterActivatedCarbonFilterMonitoring for MTRClusterActivatedCarbonFilterMonitoring {}
pub trait IMTRClusterActivatedCarbonFilterMonitoring: Sized + std::ops::Deref {
    unsafe fn resetConditionWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRActivatedCarbonFilterMonitoringClusterResetConditionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetConditionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn resetConditionWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetConditionWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeConditionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeConditionWithParams : params)
    }
    unsafe fn readAttributeDegradationDirectionWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDegradationDirectionWithParams : params)
    }
    unsafe fn readAttributeChangeIndicationWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeChangeIndicationWithParams : params)
    }
    unsafe fn readAttributeInPlaceIndicatorWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInPlaceIndicatorWithParams : params)
    }
    unsafe fn readAttributeLastChangedTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLastChangedTimeWithParams : params)
    }
    unsafe fn writeAttributeLastChangedTimeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLastChangedTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLastChangedTimeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLastChangedTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeReplacementProductListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReplacementProductListWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterActivatedCarbonFilterMonitoring").unwrap(), new)
    }
}
impl MTRClusterActivatedCarbonFilterMonitoring_Availability
    for MTRClusterActivatedCarbonFilterMonitoring
{
}
pub trait MTRClusterActivatedCarbonFilterMonitoring_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterBooleanStateConfiguration(pub id);
impl std::ops::Deref for MTRClusterBooleanStateConfiguration {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterBooleanStateConfiguration {}
impl MTRClusterBooleanStateConfiguration {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterBooleanStateConfiguration").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterBooleanStateConfiguration {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterBooleanStateConfiguration {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterBooleanStateConfiguration, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterBooleanStateConfiguration").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterBooleanStateConfiguration(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterBooleanStateConfiguration" ,)
        }
    }
}
impl IMTRCluster for MTRClusterBooleanStateConfiguration {}
impl INSObject for MTRClusterBooleanStateConfiguration {}
impl PNSObject for MTRClusterBooleanStateConfiguration {}
impl IMTRClusterBooleanStateConfiguration for MTRClusterBooleanStateConfiguration {}
pub trait IMTRClusterBooleanStateConfiguration: Sized + std::ops::Deref {
    unsafe fn suppressAlarmWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRBooleanStateConfigurationClusterSuppressAlarmParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, suppressAlarmWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn enableDisableAlarmWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRBooleanStateConfigurationClusterEnableDisableAlarmParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enableDisableAlarmWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeCurrentSensitivityLevelWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentSensitivityLevelWithParams : params)
    }
    unsafe fn writeAttributeCurrentSensitivityLevelWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCurrentSensitivityLevelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeCurrentSensitivityLevelWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCurrentSensitivityLevelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeSupportedSensitivityLevelsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedSensitivityLevelsWithParams : params)
    }
    unsafe fn readAttributeDefaultSensitivityLevelWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultSensitivityLevelWithParams : params)
    }
    unsafe fn readAttributeAlarmsActiveWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAlarmsActiveWithParams : params)
    }
    unsafe fn readAttributeAlarmsSuppressedWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAlarmsSuppressedWithParams : params)
    }
    unsafe fn readAttributeAlarmsEnabledWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAlarmsEnabledWithParams : params)
    }
    unsafe fn readAttributeAlarmsSupportedWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAlarmsSupportedWithParams : params)
    }
    unsafe fn readAttributeSensorFaultWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSensorFaultWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterBooleanStateConfiguration").unwrap(), new)
    }
}
impl MTRClusterBooleanStateConfiguration_Availability for MTRClusterBooleanStateConfiguration {}
pub trait MTRClusterBooleanStateConfiguration_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterValveConfigurationAndControl(pub id);
impl std::ops::Deref for MTRClusterValveConfigurationAndControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterValveConfigurationAndControl {}
impl MTRClusterValveConfigurationAndControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterValveConfigurationAndControl").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterValveConfigurationAndControl {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterValveConfigurationAndControl {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterValveConfigurationAndControl, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterValveConfigurationAndControl").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterValveConfigurationAndControl(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterValveConfigurationAndControl" ,)
        }
    }
}
impl IMTRCluster for MTRClusterValveConfigurationAndControl {}
impl INSObject for MTRClusterValveConfigurationAndControl {}
impl PNSObject for MTRClusterValveConfigurationAndControl {}
impl IMTRClusterValveConfigurationAndControl for MTRClusterValveConfigurationAndControl {}
pub trait IMTRClusterValveConfigurationAndControl: Sized + std::ops::Deref {
    unsafe fn openWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRValveConfigurationAndControlClusterOpenParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, openWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn openWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, openWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn closeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRValveConfigurationAndControlClusterCloseParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, closeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn closeWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, closeWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeOpenDurationWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOpenDurationWithParams : params)
    }
    unsafe fn readAttributeDefaultOpenDurationWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultOpenDurationWithParams : params)
    }
    unsafe fn writeAttributeDefaultOpenDurationWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultOpenDurationWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeDefaultOpenDurationWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultOpenDurationWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeAutoCloseTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAutoCloseTimeWithParams : params)
    }
    unsafe fn readAttributeRemainingDurationWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRemainingDurationWithParams : params)
    }
    unsafe fn readAttributeCurrentStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentStateWithParams : params)
    }
    unsafe fn readAttributeTargetStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTargetStateWithParams : params)
    }
    unsafe fn readAttributeCurrentLevelWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentLevelWithParams : params)
    }
    unsafe fn readAttributeTargetLevelWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTargetLevelWithParams : params)
    }
    unsafe fn readAttributeDefaultOpenLevelWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultOpenLevelWithParams : params)
    }
    unsafe fn writeAttributeDefaultOpenLevelWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultOpenLevelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeDefaultOpenLevelWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultOpenLevelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeValveFaultWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeValveFaultWithParams : params)
    }
    unsafe fn readAttributeLevelStepWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelStepWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterValveConfigurationAndControl").unwrap(), new)
    }
}
impl MTRClusterValveConfigurationAndControl_Availability
    for MTRClusterValveConfigurationAndControl
{
}
pub trait MTRClusterValveConfigurationAndControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterElectricalPowerMeasurement(pub id);
impl std::ops::Deref for MTRClusterElectricalPowerMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterElectricalPowerMeasurement {}
impl MTRClusterElectricalPowerMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterElectricalPowerMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterElectricalPowerMeasurement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterElectricalPowerMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterElectricalPowerMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterElectricalPowerMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterElectricalPowerMeasurement(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterElectricalPowerMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRClusterElectricalPowerMeasurement {}
impl INSObject for MTRClusterElectricalPowerMeasurement {}
impl PNSObject for MTRClusterElectricalPowerMeasurement {}
impl IMTRClusterElectricalPowerMeasurement for MTRClusterElectricalPowerMeasurement {}
pub trait IMTRClusterElectricalPowerMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributePowerModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerModeWithParams : params)
    }
    unsafe fn readAttributeNumberOfMeasurementTypesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfMeasurementTypesWithParams : params)
    }
    unsafe fn readAttributeAccuracyWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAccuracyWithParams : params)
    }
    unsafe fn readAttributeRangesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRangesWithParams : params)
    }
    unsafe fn readAttributeVoltageWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVoltageWithParams : params)
    }
    unsafe fn readAttributeActiveCurrentWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveCurrentWithParams : params)
    }
    unsafe fn readAttributeReactiveCurrentWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReactiveCurrentWithParams : params)
    }
    unsafe fn readAttributeApparentCurrentWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApparentCurrentWithParams : params)
    }
    unsafe fn readAttributeActivePowerWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerWithParams : params)
    }
    unsafe fn readAttributeReactivePowerWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReactivePowerWithParams : params)
    }
    unsafe fn readAttributeApparentPowerWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApparentPowerWithParams : params)
    }
    unsafe fn readAttributeRMSVoltageWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRMSVoltageWithParams : params)
    }
    unsafe fn readAttributeRMSCurrentWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRMSCurrentWithParams : params)
    }
    unsafe fn readAttributeRMSPowerWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRMSPowerWithParams : params)
    }
    unsafe fn readAttributeFrequencyWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFrequencyWithParams : params)
    }
    unsafe fn readAttributeHarmonicCurrentsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHarmonicCurrentsWithParams : params)
    }
    unsafe fn readAttributeHarmonicPhasesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHarmonicPhasesWithParams : params)
    }
    unsafe fn readAttributePowerFactorWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerFactorWithParams : params)
    }
    unsafe fn readAttributeNeutralCurrentWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNeutralCurrentWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterElectricalPowerMeasurement").unwrap(), new)
    }
}
impl MTRClusterElectricalPowerMeasurement_Availability for MTRClusterElectricalPowerMeasurement {}
pub trait MTRClusterElectricalPowerMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterElectricalEnergyMeasurement(pub id);
impl std::ops::Deref for MTRClusterElectricalEnergyMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterElectricalEnergyMeasurement {}
impl MTRClusterElectricalEnergyMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterElectricalEnergyMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterElectricalEnergyMeasurement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterElectricalEnergyMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterElectricalEnergyMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterElectricalEnergyMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterElectricalEnergyMeasurement(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterElectricalEnergyMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRClusterElectricalEnergyMeasurement {}
impl INSObject for MTRClusterElectricalEnergyMeasurement {}
impl PNSObject for MTRClusterElectricalEnergyMeasurement {}
impl IMTRClusterElectricalEnergyMeasurement for MTRClusterElectricalEnergyMeasurement {}
pub trait IMTRClusterElectricalEnergyMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeAccuracyWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAccuracyWithParams : params)
    }
    unsafe fn readAttributeCumulativeEnergyImportedWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCumulativeEnergyImportedWithParams : params)
    }
    unsafe fn readAttributeCumulativeEnergyExportedWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCumulativeEnergyExportedWithParams : params)
    }
    unsafe fn readAttributePeriodicEnergyImportedWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeriodicEnergyImportedWithParams : params)
    }
    unsafe fn readAttributePeriodicEnergyExportedWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeriodicEnergyExportedWithParams : params)
    }
    unsafe fn readAttributeCumulativeEnergyResetWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCumulativeEnergyResetWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterElectricalEnergyMeasurement").unwrap(), new)
    }
}
impl MTRClusterElectricalEnergyMeasurement_Availability for MTRClusterElectricalEnergyMeasurement {}
pub trait MTRClusterElectricalEnergyMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterWaterHeaterManagement(pub id);
impl std::ops::Deref for MTRClusterWaterHeaterManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterWaterHeaterManagement {}
impl MTRClusterWaterHeaterManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterWaterHeaterManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterWaterHeaterManagement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterWaterHeaterManagement {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterWaterHeaterManagement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterWaterHeaterManagement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterWaterHeaterManagement(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterWaterHeaterManagement")
        }
    }
}
impl IMTRCluster for MTRClusterWaterHeaterManagement {}
impl INSObject for MTRClusterWaterHeaterManagement {}
impl PNSObject for MTRClusterWaterHeaterManagement {}
impl IMTRClusterWaterHeaterManagement for MTRClusterWaterHeaterManagement {}
pub trait IMTRClusterWaterHeaterManagement: Sized + std::ops::Deref {
    unsafe fn boostWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRWaterHeaterManagementClusterBoostParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, boostWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn cancelBoostWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRWaterHeaterManagementClusterCancelBoostParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelBoostWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn cancelBoostWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelBoostWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeHeaterTypesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHeaterTypesWithParams : params)
    }
    unsafe fn readAttributeHeatDemandWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHeatDemandWithParams : params)
    }
    unsafe fn readAttributeTankVolumeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTankVolumeWithParams : params)
    }
    unsafe fn readAttributeEstimatedHeatRequiredWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEstimatedHeatRequiredWithParams : params)
    }
    unsafe fn readAttributeTankPercentageWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTankPercentageWithParams : params)
    }
    unsafe fn readAttributeBoostStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBoostStateWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterWaterHeaterManagement").unwrap(), new)
    }
}
impl MTRClusterWaterHeaterManagement_Availability for MTRClusterWaterHeaterManagement {}
pub trait MTRClusterWaterHeaterManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterCommodityPrice(pub id);
impl std::ops::Deref for MTRClusterCommodityPrice {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterCommodityPrice {}
impl MTRClusterCommodityPrice {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterCommodityPrice").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterCommodityPrice {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterCommodityPrice {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterCommodityPrice, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterCommodityPrice").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterCommodityPrice(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterCommodityPrice")
        }
    }
}
impl IMTRCluster for MTRClusterCommodityPrice {}
impl INSObject for MTRClusterCommodityPrice {}
impl PNSObject for MTRClusterCommodityPrice {}
impl IMTRClusterCommodityPrice for MTRClusterCommodityPrice {}
pub trait IMTRClusterCommodityPrice: Sized + std::ops::Deref {
    unsafe fn getDetailedPriceRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCommodityPriceClusterGetDetailedPriceRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getDetailedPriceRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn getDetailedForecastRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCommodityPriceClusterGetDetailedForecastRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getDetailedForecastRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeTariffUnitWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTariffUnitWithParams : params)
    }
    unsafe fn readAttributeCurrencyWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrencyWithParams : params)
    }
    unsafe fn readAttributeCurrentPriceWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPriceWithParams : params)
    }
    unsafe fn readAttributePriceForecastWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePriceForecastWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterCommodityPrice").unwrap(), new)
    }
}
impl MTRClusterCommodityPrice_Availability for MTRClusterCommodityPrice {}
pub trait MTRClusterCommodityPrice_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterMessages(pub id);
impl std::ops::Deref for MTRClusterMessages {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterMessages {}
impl MTRClusterMessages {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterMessages").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterMessages {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterMessages {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterMessages, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterMessages").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterMessages(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterMessages")
        }
    }
}
impl IMTRCluster for MTRClusterMessages {}
impl INSObject for MTRClusterMessages {}
impl PNSObject for MTRClusterMessages {}
impl IMTRClusterMessages for MTRClusterMessages {}
pub trait IMTRClusterMessages: Sized + std::ops::Deref {
    unsafe fn presentMessagesRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMessagesClusterPresentMessagesRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, presentMessagesRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn cancelMessagesRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMessagesClusterCancelMessagesRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelMessagesRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeMessagesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMessagesWithParams : params)
    }
    unsafe fn readAttributeActiveMessageIDsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveMessageIDsWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterMessages").unwrap(), new)
    }
}
impl MTRClusterMessages_Availability for MTRClusterMessages {}
pub trait MTRClusterMessages_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterDeviceEnergyManagement(pub id);
impl std::ops::Deref for MTRClusterDeviceEnergyManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterDeviceEnergyManagement {}
impl MTRClusterDeviceEnergyManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterDeviceEnergyManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterDeviceEnergyManagement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterDeviceEnergyManagement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterDeviceEnergyManagement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterDeviceEnergyManagement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterDeviceEnergyManagement(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterDeviceEnergyManagement")
        }
    }
}
impl IMTRCluster for MTRClusterDeviceEnergyManagement {}
impl INSObject for MTRClusterDeviceEnergyManagement {}
impl PNSObject for MTRClusterDeviceEnergyManagement {}
impl IMTRClusterDeviceEnergyManagement for MTRClusterDeviceEnergyManagement {}
pub trait IMTRClusterDeviceEnergyManagement: Sized + std::ops::Deref {
    unsafe fn powerAdjustRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDeviceEnergyManagementClusterPowerAdjustRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, powerAdjustRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn cancelPowerAdjustRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDeviceEnergyManagementClusterCancelPowerAdjustRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelPowerAdjustRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn cancelPowerAdjustRequestWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelPowerAdjustRequestWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn startTimeAdjustRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDeviceEnergyManagementClusterStartTimeAdjustRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startTimeAdjustRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn pauseRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDeviceEnergyManagementClusterPauseRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn resumeRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDeviceEnergyManagementClusterResumeRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resumeRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn resumeRequestWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resumeRequestWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn modifyForecastRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDeviceEnergyManagementClusterModifyForecastRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, modifyForecastRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn requestConstraintBasedForecastWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDeviceEnergyManagementClusterRequestConstraintBasedForecastParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, requestConstraintBasedForecastWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn cancelRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDeviceEnergyManagementClusterCancelRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn cancelRequestWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelRequestWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeESATypeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeESATypeWithParams : params)
    }
    unsafe fn readAttributeESACanGenerateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeESACanGenerateWithParams : params)
    }
    unsafe fn readAttributeESAStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeESAStateWithParams : params)
    }
    unsafe fn readAttributeAbsMinPowerWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAbsMinPowerWithParams : params)
    }
    unsafe fn readAttributeAbsMaxPowerWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAbsMaxPowerWithParams : params)
    }
    unsafe fn readAttributePowerAdjustmentCapabilityWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerAdjustmentCapabilityWithParams : params)
    }
    unsafe fn readAttributeForecastWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeForecastWithParams : params)
    }
    unsafe fn readAttributeOptOutStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOptOutStateWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterDeviceEnergyManagement").unwrap(), new)
    }
}
impl MTRClusterDeviceEnergyManagement_Availability for MTRClusterDeviceEnergyManagement {}
pub trait MTRClusterDeviceEnergyManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterEnergyEVSE(pub id);
impl std::ops::Deref for MTRClusterEnergyEVSE {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterEnergyEVSE {}
impl MTRClusterEnergyEVSE {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterEnergyEVSE").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterEnergyEVSE {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterEnergyEVSE {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterEnergyEVSE, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterEnergyEVSE").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterEnergyEVSE(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterEnergyEVSE")
        }
    }
}
impl IMTRCluster for MTRClusterEnergyEVSE {}
impl INSObject for MTRClusterEnergyEVSE {}
impl PNSObject for MTRClusterEnergyEVSE {}
impl IMTRClusterEnergyEVSE for MTRClusterEnergyEVSE {}
pub trait IMTRClusterEnergyEVSE: Sized + std::ops::Deref {
    unsafe fn disableWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTREnergyEVSEClusterDisableParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, disableWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn disableWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, disableWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn enableChargingWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTREnergyEVSEClusterEnableChargingParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enableChargingWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn enableDischargingWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTREnergyEVSEClusterEnableDischargingParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enableDischargingWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn startDiagnosticsWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTREnergyEVSEClusterStartDiagnosticsParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startDiagnosticsWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn startDiagnosticsWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startDiagnosticsWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setTargetsWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTREnergyEVSEClusterSetTargetsParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTargetsWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn getTargetsWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTREnergyEVSEClusterGetTargetsParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getTargetsWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn getTargetsWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getTargetsWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn clearTargetsWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTREnergyEVSEClusterClearTargetsParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearTargetsWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn clearTargetsWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearTargetsWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStateWithParams : params)
    }
    unsafe fn readAttributeSupplyStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupplyStateWithParams : params)
    }
    unsafe fn readAttributeFaultStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFaultStateWithParams : params)
    }
    unsafe fn readAttributeChargingEnabledUntilWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeChargingEnabledUntilWithParams : params)
    }
    unsafe fn readAttributeDischargingEnabledUntilWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDischargingEnabledUntilWithParams : params)
    }
    unsafe fn readAttributeCircuitCapacityWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCircuitCapacityWithParams : params)
    }
    unsafe fn readAttributeMinimumChargeCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinimumChargeCurrentWithParams : params)
    }
    unsafe fn readAttributeMaximumChargeCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaximumChargeCurrentWithParams : params)
    }
    unsafe fn readAttributeMaximumDischargeCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaximumDischargeCurrentWithParams : params)
    }
    unsafe fn readAttributeUserMaximumChargeCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUserMaximumChargeCurrentWithParams : params)
    }
    unsafe fn writeAttributeUserMaximumChargeCurrentWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUserMaximumChargeCurrentWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeUserMaximumChargeCurrentWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUserMaximumChargeCurrentWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeRandomizationDelayWindowWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRandomizationDelayWindowWithParams : params)
    }
    unsafe fn writeAttributeRandomizationDelayWindowWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRandomizationDelayWindowWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeRandomizationDelayWindowWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRandomizationDelayWindowWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNextChargeStartTimeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNextChargeStartTimeWithParams : params)
    }
    unsafe fn readAttributeNextChargeTargetTimeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNextChargeTargetTimeWithParams : params)
    }
    unsafe fn readAttributeNextChargeRequiredEnergyWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNextChargeRequiredEnergyWithParams : params)
    }
    unsafe fn readAttributeNextChargeTargetSoCWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNextChargeTargetSoCWithParams : params)
    }
    unsafe fn readAttributeApproximateEVEfficiencyWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApproximateEVEfficiencyWithParams : params)
    }
    unsafe fn writeAttributeApproximateEVEfficiencyWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeApproximateEVEfficiencyWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeApproximateEVEfficiencyWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeApproximateEVEfficiencyWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeStateOfChargeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStateOfChargeWithParams : params)
    }
    unsafe fn readAttributeBatteryCapacityWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBatteryCapacityWithParams : params)
    }
    unsafe fn readAttributeVehicleIDWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVehicleIDWithParams : params)
    }
    unsafe fn readAttributeSessionIDWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSessionIDWithParams : params)
    }
    unsafe fn readAttributeSessionDurationWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSessionDurationWithParams : params)
    }
    unsafe fn readAttributeSessionEnergyChargedWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSessionEnergyChargedWithParams : params)
    }
    unsafe fn readAttributeSessionEnergyDischargedWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSessionEnergyDischargedWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterEnergyEVSE").unwrap(), new)
    }
}
impl MTRClusterEnergyEVSE_Availability for MTRClusterEnergyEVSE {}
pub trait MTRClusterEnergyEVSE_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterEnergyPreference(pub id);
impl std::ops::Deref for MTRClusterEnergyPreference {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterEnergyPreference {}
impl MTRClusterEnergyPreference {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterEnergyPreference").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterEnergyPreference {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterEnergyPreference {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterEnergyPreference, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterEnergyPreference").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterEnergyPreference(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterEnergyPreference")
        }
    }
}
impl IMTRCluster for MTRClusterEnergyPreference {}
impl INSObject for MTRClusterEnergyPreference {}
impl PNSObject for MTRClusterEnergyPreference {}
impl IMTRClusterEnergyPreference for MTRClusterEnergyPreference {}
pub trait IMTRClusterEnergyPreference: Sized + std::ops::Deref {
    unsafe fn readAttributeEnergyBalancesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnergyBalancesWithParams : params)
    }
    unsafe fn readAttributeCurrentEnergyBalanceWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentEnergyBalanceWithParams : params)
    }
    unsafe fn writeAttributeCurrentEnergyBalanceWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCurrentEnergyBalanceWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeCurrentEnergyBalanceWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCurrentEnergyBalanceWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeEnergyPrioritiesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnergyPrioritiesWithParams : params)
    }
    unsafe fn readAttributeLowPowerModeSensitivitiesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLowPowerModeSensitivitiesWithParams : params)
    }
    unsafe fn readAttributeCurrentLowPowerModeSensitivityWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentLowPowerModeSensitivityWithParams : params)
    }
    unsafe fn writeAttributeCurrentLowPowerModeSensitivityWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCurrentLowPowerModeSensitivityWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeCurrentLowPowerModeSensitivityWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCurrentLowPowerModeSensitivityWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterEnergyPreference").unwrap(), new)
    }
}
impl MTRClusterEnergyPreference_Availability for MTRClusterEnergyPreference {}
pub trait MTRClusterEnergyPreference_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterPowerTopology(pub id);
impl std::ops::Deref for MTRClusterPowerTopology {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterPowerTopology {}
impl MTRClusterPowerTopology {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPowerTopology").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterPowerTopology {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterPowerTopology {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterPowerTopology, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterPowerTopology").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterPowerTopology(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterPowerTopology")
        }
    }
}
impl IMTRCluster for MTRClusterPowerTopology {}
impl INSObject for MTRClusterPowerTopology {}
impl PNSObject for MTRClusterPowerTopology {}
impl IMTRClusterPowerTopology for MTRClusterPowerTopology {}
pub trait IMTRClusterPowerTopology: Sized + std::ops::Deref {
    unsafe fn readAttributeAvailableEndpointsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAvailableEndpointsWithParams : params)
    }
    unsafe fn readAttributeActiveEndpointsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveEndpointsWithParams : params)
    }
    unsafe fn readAttributeElectricalCircuitNodesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeElectricalCircuitNodesWithParams : params)
    }
    unsafe fn writeAttributeElectricalCircuitNodesWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeElectricalCircuitNodesWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeElectricalCircuitNodesWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeElectricalCircuitNodesWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPowerTopology").unwrap(), new)
    }
}
impl MTRClusterPowerTopology_Availability for MTRClusterPowerTopology {}
pub trait MTRClusterPowerTopology_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterEnergyEVSEMode(pub id);
impl std::ops::Deref for MTRClusterEnergyEVSEMode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterEnergyEVSEMode {}
impl MTRClusterEnergyEVSEMode {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterEnergyEVSEMode").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterEnergyEVSEMode {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterEnergyEVSEMode {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterEnergyEVSEMode, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterEnergyEVSEMode").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterEnergyEVSEMode(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterEnergyEVSEMode")
        }
    }
}
impl IMTRCluster for MTRClusterEnergyEVSEMode {}
impl INSObject for MTRClusterEnergyEVSEMode {}
impl PNSObject for MTRClusterEnergyEVSEMode {}
impl IMTRClusterEnergyEVSEMode for MTRClusterEnergyEVSEMode {}
pub trait IMTRClusterEnergyEVSEMode: Sized + std::ops::Deref {
    unsafe fn changeToModeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTREnergyEVSEModeClusterChangeToModeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeSupportedModesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithParams : params)
    }
    unsafe fn readAttributeCurrentModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterEnergyEVSEMode").unwrap(), new)
    }
}
impl MTRClusterEnergyEVSEMode_Availability for MTRClusterEnergyEVSEMode {}
pub trait MTRClusterEnergyEVSEMode_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterWaterHeaterMode(pub id);
impl std::ops::Deref for MTRClusterWaterHeaterMode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterWaterHeaterMode {}
impl MTRClusterWaterHeaterMode {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterWaterHeaterMode").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterWaterHeaterMode {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterWaterHeaterMode {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterWaterHeaterMode, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterWaterHeaterMode").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterWaterHeaterMode(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterWaterHeaterMode")
        }
    }
}
impl IMTRCluster for MTRClusterWaterHeaterMode {}
impl INSObject for MTRClusterWaterHeaterMode {}
impl PNSObject for MTRClusterWaterHeaterMode {}
impl IMTRClusterWaterHeaterMode for MTRClusterWaterHeaterMode {}
pub trait IMTRClusterWaterHeaterMode: Sized + std::ops::Deref {
    unsafe fn changeToModeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRWaterHeaterModeClusterChangeToModeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeSupportedModesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithParams : params)
    }
    unsafe fn readAttributeCurrentModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterWaterHeaterMode").unwrap(), new)
    }
}
impl MTRClusterWaterHeaterMode_Availability for MTRClusterWaterHeaterMode {}
pub trait MTRClusterWaterHeaterMode_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterDeviceEnergyManagementMode(pub id);
impl std::ops::Deref for MTRClusterDeviceEnergyManagementMode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterDeviceEnergyManagementMode {}
impl MTRClusterDeviceEnergyManagementMode {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterDeviceEnergyManagementMode").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterDeviceEnergyManagementMode {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterDeviceEnergyManagementMode {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterDeviceEnergyManagementMode, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterDeviceEnergyManagementMode").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterDeviceEnergyManagementMode(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterDeviceEnergyManagementMode" ,)
        }
    }
}
impl IMTRCluster for MTRClusterDeviceEnergyManagementMode {}
impl INSObject for MTRClusterDeviceEnergyManagementMode {}
impl PNSObject for MTRClusterDeviceEnergyManagementMode {}
impl IMTRClusterDeviceEnergyManagementMode for MTRClusterDeviceEnergyManagementMode {}
pub trait IMTRClusterDeviceEnergyManagementMode: Sized + std::ops::Deref {
    unsafe fn changeToModeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDeviceEnergyManagementModeClusterChangeToModeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeSupportedModesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedModesWithParams : params)
    }
    unsafe fn readAttributeCurrentModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentModeWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterDeviceEnergyManagementMode").unwrap(), new)
    }
}
impl MTRClusterDeviceEnergyManagementMode_Availability for MTRClusterDeviceEnergyManagementMode {}
pub trait MTRClusterDeviceEnergyManagementMode_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterElectricalGridConditions(pub id);
impl std::ops::Deref for MTRClusterElectricalGridConditions {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterElectricalGridConditions {}
impl MTRClusterElectricalGridConditions {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterElectricalGridConditions").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterElectricalGridConditions {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterElectricalGridConditions {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterElectricalGridConditions, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterElectricalGridConditions").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterElectricalGridConditions(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterElectricalGridConditions")
        }
    }
}
impl IMTRCluster for MTRClusterElectricalGridConditions {}
impl INSObject for MTRClusterElectricalGridConditions {}
impl PNSObject for MTRClusterElectricalGridConditions {}
impl IMTRClusterElectricalGridConditions for MTRClusterElectricalGridConditions {}
pub trait IMTRClusterElectricalGridConditions: Sized + std::ops::Deref {
    unsafe fn readAttributeLocalGenerationAvailableWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocalGenerationAvailableWithParams : params)
    }
    unsafe fn writeAttributeLocalGenerationAvailableWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalGenerationAvailableWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLocalGenerationAvailableWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalGenerationAvailableWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeCurrentConditionsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentConditionsWithParams : params)
    }
    unsafe fn readAttributeForecastConditionsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeForecastConditionsWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterElectricalGridConditions").unwrap(), new)
    }
}
impl MTRClusterElectricalGridConditions_Availability for MTRClusterElectricalGridConditions {}
pub trait MTRClusterElectricalGridConditions_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterDoorLock(pub id);
impl std::ops::Deref for MTRClusterDoorLock {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterDoorLock {}
impl MTRClusterDoorLock {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterDoorLock").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterDoorLock {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterDoorLock {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterDoorLock, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterDoorLock").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterDoorLock(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterDoorLock")
        }
    }
}
impl IMTRCluster for MTRClusterDoorLock {}
impl INSObject for MTRClusterDoorLock {}
impl PNSObject for MTRClusterDoorLock {}
impl IMTRClusterDoorLock for MTRClusterDoorLock {}
pub trait IMTRClusterDoorLock: Sized + std::ops::Deref {
    unsafe fn lockDoorWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterLockDoorParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, lockDoorWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn lockDoorWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, lockDoorWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn unlockDoorWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterUnlockDoorParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unlockDoorWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn unlockDoorWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unlockDoorWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn unlockWithTimeoutWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterUnlockWithTimeoutParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unlockWithTimeoutWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setWeekDayScheduleWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterSetWeekDayScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWeekDayScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn getWeekDayScheduleWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterGetWeekDayScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getWeekDayScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn clearWeekDayScheduleWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterClearWeekDayScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearWeekDayScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setYearDayScheduleWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterSetYearDayScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setYearDayScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn getYearDayScheduleWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterGetYearDayScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getYearDayScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn clearYearDayScheduleWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterClearYearDayScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearYearDayScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setHolidayScheduleWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterSetHolidayScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHolidayScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn getHolidayScheduleWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterGetHolidayScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getHolidayScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn clearHolidayScheduleWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterClearHolidayScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearHolidayScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setUserWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterSetUserParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn getUserWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterGetUserParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getUserWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn clearUserWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterClearUserParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearUserWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setCredentialWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterSetCredentialParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentialWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn getCredentialStatusWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterGetCredentialStatusParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getCredentialStatusWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn clearCredentialWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterClearCredentialParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearCredentialWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn unboltDoorWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterUnboltDoorParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unboltDoorWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn unboltDoorWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unboltDoorWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setAliroReaderConfigWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterSetAliroReaderConfigParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAliroReaderConfigWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn clearAliroReaderConfigWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterClearAliroReaderConfigParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearAliroReaderConfigWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn clearAliroReaderConfigWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearAliroReaderConfigWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn appleSetAliroCredentialWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterAppleSetAliroCredentialParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appleSetAliroCredentialWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn appleGetAliroCredentialStatusWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterAppleGetAliroCredentialStatusParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appleGetAliroCredentialStatusWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn appleClearAliroCredentialWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterAppleClearAliroCredentialParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appleClearAliroCredentialWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn appleSetAliroReaderConfigWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterAppleSetAliroReaderConfigParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appleSetAliroReaderConfigWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn appleClearAliroReaderConfigWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRDoorLockClusterAppleClearAliroReaderConfigParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appleClearAliroReaderConfigWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn appleClearAliroReaderConfigWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appleClearAliroReaderConfigWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeLockStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLockStateWithParams : params)
    }
    unsafe fn readAttributeLockTypeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLockTypeWithParams : params)
    }
    unsafe fn readAttributeActuatorEnabledWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActuatorEnabledWithParams : params)
    }
    unsafe fn readAttributeDoorStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDoorStateWithParams : params)
    }
    unsafe fn readAttributeDoorOpenEventsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDoorOpenEventsWithParams : params)
    }
    unsafe fn writeAttributeDoorOpenEventsWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDoorOpenEventsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeDoorOpenEventsWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDoorOpenEventsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeDoorClosedEventsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDoorClosedEventsWithParams : params)
    }
    unsafe fn writeAttributeDoorClosedEventsWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDoorClosedEventsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeDoorClosedEventsWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDoorClosedEventsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeOpenPeriodWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOpenPeriodWithParams : params)
    }
    unsafe fn writeAttributeOpenPeriodWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOpenPeriodWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeOpenPeriodWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOpenPeriodWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNumberOfTotalUsersSupportedWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfTotalUsersSupportedWithParams : params)
    }
    unsafe fn readAttributeNumberOfPINUsersSupportedWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfPINUsersSupportedWithParams : params)
    }
    unsafe fn readAttributeNumberOfRFIDUsersSupportedWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfRFIDUsersSupportedWithParams : params)
    }
    unsafe fn readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithParams : params)
    }
    unsafe fn readAttributeNumberOfYearDaySchedulesSupportedPerUserWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfYearDaySchedulesSupportedPerUserWithParams : params)
    }
    unsafe fn readAttributeNumberOfHolidaySchedulesSupportedWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfHolidaySchedulesSupportedWithParams : params)
    }
    unsafe fn readAttributeMaxPINCodeLengthWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxPINCodeLengthWithParams : params)
    }
    unsafe fn readAttributeMinPINCodeLengthWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinPINCodeLengthWithParams : params)
    }
    unsafe fn readAttributeMaxRFIDCodeLengthWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxRFIDCodeLengthWithParams : params)
    }
    unsafe fn readAttributeMinRFIDCodeLengthWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinRFIDCodeLengthWithParams : params)
    }
    unsafe fn readAttributeCredentialRulesSupportWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCredentialRulesSupportWithParams : params)
    }
    unsafe fn readAttributeNumberOfCredentialsSupportedPerUserWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfCredentialsSupportedPerUserWithParams : params)
    }
    unsafe fn readAttributeLanguageWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLanguageWithParams : params)
    }
    unsafe fn writeAttributeLanguageWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLanguageWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLanguageWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLanguageWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeLEDSettingsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLEDSettingsWithParams : params)
    }
    unsafe fn writeAttributeLEDSettingsWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLEDSettingsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLEDSettingsWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLEDSettingsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeAutoRelockTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAutoRelockTimeWithParams : params)
    }
    unsafe fn writeAttributeAutoRelockTimeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAutoRelockTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeAutoRelockTimeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAutoRelockTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeSoundVolumeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoundVolumeWithParams : params)
    }
    unsafe fn writeAttributeSoundVolumeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSoundVolumeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeSoundVolumeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSoundVolumeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeOperatingModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperatingModeWithParams : params)
    }
    unsafe fn writeAttributeOperatingModeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOperatingModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeOperatingModeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOperatingModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeSupportedOperatingModesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedOperatingModesWithParams : params)
    }
    unsafe fn readAttributeDefaultConfigurationRegisterWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultConfigurationRegisterWithParams : params)
    }
    unsafe fn readAttributeEnableLocalProgrammingWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnableLocalProgrammingWithParams : params)
    }
    unsafe fn writeAttributeEnableLocalProgrammingWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnableLocalProgrammingWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeEnableLocalProgrammingWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnableLocalProgrammingWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeEnableOneTouchLockingWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnableOneTouchLockingWithParams : params)
    }
    unsafe fn writeAttributeEnableOneTouchLockingWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnableOneTouchLockingWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeEnableOneTouchLockingWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnableOneTouchLockingWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeEnableInsideStatusLEDWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnableInsideStatusLEDWithParams : params)
    }
    unsafe fn writeAttributeEnableInsideStatusLEDWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnableInsideStatusLEDWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeEnableInsideStatusLEDWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnableInsideStatusLEDWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeEnablePrivacyModeButtonWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnablePrivacyModeButtonWithParams : params)
    }
    unsafe fn writeAttributeEnablePrivacyModeButtonWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnablePrivacyModeButtonWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeEnablePrivacyModeButtonWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnablePrivacyModeButtonWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeLocalProgrammingFeaturesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocalProgrammingFeaturesWithParams : params)
    }
    unsafe fn writeAttributeLocalProgrammingFeaturesWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalProgrammingFeaturesWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLocalProgrammingFeaturesWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalProgrammingFeaturesWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeWrongCodeEntryLimitWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWrongCodeEntryLimitWithParams : params)
    }
    unsafe fn writeAttributeWrongCodeEntryLimitWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWrongCodeEntryLimitWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeWrongCodeEntryLimitWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWrongCodeEntryLimitWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeUserCodeTemporaryDisableTimeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUserCodeTemporaryDisableTimeWithParams : params)
    }
    unsafe fn writeAttributeUserCodeTemporaryDisableTimeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUserCodeTemporaryDisableTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeUserCodeTemporaryDisableTimeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUserCodeTemporaryDisableTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeSendPINOverTheAirWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSendPINOverTheAirWithParams : params)
    }
    unsafe fn writeAttributeSendPINOverTheAirWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSendPINOverTheAirWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeSendPINOverTheAirWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSendPINOverTheAirWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeRequirePINforRemoteOperationWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRequirePINforRemoteOperationWithParams : params)
    }
    unsafe fn writeAttributeRequirePINforRemoteOperationWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRequirePINforRemoteOperationWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeRequirePINforRemoteOperationWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRequirePINforRemoteOperationWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeExpiringUserTimeoutWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeExpiringUserTimeoutWithParams : params)
    }
    unsafe fn writeAttributeExpiringUserTimeoutWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeExpiringUserTimeoutWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeExpiringUserTimeoutWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeExpiringUserTimeoutWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeAliroReaderVerificationKeyWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAliroReaderVerificationKeyWithParams : params)
    }
    unsafe fn readAttributeAliroReaderGroupIdentifierWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAliroReaderGroupIdentifierWithParams : params)
    }
    unsafe fn readAttributeAliroReaderGroupSubIdentifierWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAliroReaderGroupSubIdentifierWithParams : params)
    }
    unsafe fn readAttributeAliroExpeditedTransactionSupportedProtocolVersionsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAliroExpeditedTransactionSupportedProtocolVersionsWithParams : params)
    }
    unsafe fn readAttributeAliroGroupResolvingKeyWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAliroGroupResolvingKeyWithParams : params)
    }
    unsafe fn readAttributeAliroSupportedBLEUWBProtocolVersionsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAliroSupportedBLEUWBProtocolVersionsWithParams : params)
    }
    unsafe fn readAttributeAliroBLEAdvertisingVersionWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAliroBLEAdvertisingVersionWithParams : params)
    }
    unsafe fn readAttributeNumberOfAliroCredentialIssuerKeysSupportedWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfAliroCredentialIssuerKeysSupportedWithParams : params)
    }
    unsafe fn readAttributeNumberOfAliroEndpointKeysSupportedWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfAliroEndpointKeysSupportedWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn readAttributeAppleAliroReaderVerificationKeyWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAppleAliroReaderVerificationKeyWithParams : params)
    }
    unsafe fn readAttributeAppleAliroReaderGroupIdentifierWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAppleAliroReaderGroupIdentifierWithParams : params)
    }
    unsafe fn readAttributeAppleAliroReaderGroupSubIdentifierWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAppleAliroReaderGroupSubIdentifierWithParams : params)
    }
    unsafe fn readAttributeAppleAliroExpeditedTransactionSupportedProtocolVersionsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAppleAliroExpeditedTransactionSupportedProtocolVersionsWithParams : params)
    }
    unsafe fn readAttributeAppleAliroGroupResolvingKeyWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAppleAliroGroupResolvingKeyWithParams : params)
    }
    unsafe fn readAttributeAppleAliroSupportedBLEUWBProtocolVersionsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAppleAliroSupportedBLEUWBProtocolVersionsWithParams : params)
    }
    unsafe fn readAttributeAppleAliroBLEAdvertisingVersionWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAppleAliroBLEAdvertisingVersionWithParams : params)
    }
    unsafe fn readAttributeAppleNumberOfAliroCredentialIssuerKeysSupportedWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAppleNumberOfAliroCredentialIssuerKeysSupportedWithParams : params)
    }
    unsafe fn readAttributeAppleNumberOfAliroEndpointKeysSupportedWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAppleNumberOfAliroEndpointKeysSupportedWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterDoorLock").unwrap(), new)
    }
}
impl MTRClusterDoorLock_Availability for MTRClusterDoorLock {}
pub trait MTRClusterDoorLock_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterWindowCovering(pub id);
impl std::ops::Deref for MTRClusterWindowCovering {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterWindowCovering {}
impl MTRClusterWindowCovering {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterWindowCovering").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterWindowCovering {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterWindowCovering {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterWindowCovering, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterWindowCovering").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterWindowCovering(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterWindowCovering")
        }
    }
}
impl IMTRCluster for MTRClusterWindowCovering {}
impl INSObject for MTRClusterWindowCovering {}
impl PNSObject for MTRClusterWindowCovering {}
impl IMTRClusterWindowCovering for MTRClusterWindowCovering {}
pub trait IMTRClusterWindowCovering: Sized + std::ops::Deref {
    unsafe fn upOrOpenWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRWindowCoveringClusterUpOrOpenParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, upOrOpenWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn upOrOpenWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, upOrOpenWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn downOrCloseWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRWindowCoveringClusterDownOrCloseParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, downOrCloseWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn downOrCloseWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, downOrCloseWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stopMotionWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRWindowCoveringClusterStopMotionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopMotionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stopMotionWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopMotionWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn goToLiftValueWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRWindowCoveringClusterGoToLiftValueParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, goToLiftValueWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn goToLiftPercentageWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRWindowCoveringClusterGoToLiftPercentageParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, goToLiftPercentageWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn goToTiltValueWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRWindowCoveringClusterGoToTiltValueParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, goToTiltValueWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn goToTiltPercentageWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRWindowCoveringClusterGoToTiltPercentageParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, goToTiltPercentageWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeTypeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTypeWithParams : params)
    }
    unsafe fn readAttributePhysicalClosedLimitLiftWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhysicalClosedLimitLiftWithParams : params)
    }
    unsafe fn readAttributePhysicalClosedLimitTiltWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhysicalClosedLimitTiltWithParams : params)
    }
    unsafe fn readAttributeCurrentPositionLiftWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPositionLiftWithParams : params)
    }
    unsafe fn readAttributeCurrentPositionTiltWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPositionTiltWithParams : params)
    }
    unsafe fn readAttributeNumberOfActuationsLiftWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfActuationsLiftWithParams : params)
    }
    unsafe fn readAttributeNumberOfActuationsTiltWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfActuationsTiltWithParams : params)
    }
    unsafe fn readAttributeConfigStatusWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeConfigStatusWithParams : params)
    }
    unsafe fn readAttributeCurrentPositionLiftPercentageWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPositionLiftPercentageWithParams : params)
    }
    unsafe fn readAttributeCurrentPositionTiltPercentageWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPositionTiltPercentageWithParams : params)
    }
    unsafe fn readAttributeOperationalStatusWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationalStatusWithParams : params)
    }
    unsafe fn readAttributeTargetPositionLiftPercent100thsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTargetPositionLiftPercent100thsWithParams : params)
    }
    unsafe fn readAttributeTargetPositionTiltPercent100thsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTargetPositionTiltPercent100thsWithParams : params)
    }
    unsafe fn readAttributeEndProductTypeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEndProductTypeWithParams : params)
    }
    unsafe fn readAttributeCurrentPositionLiftPercent100thsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPositionLiftPercent100thsWithParams : params)
    }
    unsafe fn readAttributeCurrentPositionTiltPercent100thsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentPositionTiltPercent100thsWithParams : params)
    }
    unsafe fn readAttributeInstalledOpenLimitLiftWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstalledOpenLimitLiftWithParams : params)
    }
    unsafe fn readAttributeInstalledClosedLimitLiftWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstalledClosedLimitLiftWithParams : params)
    }
    unsafe fn readAttributeInstalledOpenLimitTiltWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstalledOpenLimitTiltWithParams : params)
    }
    unsafe fn readAttributeInstalledClosedLimitTiltWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstalledClosedLimitTiltWithParams : params)
    }
    unsafe fn readAttributeModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeModeWithParams : params)
    }
    unsafe fn writeAttributeModeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeModeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeSafetyStatusWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSafetyStatusWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterWindowCovering").unwrap(), new)
    }
}
impl MTRClusterWindowCovering_Availability for MTRClusterWindowCovering {}
pub trait MTRClusterWindowCovering_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterClosureControl(pub id);
impl std::ops::Deref for MTRClusterClosureControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterClosureControl {}
impl MTRClusterClosureControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterClosureControl").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterClosureControl {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterClosureControl {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterClosureControl, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterClosureControl").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterClosureControl(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterClosureControl")
        }
    }
}
impl IMTRCluster for MTRClusterClosureControl {}
impl INSObject for MTRClusterClosureControl {}
impl PNSObject for MTRClusterClosureControl {}
impl IMTRClusterClosureControl for MTRClusterClosureControl {}
pub trait IMTRClusterClosureControl: Sized + std::ops::Deref {
    unsafe fn stopWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRClosureControlClusterStopParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stopWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn moveToWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRClosureControlClusterMoveToParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn moveToWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn calibrateWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRClosureControlClusterCalibrateParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, calibrateWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn calibrateWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, calibrateWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeCountdownTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCountdownTimeWithParams : params)
    }
    unsafe fn readAttributeMainStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMainStateWithParams : params)
    }
    unsafe fn readAttributeCurrentErrorListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentErrorListWithParams : params)
    }
    unsafe fn readAttributeOverallCurrentStateWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOverallCurrentStateWithParams : params)
    }
    unsafe fn readAttributeOverallTargetStateWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOverallTargetStateWithParams : params)
    }
    unsafe fn readAttributeLatchControlModesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLatchControlModesWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterClosureControl").unwrap(), new)
    }
}
impl MTRClusterClosureControl_Availability for MTRClusterClosureControl {}
pub trait MTRClusterClosureControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterClosureDimension(pub id);
impl std::ops::Deref for MTRClusterClosureDimension {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterClosureDimension {}
impl MTRClusterClosureDimension {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterClosureDimension").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterClosureDimension {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterClosureDimension {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterClosureDimension, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterClosureDimension").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterClosureDimension(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterClosureDimension")
        }
    }
}
impl IMTRCluster for MTRClusterClosureDimension {}
impl INSObject for MTRClusterClosureDimension {}
impl PNSObject for MTRClusterClosureDimension {}
impl IMTRClusterClosureDimension for MTRClusterClosureDimension {}
pub trait IMTRClusterClosureDimension: Sized + std::ops::Deref {
    unsafe fn setTargetWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRClosureDimensionClusterSetTargetParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTargetWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setTargetWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTargetWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stepWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRClosureDimensionClusterStepParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeCurrentStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentStateWithParams : params)
    }
    unsafe fn readAttributeTargetStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTargetStateWithParams : params)
    }
    unsafe fn readAttributeResolutionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeResolutionWithParams : params)
    }
    unsafe fn readAttributeStepValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStepValueWithParams : params)
    }
    unsafe fn readAttributeUnitWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnitWithParams : params)
    }
    unsafe fn readAttributeUnitRangeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnitRangeWithParams : params)
    }
    unsafe fn readAttributeLimitRangeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLimitRangeWithParams : params)
    }
    unsafe fn readAttributeTranslationDirectionWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTranslationDirectionWithParams : params)
    }
    unsafe fn readAttributeRotationAxisWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRotationAxisWithParams : params)
    }
    unsafe fn readAttributeOverflowWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOverflowWithParams : params)
    }
    unsafe fn readAttributeModulationTypeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeModulationTypeWithParams : params)
    }
    unsafe fn readAttributeLatchControlModesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLatchControlModesWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterClosureDimension").unwrap(), new)
    }
}
impl MTRClusterClosureDimension_Availability for MTRClusterClosureDimension {}
pub trait MTRClusterClosureDimension_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterServiceArea(pub id);
impl std::ops::Deref for MTRClusterServiceArea {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterServiceArea {}
impl MTRClusterServiceArea {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterServiceArea").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterServiceArea {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterServiceArea {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterServiceArea, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterServiceArea").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterServiceArea(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterServiceArea")
        }
    }
}
impl IMTRCluster for MTRClusterServiceArea {}
impl INSObject for MTRClusterServiceArea {}
impl PNSObject for MTRClusterServiceArea {}
impl IMTRClusterServiceArea for MTRClusterServiceArea {}
pub trait IMTRClusterServiceArea: Sized + std::ops::Deref {
    unsafe fn selectAreasWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRServiceAreaClusterSelectAreasParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, selectAreasWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn skipAreaWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRServiceAreaClusterSkipAreaParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, skipAreaWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeSupportedAreasWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedAreasWithParams : params)
    }
    unsafe fn readAttributeSupportedMapsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedMapsWithParams : params)
    }
    unsafe fn readAttributeSelectedAreasWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSelectedAreasWithParams : params)
    }
    unsafe fn readAttributeCurrentAreaWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentAreaWithParams : params)
    }
    unsafe fn readAttributeEstimatedEndTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEstimatedEndTimeWithParams : params)
    }
    unsafe fn readAttributeProgressWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProgressWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterServiceArea").unwrap(), new)
    }
}
impl MTRClusterServiceArea_Availability for MTRClusterServiceArea {}
pub trait MTRClusterServiceArea_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterPumpConfigurationAndControl(pub id);
impl std::ops::Deref for MTRClusterPumpConfigurationAndControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterPumpConfigurationAndControl {}
impl MTRClusterPumpConfigurationAndControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPumpConfigurationAndControl").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterPumpConfigurationAndControl {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterPumpConfigurationAndControl {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterPumpConfigurationAndControl, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterPumpConfigurationAndControl").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterPumpConfigurationAndControl(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterPumpConfigurationAndControl" ,)
        }
    }
}
impl IMTRCluster for MTRClusterPumpConfigurationAndControl {}
impl INSObject for MTRClusterPumpConfigurationAndControl {}
impl PNSObject for MTRClusterPumpConfigurationAndControl {}
impl IMTRClusterPumpConfigurationAndControl for MTRClusterPumpConfigurationAndControl {}
pub trait IMTRClusterPumpConfigurationAndControl: Sized + std::ops::Deref {
    unsafe fn readAttributeMaxPressureWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxPressureWithParams : params)
    }
    unsafe fn readAttributeMaxSpeedWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxSpeedWithParams : params)
    }
    unsafe fn readAttributeMaxFlowWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxFlowWithParams : params)
    }
    unsafe fn readAttributeMinConstPressureWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinConstPressureWithParams : params)
    }
    unsafe fn readAttributeMaxConstPressureWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxConstPressureWithParams : params)
    }
    unsafe fn readAttributeMinCompPressureWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinCompPressureWithParams : params)
    }
    unsafe fn readAttributeMaxCompPressureWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxCompPressureWithParams : params)
    }
    unsafe fn readAttributeMinConstSpeedWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinConstSpeedWithParams : params)
    }
    unsafe fn readAttributeMaxConstSpeedWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxConstSpeedWithParams : params)
    }
    unsafe fn readAttributeMinConstFlowWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinConstFlowWithParams : params)
    }
    unsafe fn readAttributeMaxConstFlowWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxConstFlowWithParams : params)
    }
    unsafe fn readAttributeMinConstTempWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinConstTempWithParams : params)
    }
    unsafe fn readAttributeMaxConstTempWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxConstTempWithParams : params)
    }
    unsafe fn readAttributePumpStatusWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePumpStatusWithParams : params)
    }
    unsafe fn readAttributeEffectiveOperationModeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEffectiveOperationModeWithParams : params)
    }
    unsafe fn readAttributeEffectiveControlModeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEffectiveControlModeWithParams : params)
    }
    unsafe fn readAttributeCapacityWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCapacityWithParams : params)
    }
    unsafe fn readAttributeSpeedWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeedWithParams : params)
    }
    unsafe fn readAttributeLifetimeRunningHoursWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLifetimeRunningHoursWithParams : params)
    }
    unsafe fn writeAttributeLifetimeRunningHoursWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLifetimeRunningHoursWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLifetimeRunningHoursWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLifetimeRunningHoursWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributePowerWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerWithParams : params)
    }
    unsafe fn readAttributeLifetimeEnergyConsumedWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLifetimeEnergyConsumedWithParams : params)
    }
    unsafe fn writeAttributeLifetimeEnergyConsumedWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLifetimeEnergyConsumedWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLifetimeEnergyConsumedWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLifetimeEnergyConsumedWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeOperationModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOperationModeWithParams : params)
    }
    unsafe fn writeAttributeOperationModeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOperationModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeOperationModeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOperationModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeControlModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeControlModeWithParams : params)
    }
    unsafe fn writeAttributeControlModeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeControlModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeControlModeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeControlModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPumpConfigurationAndControl").unwrap(), new)
    }
}
impl MTRClusterPumpConfigurationAndControl_Availability for MTRClusterPumpConfigurationAndControl {}
pub trait MTRClusterPumpConfigurationAndControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterThermostat(pub id);
impl std::ops::Deref for MTRClusterThermostat {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterThermostat {}
impl MTRClusterThermostat {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterThermostat").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterThermostat {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterThermostat {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterThermostat, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterThermostat").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterThermostat(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterThermostat")
        }
    }
}
impl IMTRCluster for MTRClusterThermostat {}
impl INSObject for MTRClusterThermostat {}
impl PNSObject for MTRClusterThermostat {}
impl IMTRClusterThermostat for MTRClusterThermostat {}
pub trait IMTRClusterThermostat: Sized + std::ops::Deref {
    unsafe fn setpointRaiseLowerWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRThermostatClusterSetpointRaiseLowerParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setpointRaiseLowerWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setWeeklyScheduleWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRThermostatClusterSetWeeklyScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWeeklyScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn getWeeklyScheduleWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRThermostatClusterGetWeeklyScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getWeeklyScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn clearWeeklyScheduleWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRThermostatClusterClearWeeklyScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearWeeklyScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn clearWeeklyScheduleWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearWeeklyScheduleWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setActiveScheduleRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRThermostatClusterSetActiveScheduleRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActiveScheduleRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setActivePresetRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRThermostatClusterSetActivePresetRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActivePresetRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn addThermostatSuggestionWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRThermostatClusterAddThermostatSuggestionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addThermostatSuggestionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn removeThermostatSuggestionWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRThermostatClusterRemoveThermostatSuggestionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeThermostatSuggestionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn atomicRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRThermostatClusterAtomicRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, atomicRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeLocalTemperatureWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocalTemperatureWithParams : params)
    }
    unsafe fn readAttributeOutdoorTemperatureWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOutdoorTemperatureWithParams : params)
    }
    unsafe fn readAttributeOccupancyWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupancyWithParams : params)
    }
    unsafe fn readAttributeAbsMinHeatSetpointLimitWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAbsMinHeatSetpointLimitWithParams : params)
    }
    unsafe fn readAttributeAbsMaxHeatSetpointLimitWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAbsMaxHeatSetpointLimitWithParams : params)
    }
    unsafe fn readAttributeAbsMinCoolSetpointLimitWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAbsMinCoolSetpointLimitWithParams : params)
    }
    unsafe fn readAttributeAbsMaxCoolSetpointLimitWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAbsMaxCoolSetpointLimitWithParams : params)
    }
    unsafe fn readAttributePICoolingDemandWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePICoolingDemandWithParams : params)
    }
    unsafe fn readAttributePIHeatingDemandWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePIHeatingDemandWithParams : params)
    }
    unsafe fn readAttributeHVACSystemTypeConfigurationWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHVACSystemTypeConfigurationWithParams : params)
    }
    unsafe fn writeAttributeHVACSystemTypeConfigurationWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeHVACSystemTypeConfigurationWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeHVACSystemTypeConfigurationWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeHVACSystemTypeConfigurationWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeLocalTemperatureCalibrationWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocalTemperatureCalibrationWithParams : params)
    }
    unsafe fn writeAttributeLocalTemperatureCalibrationWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalTemperatureCalibrationWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLocalTemperatureCalibrationWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalTemperatureCalibrationWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeOccupiedCoolingSetpointWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupiedCoolingSetpointWithParams : params)
    }
    unsafe fn writeAttributeOccupiedCoolingSetpointWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOccupiedCoolingSetpointWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeOccupiedCoolingSetpointWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOccupiedCoolingSetpointWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeOccupiedHeatingSetpointWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupiedHeatingSetpointWithParams : params)
    }
    unsafe fn writeAttributeOccupiedHeatingSetpointWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOccupiedHeatingSetpointWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeOccupiedHeatingSetpointWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOccupiedHeatingSetpointWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeUnoccupiedCoolingSetpointWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnoccupiedCoolingSetpointWithParams : params)
    }
    unsafe fn writeAttributeUnoccupiedCoolingSetpointWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnoccupiedCoolingSetpointWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeUnoccupiedCoolingSetpointWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnoccupiedCoolingSetpointWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeUnoccupiedHeatingSetpointWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnoccupiedHeatingSetpointWithParams : params)
    }
    unsafe fn writeAttributeUnoccupiedHeatingSetpointWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnoccupiedHeatingSetpointWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeUnoccupiedHeatingSetpointWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnoccupiedHeatingSetpointWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeMinHeatSetpointLimitWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinHeatSetpointLimitWithParams : params)
    }
    unsafe fn writeAttributeMinHeatSetpointLimitWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinHeatSetpointLimitWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeMinHeatSetpointLimitWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinHeatSetpointLimitWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeMaxHeatSetpointLimitWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxHeatSetpointLimitWithParams : params)
    }
    unsafe fn writeAttributeMaxHeatSetpointLimitWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMaxHeatSetpointLimitWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeMaxHeatSetpointLimitWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMaxHeatSetpointLimitWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeMinCoolSetpointLimitWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinCoolSetpointLimitWithParams : params)
    }
    unsafe fn writeAttributeMinCoolSetpointLimitWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinCoolSetpointLimitWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeMinCoolSetpointLimitWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinCoolSetpointLimitWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeMaxCoolSetpointLimitWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxCoolSetpointLimitWithParams : params)
    }
    unsafe fn writeAttributeMaxCoolSetpointLimitWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMaxCoolSetpointLimitWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeMaxCoolSetpointLimitWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMaxCoolSetpointLimitWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeMinSetpointDeadBandWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinSetpointDeadBandWithParams : params)
    }
    unsafe fn writeAttributeMinSetpointDeadBandWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinSetpointDeadBandWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeMinSetpointDeadBandWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinSetpointDeadBandWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeRemoteSensingWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRemoteSensingWithParams : params)
    }
    unsafe fn writeAttributeRemoteSensingWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRemoteSensingWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeRemoteSensingWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRemoteSensingWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeControlSequenceOfOperationWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeControlSequenceOfOperationWithParams : params)
    }
    unsafe fn writeAttributeControlSequenceOfOperationWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeControlSequenceOfOperationWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeControlSequenceOfOperationWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeControlSequenceOfOperationWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeSystemModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSystemModeWithParams : params)
    }
    unsafe fn writeAttributeSystemModeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSystemModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeSystemModeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSystemModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeThermostatRunningModeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThermostatRunningModeWithParams : params)
    }
    unsafe fn readAttributeStartOfWeekWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStartOfWeekWithParams : params)
    }
    unsafe fn readAttributeNumberOfWeeklyTransitionsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfWeeklyTransitionsWithParams : params)
    }
    unsafe fn readAttributeNumberOfDailyTransitionsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfDailyTransitionsWithParams : params)
    }
    unsafe fn readAttributeTemperatureSetpointHoldWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTemperatureSetpointHoldWithParams : params)
    }
    unsafe fn writeAttributeTemperatureSetpointHoldWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureSetpointHoldWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeTemperatureSetpointHoldWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureSetpointHoldWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeTemperatureSetpointHoldDurationWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTemperatureSetpointHoldDurationWithParams : params)
    }
    unsafe fn writeAttributeTemperatureSetpointHoldDurationWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureSetpointHoldDurationWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeTemperatureSetpointHoldDurationWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureSetpointHoldDurationWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeThermostatProgrammingOperationModeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThermostatProgrammingOperationModeWithParams : params)
    }
    unsafe fn writeAttributeThermostatProgrammingOperationModeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeThermostatProgrammingOperationModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeThermostatProgrammingOperationModeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeThermostatProgrammingOperationModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeThermostatRunningStateWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThermostatRunningStateWithParams : params)
    }
    unsafe fn readAttributeSetpointChangeSourceWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSetpointChangeSourceWithParams : params)
    }
    unsafe fn readAttributeSetpointChangeAmountWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSetpointChangeAmountWithParams : params)
    }
    unsafe fn readAttributeSetpointChangeSourceTimestampWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSetpointChangeSourceTimestampWithParams : params)
    }
    unsafe fn readAttributeOccupiedSetbackWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupiedSetbackWithParams : params)
    }
    unsafe fn writeAttributeOccupiedSetbackWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOccupiedSetbackWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeOccupiedSetbackWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOccupiedSetbackWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeOccupiedSetbackMinWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupiedSetbackMinWithParams : params)
    }
    unsafe fn readAttributeOccupiedSetbackMaxWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupiedSetbackMaxWithParams : params)
    }
    unsafe fn readAttributeUnoccupiedSetbackWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnoccupiedSetbackWithParams : params)
    }
    unsafe fn writeAttributeUnoccupiedSetbackWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnoccupiedSetbackWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeUnoccupiedSetbackWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnoccupiedSetbackWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeUnoccupiedSetbackMinWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnoccupiedSetbackMinWithParams : params)
    }
    unsafe fn readAttributeUnoccupiedSetbackMaxWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnoccupiedSetbackMaxWithParams : params)
    }
    unsafe fn readAttributeEmergencyHeatDeltaWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEmergencyHeatDeltaWithParams : params)
    }
    unsafe fn writeAttributeEmergencyHeatDeltaWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEmergencyHeatDeltaWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeEmergencyHeatDeltaWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEmergencyHeatDeltaWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeACTypeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACTypeWithParams : params)
    }
    unsafe fn writeAttributeACTypeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACTypeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeACTypeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACTypeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeACCapacityWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACCapacityWithParams : params)
    }
    unsafe fn writeAttributeACCapacityWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACCapacityWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeACCapacityWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACCapacityWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeACRefrigerantTypeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACRefrigerantTypeWithParams : params)
    }
    unsafe fn writeAttributeACRefrigerantTypeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACRefrigerantTypeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeACRefrigerantTypeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACRefrigerantTypeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeACCompressorTypeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACCompressorTypeWithParams : params)
    }
    unsafe fn writeAttributeACCompressorTypeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACCompressorTypeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeACCompressorTypeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACCompressorTypeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeACErrorCodeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACErrorCodeWithParams : params)
    }
    unsafe fn writeAttributeACErrorCodeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACErrorCodeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeACErrorCodeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACErrorCodeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeACLouverPositionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACLouverPositionWithParams : params)
    }
    unsafe fn writeAttributeACLouverPositionWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACLouverPositionWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeACLouverPositionWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACLouverPositionWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeACCoilTemperatureWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACCoilTemperatureWithParams : params)
    }
    unsafe fn readAttributeACCapacityformatWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeACCapacityformatWithParams : params)
    }
    unsafe fn writeAttributeACCapacityformatWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACCapacityformatWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeACCapacityformatWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeACCapacityformatWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributePresetTypesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePresetTypesWithParams : params)
    }
    unsafe fn readAttributeScheduleTypesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScheduleTypesWithParams : params)
    }
    unsafe fn readAttributeNumberOfPresetsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfPresetsWithParams : params)
    }
    unsafe fn readAttributeNumberOfSchedulesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfSchedulesWithParams : params)
    }
    unsafe fn readAttributeNumberOfScheduleTransitionsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfScheduleTransitionsWithParams : params)
    }
    unsafe fn readAttributeNumberOfScheduleTransitionPerDayWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfScheduleTransitionPerDayWithParams : params)
    }
    unsafe fn readAttributeActivePresetHandleWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePresetHandleWithParams : params)
    }
    unsafe fn readAttributeActiveScheduleHandleWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveScheduleHandleWithParams : params)
    }
    unsafe fn readAttributePresetsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePresetsWithParams : params)
    }
    unsafe fn writeAttributePresetsWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePresetsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributePresetsWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePresetsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeSchedulesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSchedulesWithParams : params)
    }
    unsafe fn writeAttributeSchedulesWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSchedulesWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeSchedulesWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSchedulesWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeSetpointHoldExpiryTimestampWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSetpointHoldExpiryTimestampWithParams : params)
    }
    unsafe fn readAttributeMaxThermostatSuggestionsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxThermostatSuggestionsWithParams : params)
    }
    unsafe fn readAttributeThermostatSuggestionsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThermostatSuggestionsWithParams : params)
    }
    unsafe fn readAttributeCurrentThermostatSuggestionWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentThermostatSuggestionWithParams : params)
    }
    unsafe fn readAttributeThermostatSuggestionNotFollowingReasonWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThermostatSuggestionNotFollowingReasonWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterThermostat").unwrap(), new)
    }
}
impl MTRClusterThermostat_Availability for MTRClusterThermostat {}
pub trait MTRClusterThermostat_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterFanControl(pub id);
impl std::ops::Deref for MTRClusterFanControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterFanControl {}
impl MTRClusterFanControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterFanControl").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterFanControl {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterFanControl {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterFanControl, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterFanControl").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterFanControl(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterFanControl")
        }
    }
}
impl IMTRCluster for MTRClusterFanControl {}
impl INSObject for MTRClusterFanControl {}
impl PNSObject for MTRClusterFanControl {}
impl IMTRClusterFanControl for MTRClusterFanControl {}
pub trait IMTRClusterFanControl: Sized + std::ops::Deref {
    unsafe fn stepWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRFanControlClusterStepParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeFanModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFanModeWithParams : params)
    }
    unsafe fn writeAttributeFanModeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFanModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeFanModeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFanModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeFanModeSequenceWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFanModeSequenceWithParams : params)
    }
    unsafe fn writeAttributeFanModeSequenceWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFanModeSequenceWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeFanModeSequenceWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFanModeSequenceWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributePercentSettingWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePercentSettingWithParams : params)
    }
    unsafe fn writeAttributePercentSettingWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePercentSettingWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributePercentSettingWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePercentSettingWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributePercentCurrentWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePercentCurrentWithParams : params)
    }
    unsafe fn readAttributeSpeedMaxWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeedMaxWithParams : params)
    }
    unsafe fn readAttributeSpeedSettingWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeedSettingWithParams : params)
    }
    unsafe fn writeAttributeSpeedSettingWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSpeedSettingWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeSpeedSettingWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSpeedSettingWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeSpeedCurrentWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeedCurrentWithParams : params)
    }
    unsafe fn readAttributeRockSupportWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRockSupportWithParams : params)
    }
    unsafe fn readAttributeRockSettingWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRockSettingWithParams : params)
    }
    unsafe fn writeAttributeRockSettingWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRockSettingWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeRockSettingWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRockSettingWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeWindSupportWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWindSupportWithParams : params)
    }
    unsafe fn readAttributeWindSettingWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWindSettingWithParams : params)
    }
    unsafe fn writeAttributeWindSettingWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWindSettingWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeWindSettingWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWindSettingWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeAirflowDirectionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAirflowDirectionWithParams : params)
    }
    unsafe fn writeAttributeAirflowDirectionWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAirflowDirectionWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeAirflowDirectionWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAirflowDirectionWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterFanControl").unwrap(), new)
    }
}
impl MTRClusterFanControl_Availability for MTRClusterFanControl {}
pub trait MTRClusterFanControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterThermostatUserInterfaceConfiguration(pub id);
impl std::ops::Deref for MTRClusterThermostatUserInterfaceConfiguration {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterThermostatUserInterfaceConfiguration {}
impl MTRClusterThermostatUserInterfaceConfiguration {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterThermostatUserInterfaceConfiguration").unwrap(), alloc)
        })
    }
}
impl IMTRGenericCluster for MTRClusterThermostatUserInterfaceConfiguration {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterThermostatUserInterfaceConfiguration {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterThermostatUserInterfaceConfiguration, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterThermostatUserInterfaceConfiguration").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterThermostatUserInterfaceConfiguration(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterThermostatUserInterfaceConfiguration" ,)
        }
    }
}
impl IMTRCluster for MTRClusterThermostatUserInterfaceConfiguration {}
impl INSObject for MTRClusterThermostatUserInterfaceConfiguration {}
impl PNSObject for MTRClusterThermostatUserInterfaceConfiguration {}
impl IMTRClusterThermostatUserInterfaceConfiguration
    for MTRClusterThermostatUserInterfaceConfiguration
{
}
pub trait IMTRClusterThermostatUserInterfaceConfiguration: Sized + std::ops::Deref {
    unsafe fn readAttributeTemperatureDisplayModeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTemperatureDisplayModeWithParams : params)
    }
    unsafe fn writeAttributeTemperatureDisplayModeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureDisplayModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeTemperatureDisplayModeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTemperatureDisplayModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeKeypadLockoutWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeKeypadLockoutWithParams : params)
    }
    unsafe fn writeAttributeKeypadLockoutWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeKeypadLockoutWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeKeypadLockoutWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeKeypadLockoutWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeScheduleProgrammingVisibilityWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScheduleProgrammingVisibilityWithParams : params)
    }
    unsafe fn writeAttributeScheduleProgrammingVisibilityWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeScheduleProgrammingVisibilityWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeScheduleProgrammingVisibilityWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeScheduleProgrammingVisibilityWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterThermostatUserInterfaceConfiguration").unwrap(), new)
    }
}
impl MTRClusterThermostatUserInterfaceConfiguration_Availability
    for MTRClusterThermostatUserInterfaceConfiguration
{
}
pub trait MTRClusterThermostatUserInterfaceConfiguration_Availability:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterColorControl(pub id);
impl std::ops::Deref for MTRClusterColorControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterColorControl {}
impl MTRClusterColorControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterColorControl").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterColorControl {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterColorControl {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterColorControl, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterColorControl").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterColorControl(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterColorControl")
        }
    }
}
impl IMTRCluster for MTRClusterColorControl {}
impl INSObject for MTRClusterColorControl {}
impl PNSObject for MTRClusterColorControl {}
impl IMTRClusterColorControl for MTRClusterColorControl {}
pub trait IMTRClusterColorControl: Sized + std::ops::Deref {
    unsafe fn moveToHueWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRColorControlClusterMoveToHueParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToHueWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn moveHueWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRColorControlClusterMoveHueParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveHueWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stepHueWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRColorControlClusterStepHueParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepHueWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn moveToSaturationWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRColorControlClusterMoveToSaturationParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToSaturationWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn moveSaturationWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRColorControlClusterMoveSaturationParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveSaturationWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stepSaturationWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRColorControlClusterStepSaturationParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepSaturationWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn moveToHueAndSaturationWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRColorControlClusterMoveToHueAndSaturationParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToHueAndSaturationWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn moveToColorWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRColorControlClusterMoveToColorParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToColorWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn moveColorWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRColorControlClusterMoveColorParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveColorWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stepColorWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRColorControlClusterStepColorParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepColorWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn moveToColorTemperatureWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRColorControlClusterMoveToColorTemperatureParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToColorTemperatureWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn enhancedMoveToHueWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRColorControlClusterEnhancedMoveToHueParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enhancedMoveToHueWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn enhancedMoveHueWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRColorControlClusterEnhancedMoveHueParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enhancedMoveHueWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn enhancedStepHueWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRColorControlClusterEnhancedStepHueParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enhancedStepHueWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn enhancedMoveToHueAndSaturationWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRColorControlClusterEnhancedMoveToHueAndSaturationParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enhancedMoveToHueAndSaturationWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn colorLoopSetWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRColorControlClusterColorLoopSetParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, colorLoopSetWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stopMoveStepWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRColorControlClusterStopMoveStepParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopMoveStepWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn moveColorTemperatureWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRColorControlClusterMoveColorTemperatureParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveColorTemperatureWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stepColorTemperatureWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRColorControlClusterStepColorTemperatureParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepColorTemperatureWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeCurrentHueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentHueWithParams : params)
    }
    unsafe fn readAttributeCurrentSaturationWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentSaturationWithParams : params)
    }
    unsafe fn readAttributeRemainingTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRemainingTimeWithParams : params)
    }
    unsafe fn readAttributeCurrentXWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentXWithParams : params)
    }
    unsafe fn readAttributeCurrentYWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentYWithParams : params)
    }
    unsafe fn readAttributeDriftCompensationWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDriftCompensationWithParams : params)
    }
    unsafe fn readAttributeCompensationTextWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCompensationTextWithParams : params)
    }
    unsafe fn readAttributeColorTemperatureMiredsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorTemperatureMiredsWithParams : params)
    }
    unsafe fn readAttributeColorModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorModeWithParams : params)
    }
    unsafe fn readAttributeOptionsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOptionsWithParams : params)
    }
    unsafe fn writeAttributeOptionsWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOptionsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeOptionsWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOptionsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNumberOfPrimariesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNumberOfPrimariesWithParams : params)
    }
    unsafe fn readAttributePrimary1XWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary1XWithParams : params)
    }
    unsafe fn readAttributePrimary1YWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary1YWithParams : params)
    }
    unsafe fn readAttributePrimary1IntensityWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary1IntensityWithParams : params)
    }
    unsafe fn readAttributePrimary2XWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary2XWithParams : params)
    }
    unsafe fn readAttributePrimary2YWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary2YWithParams : params)
    }
    unsafe fn readAttributePrimary2IntensityWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary2IntensityWithParams : params)
    }
    unsafe fn readAttributePrimary3XWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary3XWithParams : params)
    }
    unsafe fn readAttributePrimary3YWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary3YWithParams : params)
    }
    unsafe fn readAttributePrimary3IntensityWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary3IntensityWithParams : params)
    }
    unsafe fn readAttributePrimary4XWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary4XWithParams : params)
    }
    unsafe fn readAttributePrimary4YWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary4YWithParams : params)
    }
    unsafe fn readAttributePrimary4IntensityWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary4IntensityWithParams : params)
    }
    unsafe fn readAttributePrimary5XWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary5XWithParams : params)
    }
    unsafe fn readAttributePrimary5YWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary5YWithParams : params)
    }
    unsafe fn readAttributePrimary5IntensityWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary5IntensityWithParams : params)
    }
    unsafe fn readAttributePrimary6XWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary6XWithParams : params)
    }
    unsafe fn readAttributePrimary6YWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary6YWithParams : params)
    }
    unsafe fn readAttributePrimary6IntensityWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePrimary6IntensityWithParams : params)
    }
    unsafe fn readAttributeWhitePointXWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWhitePointXWithParams : params)
    }
    unsafe fn readAttributeWhitePointYWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWhitePointYWithParams : params)
    }
    unsafe fn readAttributeColorPointRXWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointRXWithParams : params)
    }
    unsafe fn readAttributeColorPointRYWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointRYWithParams : params)
    }
    unsafe fn readAttributeColorPointRIntensityWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointRIntensityWithParams : params)
    }
    unsafe fn readAttributeColorPointGXWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointGXWithParams : params)
    }
    unsafe fn readAttributeColorPointGYWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointGYWithParams : params)
    }
    unsafe fn readAttributeColorPointGIntensityWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointGIntensityWithParams : params)
    }
    unsafe fn readAttributeColorPointBXWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointBXWithParams : params)
    }
    unsafe fn readAttributeColorPointBYWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointBYWithParams : params)
    }
    unsafe fn readAttributeColorPointBIntensityWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorPointBIntensityWithParams : params)
    }
    unsafe fn readAttributeEnhancedCurrentHueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnhancedCurrentHueWithParams : params)
    }
    unsafe fn readAttributeEnhancedColorModeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnhancedColorModeWithParams : params)
    }
    unsafe fn readAttributeColorLoopActiveWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorLoopActiveWithParams : params)
    }
    unsafe fn readAttributeColorLoopDirectionWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorLoopDirectionWithParams : params)
    }
    unsafe fn readAttributeColorLoopTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorLoopTimeWithParams : params)
    }
    unsafe fn readAttributeColorLoopStartEnhancedHueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorLoopStartEnhancedHueWithParams : params)
    }
    unsafe fn readAttributeColorLoopStoredEnhancedHueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorLoopStoredEnhancedHueWithParams : params)
    }
    unsafe fn readAttributeColorCapabilitiesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorCapabilitiesWithParams : params)
    }
    unsafe fn readAttributeColorTempPhysicalMinMiredsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorTempPhysicalMinMiredsWithParams : params)
    }
    unsafe fn readAttributeColorTempPhysicalMaxMiredsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeColorTempPhysicalMaxMiredsWithParams : params)
    }
    unsafe fn readAttributeCoupleColorTempToLevelMinMiredsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCoupleColorTempToLevelMinMiredsWithParams : params)
    }
    unsafe fn readAttributeStartUpColorTemperatureMiredsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStartUpColorTemperatureMiredsWithParams : params)
    }
    unsafe fn writeAttributeStartUpColorTemperatureMiredsWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpColorTemperatureMiredsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeStartUpColorTemperatureMiredsWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStartUpColorTemperatureMiredsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterColorControl").unwrap(), new)
    }
}
impl MTRClusterColorControl_Availability for MTRClusterColorControl {}
pub trait MTRClusterColorControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterBallastConfiguration(pub id);
impl std::ops::Deref for MTRClusterBallastConfiguration {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterBallastConfiguration {}
impl MTRClusterBallastConfiguration {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterBallastConfiguration").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterBallastConfiguration {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterBallastConfiguration {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterBallastConfiguration, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterBallastConfiguration").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterBallastConfiguration(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterBallastConfiguration")
        }
    }
}
impl IMTRCluster for MTRClusterBallastConfiguration {}
impl INSObject for MTRClusterBallastConfiguration {}
impl PNSObject for MTRClusterBallastConfiguration {}
impl IMTRClusterBallastConfiguration for MTRClusterBallastConfiguration {}
pub trait IMTRClusterBallastConfiguration: Sized + std::ops::Deref {
    unsafe fn readAttributePhysicalMinLevelWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhysicalMinLevelWithParams : params)
    }
    unsafe fn readAttributePhysicalMaxLevelWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhysicalMaxLevelWithParams : params)
    }
    unsafe fn readAttributeBallastStatusWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBallastStatusWithParams : params)
    }
    unsafe fn readAttributeMinLevelWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinLevelWithParams : params)
    }
    unsafe fn writeAttributeMinLevelWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinLevelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeMinLevelWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMinLevelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeMaxLevelWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxLevelWithParams : params)
    }
    unsafe fn writeAttributeMaxLevelWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMaxLevelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeMaxLevelWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMaxLevelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeIntrinsicBallastFactorWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeIntrinsicBallastFactorWithParams : params)
    }
    unsafe fn writeAttributeIntrinsicBallastFactorWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeIntrinsicBallastFactorWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeIntrinsicBallastFactorWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeIntrinsicBallastFactorWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeBallastFactorAdjustmentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBallastFactorAdjustmentWithParams : params)
    }
    unsafe fn writeAttributeBallastFactorAdjustmentWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBallastFactorAdjustmentWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeBallastFactorAdjustmentWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBallastFactorAdjustmentWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeLampQuantityWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLampQuantityWithParams : params)
    }
    unsafe fn readAttributeLampTypeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLampTypeWithParams : params)
    }
    unsafe fn writeAttributeLampTypeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampTypeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLampTypeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampTypeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeLampManufacturerWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLampManufacturerWithParams : params)
    }
    unsafe fn writeAttributeLampManufacturerWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampManufacturerWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLampManufacturerWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampManufacturerWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeLampRatedHoursWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLampRatedHoursWithParams : params)
    }
    unsafe fn writeAttributeLampRatedHoursWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampRatedHoursWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLampRatedHoursWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampRatedHoursWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeLampBurnHoursWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLampBurnHoursWithParams : params)
    }
    unsafe fn writeAttributeLampBurnHoursWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampBurnHoursWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLampBurnHoursWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampBurnHoursWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeLampAlarmModeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLampAlarmModeWithParams : params)
    }
    unsafe fn writeAttributeLampAlarmModeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampAlarmModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLampAlarmModeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampAlarmModeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeLampBurnHoursTripPointWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLampBurnHoursTripPointWithParams : params)
    }
    unsafe fn writeAttributeLampBurnHoursTripPointWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampBurnHoursTripPointWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLampBurnHoursTripPointWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLampBurnHoursTripPointWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterBallastConfiguration").unwrap(), new)
    }
}
impl MTRClusterBallastConfiguration_Availability for MTRClusterBallastConfiguration {}
pub trait MTRClusterBallastConfiguration_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterIlluminanceMeasurement(pub id);
impl std::ops::Deref for MTRClusterIlluminanceMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterIlluminanceMeasurement {}
impl MTRClusterIlluminanceMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterIlluminanceMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterIlluminanceMeasurement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterIlluminanceMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterIlluminanceMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterIlluminanceMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterIlluminanceMeasurement(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterIlluminanceMeasurement")
        }
    }
}
impl IMTRCluster for MTRClusterIlluminanceMeasurement {}
impl INSObject for MTRClusterIlluminanceMeasurement {}
impl PNSObject for MTRClusterIlluminanceMeasurement {}
impl IMTRClusterIlluminanceMeasurement for MTRClusterIlluminanceMeasurement {}
pub trait IMTRClusterIlluminanceMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMinMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMaxMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeToleranceWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeToleranceWithParams : params)
    }
    unsafe fn readAttributeLightSensorTypeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLightSensorTypeWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterIlluminanceMeasurement").unwrap(), new)
    }
}
impl MTRClusterIlluminanceMeasurement_Availability for MTRClusterIlluminanceMeasurement {}
pub trait MTRClusterIlluminanceMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterTemperatureMeasurement(pub id);
impl std::ops::Deref for MTRClusterTemperatureMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterTemperatureMeasurement {}
impl MTRClusterTemperatureMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterTemperatureMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterTemperatureMeasurement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterTemperatureMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterTemperatureMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterTemperatureMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterTemperatureMeasurement(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterTemperatureMeasurement")
        }
    }
}
impl IMTRCluster for MTRClusterTemperatureMeasurement {}
impl INSObject for MTRClusterTemperatureMeasurement {}
impl PNSObject for MTRClusterTemperatureMeasurement {}
impl IMTRClusterTemperatureMeasurement for MTRClusterTemperatureMeasurement {}
pub trait IMTRClusterTemperatureMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMinMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMaxMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeToleranceWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeToleranceWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterTemperatureMeasurement").unwrap(), new)
    }
}
impl MTRClusterTemperatureMeasurement_Availability for MTRClusterTemperatureMeasurement {}
pub trait MTRClusterTemperatureMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterPressureMeasurement(pub id);
impl std::ops::Deref for MTRClusterPressureMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterPressureMeasurement {}
impl MTRClusterPressureMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPressureMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterPressureMeasurement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterPressureMeasurement {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterPressureMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterPressureMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterPressureMeasurement(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterPressureMeasurement")
        }
    }
}
impl IMTRCluster for MTRClusterPressureMeasurement {}
impl INSObject for MTRClusterPressureMeasurement {}
impl PNSObject for MTRClusterPressureMeasurement {}
impl IMTRClusterPressureMeasurement for MTRClusterPressureMeasurement {}
pub trait IMTRClusterPressureMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMinMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMaxMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeToleranceWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeToleranceWithParams : params)
    }
    unsafe fn readAttributeScaledValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScaledValueWithParams : params)
    }
    unsafe fn readAttributeMinScaledValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinScaledValueWithParams : params)
    }
    unsafe fn readAttributeMaxScaledValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxScaledValueWithParams : params)
    }
    unsafe fn readAttributeScaledToleranceWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScaledToleranceWithParams : params)
    }
    unsafe fn readAttributeScaleWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScaleWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPressureMeasurement").unwrap(), new)
    }
}
impl MTRClusterPressureMeasurement_Availability for MTRClusterPressureMeasurement {}
pub trait MTRClusterPressureMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterFlowMeasurement(pub id);
impl std::ops::Deref for MTRClusterFlowMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterFlowMeasurement {}
impl MTRClusterFlowMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterFlowMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterFlowMeasurement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterFlowMeasurement {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterFlowMeasurement, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterFlowMeasurement").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterFlowMeasurement(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterFlowMeasurement")
        }
    }
}
impl IMTRCluster for MTRClusterFlowMeasurement {}
impl INSObject for MTRClusterFlowMeasurement {}
impl PNSObject for MTRClusterFlowMeasurement {}
impl IMTRClusterFlowMeasurement for MTRClusterFlowMeasurement {}
pub trait IMTRClusterFlowMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMinMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMaxMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeToleranceWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeToleranceWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterFlowMeasurement").unwrap(), new)
    }
}
impl MTRClusterFlowMeasurement_Availability for MTRClusterFlowMeasurement {}
pub trait MTRClusterFlowMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterRelativeHumidityMeasurement(pub id);
impl std::ops::Deref for MTRClusterRelativeHumidityMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterRelativeHumidityMeasurement {}
impl MTRClusterRelativeHumidityMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterRelativeHumidityMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterRelativeHumidityMeasurement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterRelativeHumidityMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterRelativeHumidityMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterRelativeHumidityMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterRelativeHumidityMeasurement(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterRelativeHumidityMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRClusterRelativeHumidityMeasurement {}
impl INSObject for MTRClusterRelativeHumidityMeasurement {}
impl PNSObject for MTRClusterRelativeHumidityMeasurement {}
impl IMTRClusterRelativeHumidityMeasurement for MTRClusterRelativeHumidityMeasurement {}
pub trait IMTRClusterRelativeHumidityMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMinMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMaxMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeToleranceWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeToleranceWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterRelativeHumidityMeasurement").unwrap(), new)
    }
}
impl MTRClusterRelativeHumidityMeasurement_Availability for MTRClusterRelativeHumidityMeasurement {}
pub trait MTRClusterRelativeHumidityMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterOccupancySensing(pub id);
impl std::ops::Deref for MTRClusterOccupancySensing {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterOccupancySensing {}
impl MTRClusterOccupancySensing {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOccupancySensing").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterOccupancySensing {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterOccupancySensing {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterOccupancySensing, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterOccupancySensing").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterOccupancySensing(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterOccupancySensing")
        }
    }
}
impl IMTRCluster for MTRClusterOccupancySensing {}
impl INSObject for MTRClusterOccupancySensing {}
impl PNSObject for MTRClusterOccupancySensing {}
impl IMTRClusterOccupancySensing for MTRClusterOccupancySensing {}
pub trait IMTRClusterOccupancySensing: Sized + std::ops::Deref {
    unsafe fn readAttributeOccupancyWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupancyWithParams : params)
    }
    unsafe fn readAttributeOccupancySensorTypeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupancySensorTypeWithParams : params)
    }
    unsafe fn readAttributeOccupancySensorTypeBitmapWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOccupancySensorTypeBitmapWithParams : params)
    }
    unsafe fn readAttributeHoldTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHoldTimeWithParams : params)
    }
    unsafe fn writeAttributeHoldTimeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeHoldTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeHoldTimeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeHoldTimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeHoldTimeLimitsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHoldTimeLimitsWithParams : params)
    }
    unsafe fn readAttributePIROccupiedToUnoccupiedDelayWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePIROccupiedToUnoccupiedDelayWithParams : params)
    }
    unsafe fn writeAttributePIROccupiedToUnoccupiedDelayWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePIROccupiedToUnoccupiedDelayWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributePIROccupiedToUnoccupiedDelayWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePIROccupiedToUnoccupiedDelayWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributePIRUnoccupiedToOccupiedDelayWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePIRUnoccupiedToOccupiedDelayWithParams : params)
    }
    unsafe fn writeAttributePIRUnoccupiedToOccupiedDelayWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePIRUnoccupiedToOccupiedDelayWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributePIRUnoccupiedToOccupiedDelayWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePIRUnoccupiedToOccupiedDelayWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributePIRUnoccupiedToOccupiedThresholdWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePIRUnoccupiedToOccupiedThresholdWithParams : params)
    }
    unsafe fn writeAttributePIRUnoccupiedToOccupiedThresholdWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePIRUnoccupiedToOccupiedThresholdWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributePIRUnoccupiedToOccupiedThresholdWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePIRUnoccupiedToOccupiedThresholdWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeUltrasonicOccupiedToUnoccupiedDelayWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUltrasonicOccupiedToUnoccupiedDelayWithParams : params)
    }
    unsafe fn writeAttributeUltrasonicOccupiedToUnoccupiedDelayWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUltrasonicOccupiedToUnoccupiedDelayWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeUltrasonicOccupiedToUnoccupiedDelayWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUltrasonicOccupiedToUnoccupiedDelayWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeUltrasonicUnoccupiedToOccupiedDelayWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUltrasonicUnoccupiedToOccupiedDelayWithParams : params)
    }
    unsafe fn writeAttributeUltrasonicUnoccupiedToOccupiedDelayWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUltrasonicUnoccupiedToOccupiedDelayWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeUltrasonicUnoccupiedToOccupiedDelayWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUltrasonicUnoccupiedToOccupiedDelayWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithParams : params)
    }
    unsafe fn writeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributePhysicalContactOccupiedToUnoccupiedDelayWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhysicalContactOccupiedToUnoccupiedDelayWithParams : params)
    }
    unsafe fn writeAttributePhysicalContactOccupiedToUnoccupiedDelayWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePhysicalContactOccupiedToUnoccupiedDelayWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributePhysicalContactOccupiedToUnoccupiedDelayWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePhysicalContactOccupiedToUnoccupiedDelayWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributePhysicalContactUnoccupiedToOccupiedDelayWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhysicalContactUnoccupiedToOccupiedDelayWithParams : params)
    }
    unsafe fn writeAttributePhysicalContactUnoccupiedToOccupiedDelayWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePhysicalContactUnoccupiedToOccupiedDelayWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributePhysicalContactUnoccupiedToOccupiedDelayWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePhysicalContactUnoccupiedToOccupiedDelayWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithParams : params)
    }
    unsafe fn writeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOccupancySensing").unwrap(), new)
    }
}
impl MTRClusterOccupancySensing_Availability for MTRClusterOccupancySensing {}
pub trait MTRClusterOccupancySensing_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterCarbonMonoxideConcentrationMeasurement(pub id);
impl std::ops::Deref for MTRClusterCarbonMonoxideConcentrationMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterCarbonMonoxideConcentrationMeasurement {}
impl MTRClusterCarbonMonoxideConcentrationMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterCarbonMonoxideConcentrationMeasurement").unwrap(), alloc)
        })
    }
}
impl IMTRGenericCluster for MTRClusterCarbonMonoxideConcentrationMeasurement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterCarbonMonoxideConcentrationMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterCarbonMonoxideConcentrationMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterCarbonMonoxideConcentrationMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterCarbonMonoxideConcentrationMeasurement(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterCarbonMonoxideConcentrationMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRClusterCarbonMonoxideConcentrationMeasurement {}
impl INSObject for MTRClusterCarbonMonoxideConcentrationMeasurement {}
impl PNSObject for MTRClusterCarbonMonoxideConcentrationMeasurement {}
impl IMTRClusterCarbonMonoxideConcentrationMeasurement
    for MTRClusterCarbonMonoxideConcentrationMeasurement
{
}
pub trait IMTRClusterCarbonMonoxideConcentrationMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMinMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMaxMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithParams : params)
    }
    unsafe fn readAttributePeakMeasuredValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWithParams : params)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWindowWithParams : params)
    }
    unsafe fn readAttributeAverageMeasuredValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWindowWithParams : params)
    }
    unsafe fn readAttributeUncertaintyWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUncertaintyWithParams : params)
    }
    unsafe fn readAttributeMeasurementUnitWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementUnitWithParams : params)
    }
    unsafe fn readAttributeMeasurementMediumWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementMediumWithParams : params)
    }
    unsafe fn readAttributeLevelValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelValueWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterCarbonMonoxideConcentrationMeasurement").unwrap(), new)
    }
}
impl MTRClusterCarbonMonoxideConcentrationMeasurement_Availability
    for MTRClusterCarbonMonoxideConcentrationMeasurement
{
}
pub trait MTRClusterCarbonMonoxideConcentrationMeasurement_Availability:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterCarbonDioxideConcentrationMeasurement(pub id);
impl std::ops::Deref for MTRClusterCarbonDioxideConcentrationMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterCarbonDioxideConcentrationMeasurement {}
impl MTRClusterCarbonDioxideConcentrationMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterCarbonDioxideConcentrationMeasurement").unwrap(), alloc)
        })
    }
}
impl IMTRGenericCluster for MTRClusterCarbonDioxideConcentrationMeasurement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterCarbonDioxideConcentrationMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterCarbonDioxideConcentrationMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterCarbonDioxideConcentrationMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterCarbonDioxideConcentrationMeasurement(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterCarbonDioxideConcentrationMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRClusterCarbonDioxideConcentrationMeasurement {}
impl INSObject for MTRClusterCarbonDioxideConcentrationMeasurement {}
impl PNSObject for MTRClusterCarbonDioxideConcentrationMeasurement {}
impl IMTRClusterCarbonDioxideConcentrationMeasurement
    for MTRClusterCarbonDioxideConcentrationMeasurement
{
}
pub trait IMTRClusterCarbonDioxideConcentrationMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMinMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMaxMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithParams : params)
    }
    unsafe fn readAttributePeakMeasuredValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWithParams : params)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWindowWithParams : params)
    }
    unsafe fn readAttributeAverageMeasuredValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWindowWithParams : params)
    }
    unsafe fn readAttributeUncertaintyWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUncertaintyWithParams : params)
    }
    unsafe fn readAttributeMeasurementUnitWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementUnitWithParams : params)
    }
    unsafe fn readAttributeMeasurementMediumWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementMediumWithParams : params)
    }
    unsafe fn readAttributeLevelValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelValueWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterCarbonDioxideConcentrationMeasurement").unwrap(), new)
    }
}
impl MTRClusterCarbonDioxideConcentrationMeasurement_Availability
    for MTRClusterCarbonDioxideConcentrationMeasurement
{
}
pub trait MTRClusterCarbonDioxideConcentrationMeasurement_Availability:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterNitrogenDioxideConcentrationMeasurement(pub id);
impl std::ops::Deref for MTRClusterNitrogenDioxideConcentrationMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterNitrogenDioxideConcentrationMeasurement {}
impl MTRClusterNitrogenDioxideConcentrationMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterNitrogenDioxideConcentrationMeasurement").unwrap(), alloc)
        })
    }
}
impl IMTRGenericCluster for MTRClusterNitrogenDioxideConcentrationMeasurement {}
impl std::convert::TryFrom<MTRGenericCluster>
    for MTRClusterNitrogenDioxideConcentrationMeasurement
{
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterNitrogenDioxideConcentrationMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterNitrogenDioxideConcentrationMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterNitrogenDioxideConcentrationMeasurement(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterNitrogenDioxideConcentrationMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRClusterNitrogenDioxideConcentrationMeasurement {}
impl INSObject for MTRClusterNitrogenDioxideConcentrationMeasurement {}
impl PNSObject for MTRClusterNitrogenDioxideConcentrationMeasurement {}
impl IMTRClusterNitrogenDioxideConcentrationMeasurement
    for MTRClusterNitrogenDioxideConcentrationMeasurement
{
}
pub trait IMTRClusterNitrogenDioxideConcentrationMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMinMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMaxMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithParams : params)
    }
    unsafe fn readAttributePeakMeasuredValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWithParams : params)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWindowWithParams : params)
    }
    unsafe fn readAttributeAverageMeasuredValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWindowWithParams : params)
    }
    unsafe fn readAttributeUncertaintyWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUncertaintyWithParams : params)
    }
    unsafe fn readAttributeMeasurementUnitWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementUnitWithParams : params)
    }
    unsafe fn readAttributeMeasurementMediumWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementMediumWithParams : params)
    }
    unsafe fn readAttributeLevelValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelValueWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterNitrogenDioxideConcentrationMeasurement").unwrap(), new)
    }
}
impl MTRClusterNitrogenDioxideConcentrationMeasurement_Availability
    for MTRClusterNitrogenDioxideConcentrationMeasurement
{
}
pub trait MTRClusterNitrogenDioxideConcentrationMeasurement_Availability:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterOzoneConcentrationMeasurement(pub id);
impl std::ops::Deref for MTRClusterOzoneConcentrationMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterOzoneConcentrationMeasurement {}
impl MTRClusterOzoneConcentrationMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOzoneConcentrationMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterOzoneConcentrationMeasurement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterOzoneConcentrationMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterOzoneConcentrationMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterOzoneConcentrationMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterOzoneConcentrationMeasurement(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterOzoneConcentrationMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRClusterOzoneConcentrationMeasurement {}
impl INSObject for MTRClusterOzoneConcentrationMeasurement {}
impl PNSObject for MTRClusterOzoneConcentrationMeasurement {}
impl IMTRClusterOzoneConcentrationMeasurement for MTRClusterOzoneConcentrationMeasurement {}
pub trait IMTRClusterOzoneConcentrationMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMinMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMaxMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithParams : params)
    }
    unsafe fn readAttributePeakMeasuredValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWithParams : params)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWindowWithParams : params)
    }
    unsafe fn readAttributeAverageMeasuredValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWindowWithParams : params)
    }
    unsafe fn readAttributeUncertaintyWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUncertaintyWithParams : params)
    }
    unsafe fn readAttributeMeasurementUnitWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementUnitWithParams : params)
    }
    unsafe fn readAttributeMeasurementMediumWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementMediumWithParams : params)
    }
    unsafe fn readAttributeLevelValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelValueWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOzoneConcentrationMeasurement").unwrap(), new)
    }
}
impl MTRClusterOzoneConcentrationMeasurement_Availability
    for MTRClusterOzoneConcentrationMeasurement
{
}
pub trait MTRClusterOzoneConcentrationMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterPM25ConcentrationMeasurement(pub id);
impl std::ops::Deref for MTRClusterPM25ConcentrationMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterPM25ConcentrationMeasurement {}
impl MTRClusterPM25ConcentrationMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPM25ConcentrationMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterPM25ConcentrationMeasurement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterPM25ConcentrationMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterPM25ConcentrationMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterPM25ConcentrationMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterPM25ConcentrationMeasurement(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterPM25ConcentrationMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRClusterPM25ConcentrationMeasurement {}
impl INSObject for MTRClusterPM25ConcentrationMeasurement {}
impl PNSObject for MTRClusterPM25ConcentrationMeasurement {}
impl IMTRClusterPM25ConcentrationMeasurement for MTRClusterPM25ConcentrationMeasurement {}
pub trait IMTRClusterPM25ConcentrationMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMinMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMaxMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithParams : params)
    }
    unsafe fn readAttributePeakMeasuredValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWithParams : params)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWindowWithParams : params)
    }
    unsafe fn readAttributeAverageMeasuredValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWindowWithParams : params)
    }
    unsafe fn readAttributeUncertaintyWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUncertaintyWithParams : params)
    }
    unsafe fn readAttributeMeasurementUnitWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementUnitWithParams : params)
    }
    unsafe fn readAttributeMeasurementMediumWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementMediumWithParams : params)
    }
    unsafe fn readAttributeLevelValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelValueWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPM25ConcentrationMeasurement").unwrap(), new)
    }
}
impl MTRClusterPM25ConcentrationMeasurement_Availability
    for MTRClusterPM25ConcentrationMeasurement
{
}
pub trait MTRClusterPM25ConcentrationMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterFormaldehydeConcentrationMeasurement(pub id);
impl std::ops::Deref for MTRClusterFormaldehydeConcentrationMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterFormaldehydeConcentrationMeasurement {}
impl MTRClusterFormaldehydeConcentrationMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterFormaldehydeConcentrationMeasurement").unwrap(), alloc)
        })
    }
}
impl IMTRGenericCluster for MTRClusterFormaldehydeConcentrationMeasurement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterFormaldehydeConcentrationMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterFormaldehydeConcentrationMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterFormaldehydeConcentrationMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterFormaldehydeConcentrationMeasurement(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterFormaldehydeConcentrationMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRClusterFormaldehydeConcentrationMeasurement {}
impl INSObject for MTRClusterFormaldehydeConcentrationMeasurement {}
impl PNSObject for MTRClusterFormaldehydeConcentrationMeasurement {}
impl IMTRClusterFormaldehydeConcentrationMeasurement
    for MTRClusterFormaldehydeConcentrationMeasurement
{
}
pub trait IMTRClusterFormaldehydeConcentrationMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMinMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMaxMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithParams : params)
    }
    unsafe fn readAttributePeakMeasuredValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWithParams : params)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWindowWithParams : params)
    }
    unsafe fn readAttributeAverageMeasuredValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWindowWithParams : params)
    }
    unsafe fn readAttributeUncertaintyWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUncertaintyWithParams : params)
    }
    unsafe fn readAttributeMeasurementUnitWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementUnitWithParams : params)
    }
    unsafe fn readAttributeMeasurementMediumWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementMediumWithParams : params)
    }
    unsafe fn readAttributeLevelValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelValueWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterFormaldehydeConcentrationMeasurement").unwrap(), new)
    }
}
impl MTRClusterFormaldehydeConcentrationMeasurement_Availability
    for MTRClusterFormaldehydeConcentrationMeasurement
{
}
pub trait MTRClusterFormaldehydeConcentrationMeasurement_Availability:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterPM1ConcentrationMeasurement(pub id);
impl std::ops::Deref for MTRClusterPM1ConcentrationMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterPM1ConcentrationMeasurement {}
impl MTRClusterPM1ConcentrationMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPM1ConcentrationMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterPM1ConcentrationMeasurement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterPM1ConcentrationMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterPM1ConcentrationMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterPM1ConcentrationMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterPM1ConcentrationMeasurement(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterPM1ConcentrationMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRClusterPM1ConcentrationMeasurement {}
impl INSObject for MTRClusterPM1ConcentrationMeasurement {}
impl PNSObject for MTRClusterPM1ConcentrationMeasurement {}
impl IMTRClusterPM1ConcentrationMeasurement for MTRClusterPM1ConcentrationMeasurement {}
pub trait IMTRClusterPM1ConcentrationMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMinMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMaxMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithParams : params)
    }
    unsafe fn readAttributePeakMeasuredValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWithParams : params)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWindowWithParams : params)
    }
    unsafe fn readAttributeAverageMeasuredValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWindowWithParams : params)
    }
    unsafe fn readAttributeUncertaintyWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUncertaintyWithParams : params)
    }
    unsafe fn readAttributeMeasurementUnitWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementUnitWithParams : params)
    }
    unsafe fn readAttributeMeasurementMediumWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementMediumWithParams : params)
    }
    unsafe fn readAttributeLevelValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelValueWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPM1ConcentrationMeasurement").unwrap(), new)
    }
}
impl MTRClusterPM1ConcentrationMeasurement_Availability for MTRClusterPM1ConcentrationMeasurement {}
pub trait MTRClusterPM1ConcentrationMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterPM10ConcentrationMeasurement(pub id);
impl std::ops::Deref for MTRClusterPM10ConcentrationMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterPM10ConcentrationMeasurement {}
impl MTRClusterPM10ConcentrationMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPM10ConcentrationMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterPM10ConcentrationMeasurement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterPM10ConcentrationMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterPM10ConcentrationMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterPM10ConcentrationMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterPM10ConcentrationMeasurement(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterPM10ConcentrationMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRClusterPM10ConcentrationMeasurement {}
impl INSObject for MTRClusterPM10ConcentrationMeasurement {}
impl PNSObject for MTRClusterPM10ConcentrationMeasurement {}
impl IMTRClusterPM10ConcentrationMeasurement for MTRClusterPM10ConcentrationMeasurement {}
pub trait IMTRClusterPM10ConcentrationMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMinMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMaxMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithParams : params)
    }
    unsafe fn readAttributePeakMeasuredValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWithParams : params)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWindowWithParams : params)
    }
    unsafe fn readAttributeAverageMeasuredValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWindowWithParams : params)
    }
    unsafe fn readAttributeUncertaintyWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUncertaintyWithParams : params)
    }
    unsafe fn readAttributeMeasurementUnitWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementUnitWithParams : params)
    }
    unsafe fn readAttributeMeasurementMediumWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementMediumWithParams : params)
    }
    unsafe fn readAttributeLevelValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelValueWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPM10ConcentrationMeasurement").unwrap(), new)
    }
}
impl MTRClusterPM10ConcentrationMeasurement_Availability
    for MTRClusterPM10ConcentrationMeasurement
{
}
pub trait MTRClusterPM10ConcentrationMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement(pub id);
impl std::ops::Deref for MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement {}
impl MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap(), alloc)
        })
    }
}
impl IMTRGenericCluster for MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement {}
impl std::convert::TryFrom<MTRGenericCluster>
    for MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement
{
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement {}
impl INSObject for MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement {}
impl PNSObject for MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement {}
impl IMTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement
    for MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement
{
}
pub trait IMTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement:
    Sized + std::ops::Deref
{
    unsafe fn readAttributeMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMinMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMaxMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithParams : params)
    }
    unsafe fn readAttributePeakMeasuredValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWithParams : params)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWindowWithParams : params)
    }
    unsafe fn readAttributeAverageMeasuredValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWindowWithParams : params)
    }
    unsafe fn readAttributeUncertaintyWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUncertaintyWithParams : params)
    }
    unsafe fn readAttributeMeasurementUnitWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementUnitWithParams : params)
    }
    unsafe fn readAttributeMeasurementMediumWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementMediumWithParams : params)
    }
    unsafe fn readAttributeLevelValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelValueWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement").unwrap(), new)
    }
}
impl MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement_Availability
    for MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement
{
}
pub trait MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement_Availability:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterRadonConcentrationMeasurement(pub id);
impl std::ops::Deref for MTRClusterRadonConcentrationMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterRadonConcentrationMeasurement {}
impl MTRClusterRadonConcentrationMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterRadonConcentrationMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterRadonConcentrationMeasurement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterRadonConcentrationMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterRadonConcentrationMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterRadonConcentrationMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterRadonConcentrationMeasurement(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterRadonConcentrationMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRClusterRadonConcentrationMeasurement {}
impl INSObject for MTRClusterRadonConcentrationMeasurement {}
impl PNSObject for MTRClusterRadonConcentrationMeasurement {}
impl IMTRClusterRadonConcentrationMeasurement for MTRClusterRadonConcentrationMeasurement {}
pub trait IMTRClusterRadonConcentrationMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMinMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeMaxMeasuredValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxMeasuredValueWithParams : params)
    }
    unsafe fn readAttributePeakMeasuredValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWithParams : params)
    }
    unsafe fn readAttributePeakMeasuredValueWindowWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePeakMeasuredValueWindowWithParams : params)
    }
    unsafe fn readAttributeAverageMeasuredValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeAverageMeasuredValueWindowWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageMeasuredValueWindowWithParams : params)
    }
    unsafe fn readAttributeUncertaintyWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUncertaintyWithParams : params)
    }
    unsafe fn readAttributeMeasurementUnitWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementUnitWithParams : params)
    }
    unsafe fn readAttributeMeasurementMediumWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementMediumWithParams : params)
    }
    unsafe fn readAttributeLevelValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLevelValueWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterRadonConcentrationMeasurement").unwrap(), new)
    }
}
impl MTRClusterRadonConcentrationMeasurement_Availability
    for MTRClusterRadonConcentrationMeasurement
{
}
pub trait MTRClusterRadonConcentrationMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterSoilMeasurement(pub id);
impl std::ops::Deref for MTRClusterSoilMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterSoilMeasurement {}
impl MTRClusterSoilMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterSoilMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterSoilMeasurement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterSoilMeasurement {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterSoilMeasurement, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterSoilMeasurement").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterSoilMeasurement(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterSoilMeasurement")
        }
    }
}
impl IMTRCluster for MTRClusterSoilMeasurement {}
impl INSObject for MTRClusterSoilMeasurement {}
impl PNSObject for MTRClusterSoilMeasurement {}
impl IMTRClusterSoilMeasurement for MTRClusterSoilMeasurement {}
pub trait IMTRClusterSoilMeasurement: Sized + std::ops::Deref {
    unsafe fn readAttributeSoilMoistureMeasurementLimitsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoilMoistureMeasurementLimitsWithParams : params)
    }
    unsafe fn readAttributeSoilMoistureMeasuredValueWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoilMoistureMeasuredValueWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterSoilMeasurement").unwrap(), new)
    }
}
impl MTRClusterSoilMeasurement_Availability for MTRClusterSoilMeasurement {}
pub trait MTRClusterSoilMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterWiFiNetworkManagement(pub id);
impl std::ops::Deref for MTRClusterWiFiNetworkManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterWiFiNetworkManagement {}
impl MTRClusterWiFiNetworkManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterWiFiNetworkManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterWiFiNetworkManagement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterWiFiNetworkManagement {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterWiFiNetworkManagement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterWiFiNetworkManagement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterWiFiNetworkManagement(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterWiFiNetworkManagement")
        }
    }
}
impl IMTRCluster for MTRClusterWiFiNetworkManagement {}
impl INSObject for MTRClusterWiFiNetworkManagement {}
impl PNSObject for MTRClusterWiFiNetworkManagement {}
impl IMTRClusterWiFiNetworkManagement for MTRClusterWiFiNetworkManagement {}
pub trait IMTRClusterWiFiNetworkManagement: Sized + std::ops::Deref {
    unsafe fn networkPassphraseRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRWiFiNetworkManagementClusterNetworkPassphraseRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, networkPassphraseRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn networkPassphraseRequestWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, networkPassphraseRequestWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeSSIDWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSSIDWithParams : params)
    }
    unsafe fn readAttributePassphraseSurrogateWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePassphraseSurrogateWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterWiFiNetworkManagement").unwrap(), new)
    }
}
impl MTRClusterWiFiNetworkManagement_Availability for MTRClusterWiFiNetworkManagement {}
pub trait MTRClusterWiFiNetworkManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterThreadBorderRouterManagement(pub id);
impl std::ops::Deref for MTRClusterThreadBorderRouterManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterThreadBorderRouterManagement {}
impl MTRClusterThreadBorderRouterManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterThreadBorderRouterManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterThreadBorderRouterManagement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterThreadBorderRouterManagement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterThreadBorderRouterManagement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterThreadBorderRouterManagement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterThreadBorderRouterManagement(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterThreadBorderRouterManagement" ,)
        }
    }
}
impl IMTRCluster for MTRClusterThreadBorderRouterManagement {}
impl INSObject for MTRClusterThreadBorderRouterManagement {}
impl PNSObject for MTRClusterThreadBorderRouterManagement {}
impl IMTRClusterThreadBorderRouterManagement for MTRClusterThreadBorderRouterManagement {}
pub trait IMTRClusterThreadBorderRouterManagement: Sized + std::ops::Deref {
    unsafe fn getActiveDatasetRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRThreadBorderRouterManagementClusterGetActiveDatasetRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getActiveDatasetRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn getActiveDatasetRequestWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getActiveDatasetRequestWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn getPendingDatasetRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRThreadBorderRouterManagementClusterGetPendingDatasetRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getPendingDatasetRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn getPendingDatasetRequestWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getPendingDatasetRequestWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setActiveDatasetRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRThreadBorderRouterManagementClusterSetActiveDatasetRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActiveDatasetRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setPendingDatasetRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRThreadBorderRouterManagementClusterSetPendingDatasetRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPendingDatasetRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeBorderRouterNameWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBorderRouterNameWithParams : params)
    }
    unsafe fn readAttributeBorderAgentIDWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBorderAgentIDWithParams : params)
    }
    unsafe fn readAttributeThreadVersionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThreadVersionWithParams : params)
    }
    unsafe fn readAttributeInterfaceEnabledWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInterfaceEnabledWithParams : params)
    }
    unsafe fn readAttributeActiveDatasetTimestampWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveDatasetTimestampWithParams : params)
    }
    unsafe fn readAttributePendingDatasetTimestampWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePendingDatasetTimestampWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterThreadBorderRouterManagement").unwrap(), new)
    }
}
impl MTRClusterThreadBorderRouterManagement_Availability
    for MTRClusterThreadBorderRouterManagement
{
}
pub trait MTRClusterThreadBorderRouterManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterThreadNetworkDirectory(pub id);
impl std::ops::Deref for MTRClusterThreadNetworkDirectory {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterThreadNetworkDirectory {}
impl MTRClusterThreadNetworkDirectory {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterThreadNetworkDirectory").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterThreadNetworkDirectory {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterThreadNetworkDirectory {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterThreadNetworkDirectory, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterThreadNetworkDirectory").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterThreadNetworkDirectory(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterThreadNetworkDirectory")
        }
    }
}
impl IMTRCluster for MTRClusterThreadNetworkDirectory {}
impl INSObject for MTRClusterThreadNetworkDirectory {}
impl PNSObject for MTRClusterThreadNetworkDirectory {}
impl IMTRClusterThreadNetworkDirectory for MTRClusterThreadNetworkDirectory {}
pub trait IMTRClusterThreadNetworkDirectory: Sized + std::ops::Deref {
    unsafe fn addNetworkWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRThreadNetworkDirectoryClusterAddNetworkParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addNetworkWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn removeNetworkWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRThreadNetworkDirectoryClusterRemoveNetworkParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeNetworkWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn getOperationalDatasetWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRThreadNetworkDirectoryClusterGetOperationalDatasetParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getOperationalDatasetWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributePreferredExtendedPanIDWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePreferredExtendedPanIDWithParams : params)
    }
    unsafe fn writeAttributePreferredExtendedPanIDWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePreferredExtendedPanIDWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributePreferredExtendedPanIDWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePreferredExtendedPanIDWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeThreadNetworksWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThreadNetworksWithParams : params)
    }
    unsafe fn readAttributeThreadNetworkTableSizeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeThreadNetworkTableSizeWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterThreadNetworkDirectory").unwrap(), new)
    }
}
impl MTRClusterThreadNetworkDirectory_Availability for MTRClusterThreadNetworkDirectory {}
pub trait MTRClusterThreadNetworkDirectory_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterWakeOnLAN(pub id);
impl std::ops::Deref for MTRClusterWakeOnLAN {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterWakeOnLAN {}
impl MTRClusterWakeOnLAN {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterWakeOnLAN").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterWakeOnLAN {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterWakeOnLAN {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterWakeOnLAN, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterWakeOnLAN").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterWakeOnLAN(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterWakeOnLAN")
        }
    }
}
impl IMTRCluster for MTRClusterWakeOnLAN {}
impl INSObject for MTRClusterWakeOnLAN {}
impl PNSObject for MTRClusterWakeOnLAN {}
impl IMTRClusterWakeOnLAN for MTRClusterWakeOnLAN {}
pub trait IMTRClusterWakeOnLAN: Sized + std::ops::Deref {
    unsafe fn readAttributeMACAddressWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMACAddressWithParams : params)
    }
    unsafe fn readAttributeLinkLocalAddressWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLinkLocalAddressWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterWakeOnLAN").unwrap(), new)
    }
}
impl MTRClusterWakeOnLAN_Availability for MTRClusterWakeOnLAN {}
pub trait MTRClusterWakeOnLAN_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterChannel(pub id);
impl std::ops::Deref for MTRClusterChannel {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterChannel {}
impl MTRClusterChannel {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterChannel").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterChannel {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterChannel {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterChannel, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterChannel").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterChannel(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterChannel")
        }
    }
}
impl IMTRCluster for MTRClusterChannel {}
impl INSObject for MTRClusterChannel {}
impl PNSObject for MTRClusterChannel {}
impl IMTRClusterChannel for MTRClusterChannel {}
pub trait IMTRClusterChannel: Sized + std::ops::Deref {
    unsafe fn changeChannelWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRChannelClusterChangeChannelParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeChannelWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn changeChannelByNumberWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRChannelClusterChangeChannelByNumberParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeChannelByNumberWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn skipChannelWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRChannelClusterSkipChannelParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, skipChannelWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn getProgramGuideWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRChannelClusterGetProgramGuideParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getProgramGuideWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn getProgramGuideWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getProgramGuideWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn recordProgramWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRChannelClusterRecordProgramParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, recordProgramWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn cancelRecordProgramWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRChannelClusterCancelRecordProgramParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelRecordProgramWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeChannelListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeChannelListWithParams : params)
    }
    unsafe fn readAttributeLineupWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLineupWithParams : params)
    }
    unsafe fn readAttributeCurrentChannelWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentChannelWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterChannel").unwrap(), new)
    }
}
impl MTRClusterChannel_Availability for MTRClusterChannel {}
pub trait MTRClusterChannel_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterTargetNavigator(pub id);
impl std::ops::Deref for MTRClusterTargetNavigator {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterTargetNavigator {}
impl MTRClusterTargetNavigator {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterTargetNavigator").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterTargetNavigator {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterTargetNavigator {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterTargetNavigator, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterTargetNavigator").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterTargetNavigator(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterTargetNavigator")
        }
    }
}
impl IMTRCluster for MTRClusterTargetNavigator {}
impl INSObject for MTRClusterTargetNavigator {}
impl PNSObject for MTRClusterTargetNavigator {}
impl IMTRClusterTargetNavigator for MTRClusterTargetNavigator {}
pub trait IMTRClusterTargetNavigator: Sized + std::ops::Deref {
    unsafe fn navigateTargetWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTargetNavigatorClusterNavigateTargetParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, navigateTargetWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeTargetListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTargetListWithParams : params)
    }
    unsafe fn readAttributeCurrentTargetWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentTargetWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterTargetNavigator").unwrap(), new)
    }
}
impl MTRClusterTargetNavigator_Availability for MTRClusterTargetNavigator {}
pub trait MTRClusterTargetNavigator_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterMediaPlayback(pub id);
impl std::ops::Deref for MTRClusterMediaPlayback {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterMediaPlayback {}
impl MTRClusterMediaPlayback {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterMediaPlayback").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterMediaPlayback {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterMediaPlayback {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterMediaPlayback, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterMediaPlayback").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterMediaPlayback(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterMediaPlayback")
        }
    }
}
impl IMTRCluster for MTRClusterMediaPlayback {}
impl INSObject for MTRClusterMediaPlayback {}
impl PNSObject for MTRClusterMediaPlayback {}
impl IMTRClusterMediaPlayback for MTRClusterMediaPlayback {}
pub trait IMTRClusterMediaPlayback: Sized + std::ops::Deref {
    unsafe fn playWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMediaPlaybackClusterPlayParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, playWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn playWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, playWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn pauseWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMediaPlaybackClusterPauseParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn pauseWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stopWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMediaPlaybackClusterStopParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stopWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn startOverWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMediaPlaybackClusterStartOverParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startOverWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn startOverWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startOverWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn previousWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMediaPlaybackClusterPreviousParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, previousWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn previousWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, previousWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn nextWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMediaPlaybackClusterNextParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, nextWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn nextWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, nextWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn rewindWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMediaPlaybackClusterRewindParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rewindWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn rewindWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rewindWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn fastForwardWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMediaPlaybackClusterFastForwardParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fastForwardWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn fastForwardWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fastForwardWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn skipForwardWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMediaPlaybackClusterSkipForwardParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, skipForwardWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn skipBackwardWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMediaPlaybackClusterSkipBackwardParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, skipBackwardWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn seekWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMediaPlaybackClusterSeekParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, seekWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn activateAudioTrackWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMediaPlaybackClusterActivateAudioTrackParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, activateAudioTrackWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn activateTextTrackWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMediaPlaybackClusterActivateTextTrackParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, activateTextTrackWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn deactivateTextTrackWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMediaPlaybackClusterDeactivateTextTrackParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deactivateTextTrackWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn deactivateTextTrackWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deactivateTextTrackWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeCurrentStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentStateWithParams : params)
    }
    unsafe fn readAttributeStartTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStartTimeWithParams : params)
    }
    unsafe fn readAttributeDurationWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDurationWithParams : params)
    }
    unsafe fn readAttributeSampledPositionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSampledPositionWithParams : params)
    }
    unsafe fn readAttributePlaybackSpeedWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePlaybackSpeedWithParams : params)
    }
    unsafe fn readAttributeSeekRangeEndWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSeekRangeEndWithParams : params)
    }
    unsafe fn readAttributeSeekRangeStartWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSeekRangeStartWithParams : params)
    }
    unsafe fn readAttributeActiveAudioTrackWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveAudioTrackWithParams : params)
    }
    unsafe fn readAttributeAvailableAudioTracksWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAvailableAudioTracksWithParams : params)
    }
    unsafe fn readAttributeActiveTextTrackWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveTextTrackWithParams : params)
    }
    unsafe fn readAttributeAvailableTextTracksWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAvailableTextTracksWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterMediaPlayback").unwrap(), new)
    }
}
impl MTRClusterMediaPlayback_Availability for MTRClusterMediaPlayback {}
pub trait MTRClusterMediaPlayback_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterMediaInput(pub id);
impl std::ops::Deref for MTRClusterMediaInput {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterMediaInput {}
impl MTRClusterMediaInput {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterMediaInput").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterMediaInput {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterMediaInput {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterMediaInput, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterMediaInput").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterMediaInput(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterMediaInput")
        }
    }
}
impl IMTRCluster for MTRClusterMediaInput {}
impl INSObject for MTRClusterMediaInput {}
impl PNSObject for MTRClusterMediaInput {}
impl IMTRClusterMediaInput for MTRClusterMediaInput {}
pub trait IMTRClusterMediaInput: Sized + std::ops::Deref {
    unsafe fn selectInputWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMediaInputClusterSelectInputParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, selectInputWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn showInputStatusWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMediaInputClusterShowInputStatusParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, showInputStatusWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn showInputStatusWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, showInputStatusWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn hideInputStatusWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMediaInputClusterHideInputStatusParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hideInputStatusWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn hideInputStatusWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hideInputStatusWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn renameInputWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRMediaInputClusterRenameInputParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, renameInputWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeInputListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInputListWithParams : params)
    }
    unsafe fn readAttributeCurrentInputWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentInputWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterMediaInput").unwrap(), new)
    }
}
impl MTRClusterMediaInput_Availability for MTRClusterMediaInput {}
pub trait MTRClusterMediaInput_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterLowPower(pub id);
impl std::ops::Deref for MTRClusterLowPower {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterLowPower {}
impl MTRClusterLowPower {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterLowPower").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterLowPower {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterLowPower {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterLowPower, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterLowPower").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterLowPower(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterLowPower")
        }
    }
}
impl IMTRCluster for MTRClusterLowPower {}
impl INSObject for MTRClusterLowPower {}
impl PNSObject for MTRClusterLowPower {}
impl IMTRClusterLowPower for MTRClusterLowPower {}
pub trait IMTRClusterLowPower: Sized + std::ops::Deref {
    unsafe fn sleepWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRLowPowerClusterSleepParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sleepWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn sleepWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sleepWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterLowPower").unwrap(), new)
    }
}
impl MTRClusterLowPower_Availability for MTRClusterLowPower {}
pub trait MTRClusterLowPower_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterKeypadInput(pub id);
impl std::ops::Deref for MTRClusterKeypadInput {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterKeypadInput {}
impl MTRClusterKeypadInput {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterKeypadInput").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterKeypadInput {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterKeypadInput {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterKeypadInput, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterKeypadInput").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterKeypadInput(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterKeypadInput")
        }
    }
}
impl IMTRCluster for MTRClusterKeypadInput {}
impl INSObject for MTRClusterKeypadInput {}
impl PNSObject for MTRClusterKeypadInput {}
impl IMTRClusterKeypadInput for MTRClusterKeypadInput {}
pub trait IMTRClusterKeypadInput: Sized + std::ops::Deref {
    unsafe fn sendKeyWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRKeypadInputClusterSendKeyParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sendKeyWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterKeypadInput").unwrap(), new)
    }
}
impl MTRClusterKeypadInput_Availability for MTRClusterKeypadInput {}
pub trait MTRClusterKeypadInput_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterContentLauncher(pub id);
impl std::ops::Deref for MTRClusterContentLauncher {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterContentLauncher {}
impl MTRClusterContentLauncher {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterContentLauncher").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterContentLauncher {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterContentLauncher {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterContentLauncher, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterContentLauncher").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterContentLauncher(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterContentLauncher")
        }
    }
}
impl IMTRCluster for MTRClusterContentLauncher {}
impl INSObject for MTRClusterContentLauncher {}
impl PNSObject for MTRClusterContentLauncher {}
impl IMTRClusterContentLauncher for MTRClusterContentLauncher {}
pub trait IMTRClusterContentLauncher: Sized + std::ops::Deref {
    unsafe fn launchContentWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRContentLauncherClusterLaunchContentParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, launchContentWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn launchURLWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRContentLauncherClusterLaunchURLParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, launchURLWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeAcceptHeaderWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptHeaderWithParams : params)
    }
    unsafe fn readAttributeSupportedStreamingProtocolsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedStreamingProtocolsWithParams : params)
    }
    unsafe fn writeAttributeSupportedStreamingProtocolsWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSupportedStreamingProtocolsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeSupportedStreamingProtocolsWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSupportedStreamingProtocolsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterContentLauncher").unwrap(), new)
    }
}
impl MTRClusterContentLauncher_Availability for MTRClusterContentLauncher {}
pub trait MTRClusterContentLauncher_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterAudioOutput(pub id);
impl std::ops::Deref for MTRClusterAudioOutput {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterAudioOutput {}
impl MTRClusterAudioOutput {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterAudioOutput").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterAudioOutput {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterAudioOutput {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterAudioOutput, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterAudioOutput").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterAudioOutput(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterAudioOutput")
        }
    }
}
impl IMTRCluster for MTRClusterAudioOutput {}
impl INSObject for MTRClusterAudioOutput {}
impl PNSObject for MTRClusterAudioOutput {}
impl IMTRClusterAudioOutput for MTRClusterAudioOutput {}
pub trait IMTRClusterAudioOutput: Sized + std::ops::Deref {
    unsafe fn selectOutputWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRAudioOutputClusterSelectOutputParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, selectOutputWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn renameOutputWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRAudioOutputClusterRenameOutputParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, renameOutputWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeOutputListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOutputListWithParams : params)
    }
    unsafe fn readAttributeCurrentOutputWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentOutputWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterAudioOutput").unwrap(), new)
    }
}
impl MTRClusterAudioOutput_Availability for MTRClusterAudioOutput {}
pub trait MTRClusterAudioOutput_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterApplicationLauncher(pub id);
impl std::ops::Deref for MTRClusterApplicationLauncher {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterApplicationLauncher {}
impl MTRClusterApplicationLauncher {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterApplicationLauncher").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterApplicationLauncher {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterApplicationLauncher {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterApplicationLauncher, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterApplicationLauncher").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterApplicationLauncher(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterApplicationLauncher")
        }
    }
}
impl IMTRCluster for MTRClusterApplicationLauncher {}
impl INSObject for MTRClusterApplicationLauncher {}
impl PNSObject for MTRClusterApplicationLauncher {}
impl IMTRClusterApplicationLauncher for MTRClusterApplicationLauncher {}
pub trait IMTRClusterApplicationLauncher: Sized + std::ops::Deref {
    unsafe fn launchAppWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRApplicationLauncherClusterLaunchAppParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, launchAppWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn launchAppWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, launchAppWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stopAppWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRApplicationLauncherClusterStopAppParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopAppWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stopAppWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopAppWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn hideAppWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRApplicationLauncherClusterHideAppParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hideAppWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn hideAppWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hideAppWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeCatalogListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCatalogListWithParams : params)
    }
    unsafe fn readAttributeCurrentAppWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentAppWithParams : params)
    }
    unsafe fn writeAttributeCurrentAppWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCurrentAppWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeCurrentAppWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCurrentAppWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterApplicationLauncher").unwrap(), new)
    }
}
impl MTRClusterApplicationLauncher_Availability for MTRClusterApplicationLauncher {}
pub trait MTRClusterApplicationLauncher_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterApplicationBasic(pub id);
impl std::ops::Deref for MTRClusterApplicationBasic {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterApplicationBasic {}
impl MTRClusterApplicationBasic {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterApplicationBasic").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterApplicationBasic {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterApplicationBasic {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterApplicationBasic, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterApplicationBasic").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterApplicationBasic(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterApplicationBasic")
        }
    }
}
impl IMTRCluster for MTRClusterApplicationBasic {}
impl INSObject for MTRClusterApplicationBasic {}
impl PNSObject for MTRClusterApplicationBasic {}
impl IMTRClusterApplicationBasic for MTRClusterApplicationBasic {}
pub trait IMTRClusterApplicationBasic: Sized + std::ops::Deref {
    unsafe fn readAttributeVendorNameWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVendorNameWithParams : params)
    }
    unsafe fn readAttributeVendorIDWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVendorIDWithParams : params)
    }
    unsafe fn readAttributeApplicationNameWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApplicationNameWithParams : params)
    }
    unsafe fn readAttributeProductIDWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProductIDWithParams : params)
    }
    unsafe fn readAttributeApplicationWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApplicationWithParams : params)
    }
    unsafe fn readAttributeStatusWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStatusWithParams : params)
    }
    unsafe fn readAttributeApplicationVersionWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApplicationVersionWithParams : params)
    }
    unsafe fn readAttributeAllowedVendorListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAllowedVendorListWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterApplicationBasic").unwrap(), new)
    }
}
impl MTRClusterApplicationBasic_Availability for MTRClusterApplicationBasic {}
pub trait MTRClusterApplicationBasic_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterAccountLogin(pub id);
impl std::ops::Deref for MTRClusterAccountLogin {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterAccountLogin {}
impl MTRClusterAccountLogin {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterAccountLogin").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterAccountLogin {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterAccountLogin {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterAccountLogin, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterAccountLogin").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterAccountLogin(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterAccountLogin")
        }
    }
}
impl IMTRCluster for MTRClusterAccountLogin {}
impl INSObject for MTRClusterAccountLogin {}
impl PNSObject for MTRClusterAccountLogin {}
impl IMTRClusterAccountLogin for MTRClusterAccountLogin {}
pub trait IMTRClusterAccountLogin: Sized + std::ops::Deref {
    unsafe fn getSetupPINWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRAccountLoginClusterGetSetupPINParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getSetupPINWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn loginWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRAccountLoginClusterLoginParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, loginWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn logoutWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRAccountLoginClusterLogoutParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, logoutWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn logoutWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, logoutWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterAccountLogin").unwrap(), new)
    }
}
impl MTRClusterAccountLogin_Availability for MTRClusterAccountLogin {}
pub trait MTRClusterAccountLogin_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterContentControl(pub id);
impl std::ops::Deref for MTRClusterContentControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterContentControl {}
impl MTRClusterContentControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterContentControl").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterContentControl {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterContentControl {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterContentControl, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterContentControl").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterContentControl(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterContentControl")
        }
    }
}
impl IMTRCluster for MTRClusterContentControl {}
impl INSObject for MTRClusterContentControl {}
impl PNSObject for MTRClusterContentControl {}
impl IMTRClusterContentControl for MTRClusterContentControl {}
pub trait IMTRClusterContentControl: Sized + std::ops::Deref {
    unsafe fn updatePINWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRContentControlClusterUpdatePINParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updatePINWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn resetPINWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRContentControlClusterResetPINParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetPINWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn resetPINWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetPINWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn enableWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRContentControlClusterEnableParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enableWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn enableWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enableWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn disableWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRContentControlClusterDisableParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, disableWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn disableWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, disableWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn addBonusTimeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRContentControlClusterAddBonusTimeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addBonusTimeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn addBonusTimeWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addBonusTimeWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setScreenDailyTimeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRContentControlClusterSetScreenDailyTimeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setScreenDailyTimeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn blockUnratedContentWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRContentControlClusterBlockUnratedContentParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, blockUnratedContentWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn blockUnratedContentWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, blockUnratedContentWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn unblockUnratedContentWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRContentControlClusterUnblockUnratedContentParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unblockUnratedContentWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn unblockUnratedContentWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unblockUnratedContentWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setOnDemandRatingThresholdWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRContentControlClusterSetOnDemandRatingThresholdParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOnDemandRatingThresholdWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setScheduledContentRatingThresholdWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRContentControlClusterSetScheduledContentRatingThresholdParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setScheduledContentRatingThresholdWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeEnabledWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnabledWithParams : params)
    }
    unsafe fn readAttributeOnDemandRatingsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnDemandRatingsWithParams : params)
    }
    unsafe fn readAttributeOnDemandRatingThresholdWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOnDemandRatingThresholdWithParams : params)
    }
    unsafe fn readAttributeScheduledContentRatingsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScheduledContentRatingsWithParams : params)
    }
    unsafe fn readAttributeScheduledContentRatingThresholdWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScheduledContentRatingThresholdWithParams : params)
    }
    unsafe fn readAttributeScreenDailyTimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeScreenDailyTimeWithParams : params)
    }
    unsafe fn readAttributeRemainingScreenTimeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRemainingScreenTimeWithParams : params)
    }
    unsafe fn readAttributeBlockUnratedWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBlockUnratedWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterContentControl").unwrap(), new)
    }
}
impl MTRClusterContentControl_Availability for MTRClusterContentControl {}
pub trait MTRClusterContentControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterContentAppObserver(pub id);
impl std::ops::Deref for MTRClusterContentAppObserver {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterContentAppObserver {}
impl MTRClusterContentAppObserver {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterContentAppObserver").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterContentAppObserver {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterContentAppObserver {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterContentAppObserver, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterContentAppObserver").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterContentAppObserver(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterContentAppObserver")
        }
    }
}
impl IMTRCluster for MTRClusterContentAppObserver {}
impl INSObject for MTRClusterContentAppObserver {}
impl PNSObject for MTRClusterContentAppObserver {}
impl IMTRClusterContentAppObserver for MTRClusterContentAppObserver {}
pub trait IMTRClusterContentAppObserver: Sized + std::ops::Deref {
    unsafe fn contentAppMessageWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRContentAppObserverClusterContentAppMessageParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, contentAppMessageWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterContentAppObserver").unwrap(), new)
    }
}
impl MTRClusterContentAppObserver_Availability for MTRClusterContentAppObserver {}
pub trait MTRClusterContentAppObserver_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterZoneManagement(pub id);
impl std::ops::Deref for MTRClusterZoneManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterZoneManagement {}
impl MTRClusterZoneManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterZoneManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterZoneManagement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterZoneManagement {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterZoneManagement, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterZoneManagement").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterZoneManagement(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterZoneManagement")
        }
    }
}
impl IMTRCluster for MTRClusterZoneManagement {}
impl INSObject for MTRClusterZoneManagement {}
impl PNSObject for MTRClusterZoneManagement {}
impl IMTRClusterZoneManagement for MTRClusterZoneManagement {}
pub trait IMTRClusterZoneManagement: Sized + std::ops::Deref {
    unsafe fn createTwoDCartesianZoneWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRZoneManagementClusterCreateTwoDCartesianZoneParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, createTwoDCartesianZoneWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn updateTwoDCartesianZoneWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRZoneManagementClusterUpdateTwoDCartesianZoneParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateTwoDCartesianZoneWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn removeZoneWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRZoneManagementClusterRemoveZoneParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeZoneWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn createOrUpdateTriggerWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRZoneManagementClusterCreateOrUpdateTriggerParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, createOrUpdateTriggerWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn removeTriggerWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRZoneManagementClusterRemoveTriggerParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeTriggerWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeMaxUserDefinedZonesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxUserDefinedZonesWithParams : params)
    }
    unsafe fn readAttributeMaxZonesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxZonesWithParams : params)
    }
    unsafe fn readAttributeZonesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeZonesWithParams : params)
    }
    unsafe fn readAttributeTriggersWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTriggersWithParams : params)
    }
    unsafe fn readAttributeSensitivityMaxWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSensitivityMaxWithParams : params)
    }
    unsafe fn readAttributeSensitivityWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSensitivityWithParams : params)
    }
    unsafe fn writeAttributeSensitivityWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSensitivityWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeSensitivityWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSensitivityWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeTwoDCartesianMaxWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTwoDCartesianMaxWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterZoneManagement").unwrap(), new)
    }
}
impl MTRClusterZoneManagement_Availability for MTRClusterZoneManagement {}
pub trait MTRClusterZoneManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterCameraAVStreamManagement(pub id);
impl std::ops::Deref for MTRClusterCameraAVStreamManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterCameraAVStreamManagement {}
impl MTRClusterCameraAVStreamManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterCameraAVStreamManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterCameraAVStreamManagement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterCameraAVStreamManagement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterCameraAVStreamManagement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterCameraAVStreamManagement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterCameraAVStreamManagement(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterCameraAVStreamManagement")
        }
    }
}
impl IMTRCluster for MTRClusterCameraAVStreamManagement {}
impl INSObject for MTRClusterCameraAVStreamManagement {}
impl PNSObject for MTRClusterCameraAVStreamManagement {}
impl IMTRClusterCameraAVStreamManagement for MTRClusterCameraAVStreamManagement {}
pub trait IMTRClusterCameraAVStreamManagement: Sized + std::ops::Deref {
    unsafe fn audioStreamAllocateWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCameraAVStreamManagementClusterAudioStreamAllocateParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, audioStreamAllocateWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn audioStreamDeallocateWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCameraAVStreamManagementClusterAudioStreamDeallocateParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, audioStreamDeallocateWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn videoStreamAllocateWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCameraAVStreamManagementClusterVideoStreamAllocateParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, videoStreamAllocateWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn videoStreamModifyWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCameraAVStreamManagementClusterVideoStreamModifyParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, videoStreamModifyWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn videoStreamDeallocateWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCameraAVStreamManagementClusterVideoStreamDeallocateParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, videoStreamDeallocateWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn snapshotStreamAllocateWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCameraAVStreamManagementClusterSnapshotStreamAllocateParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, snapshotStreamAllocateWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn snapshotStreamModifyWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCameraAVStreamManagementClusterSnapshotStreamModifyParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, snapshotStreamModifyWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn snapshotStreamDeallocateWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCameraAVStreamManagementClusterSnapshotStreamDeallocateParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, snapshotStreamDeallocateWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setStreamPrioritiesWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCameraAVStreamManagementClusterSetStreamPrioritiesParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStreamPrioritiesWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn captureSnapshotWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCameraAVStreamManagementClusterCaptureSnapshotParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, captureSnapshotWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeMaxConcurrentEncodersWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxConcurrentEncodersWithParams : params)
    }
    unsafe fn readAttributeMaxEncodedPixelRateWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxEncodedPixelRateWithParams : params)
    }
    unsafe fn readAttributeVideoSensorParamsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVideoSensorParamsWithParams : params)
    }
    unsafe fn readAttributeNightVisionUsesInfraredWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNightVisionUsesInfraredWithParams : params)
    }
    unsafe fn readAttributeMinViewportResolutionWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMinViewportResolutionWithParams : params)
    }
    unsafe fn readAttributeRateDistortionTradeOffPointsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRateDistortionTradeOffPointsWithParams : params)
    }
    unsafe fn readAttributeMaxContentBufferSizeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxContentBufferSizeWithParams : params)
    }
    unsafe fn readAttributeMicrophoneCapabilitiesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMicrophoneCapabilitiesWithParams : params)
    }
    unsafe fn readAttributeSpeakerCapabilitiesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeakerCapabilitiesWithParams : params)
    }
    unsafe fn readAttributeTwoWayTalkSupportWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTwoWayTalkSupportWithParams : params)
    }
    unsafe fn readAttributeSnapshotCapabilitiesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSnapshotCapabilitiesWithParams : params)
    }
    unsafe fn readAttributeMaxNetworkBandwidthWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxNetworkBandwidthWithParams : params)
    }
    unsafe fn readAttributeCurrentFrameRateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentFrameRateWithParams : params)
    }
    unsafe fn readAttributeHDRModeEnabledWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHDRModeEnabledWithParams : params)
    }
    unsafe fn writeAttributeHDRModeEnabledWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeHDRModeEnabledWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeHDRModeEnabledWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeHDRModeEnabledWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeSupportedStreamUsagesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedStreamUsagesWithParams : params)
    }
    unsafe fn readAttributeAllocatedVideoStreamsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAllocatedVideoStreamsWithParams : params)
    }
    unsafe fn readAttributeAllocatedAudioStreamsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAllocatedAudioStreamsWithParams : params)
    }
    unsafe fn readAttributeAllocatedSnapshotStreamsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAllocatedSnapshotStreamsWithParams : params)
    }
    unsafe fn readAttributeStreamUsagePrioritiesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStreamUsagePrioritiesWithParams : params)
    }
    unsafe fn readAttributeSoftRecordingPrivacyModeEnabledWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoftRecordingPrivacyModeEnabledWithParams : params)
    }
    unsafe fn writeAttributeSoftRecordingPrivacyModeEnabledWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSoftRecordingPrivacyModeEnabledWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeSoftRecordingPrivacyModeEnabledWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSoftRecordingPrivacyModeEnabledWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeSoftLivestreamPrivacyModeEnabledWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSoftLivestreamPrivacyModeEnabledWithParams : params)
    }
    unsafe fn writeAttributeSoftLivestreamPrivacyModeEnabledWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSoftLivestreamPrivacyModeEnabledWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeSoftLivestreamPrivacyModeEnabledWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSoftLivestreamPrivacyModeEnabledWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeHardPrivacyModeOnWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHardPrivacyModeOnWithParams : params)
    }
    unsafe fn readAttributeNightVisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNightVisionWithParams : params)
    }
    unsafe fn writeAttributeNightVisionWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNightVisionWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNightVisionWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNightVisionWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNightVisionIllumWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNightVisionIllumWithParams : params)
    }
    unsafe fn writeAttributeNightVisionIllumWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNightVisionIllumWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNightVisionIllumWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNightVisionIllumWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeViewportWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeViewportWithParams : params)
    }
    unsafe fn writeAttributeViewportWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeViewportWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeViewportWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeViewportWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeSpeakerMutedWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeakerMutedWithParams : params)
    }
    unsafe fn writeAttributeSpeakerMutedWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSpeakerMutedWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeSpeakerMutedWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSpeakerMutedWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeSpeakerVolumeLevelWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeakerVolumeLevelWithParams : params)
    }
    unsafe fn writeAttributeSpeakerVolumeLevelWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSpeakerVolumeLevelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeSpeakerVolumeLevelWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSpeakerVolumeLevelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeSpeakerMaxLevelWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeakerMaxLevelWithParams : params)
    }
    unsafe fn readAttributeSpeakerMinLevelWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSpeakerMinLevelWithParams : params)
    }
    unsafe fn readAttributeMicrophoneMutedWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMicrophoneMutedWithParams : params)
    }
    unsafe fn writeAttributeMicrophoneMutedWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMicrophoneMutedWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeMicrophoneMutedWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMicrophoneMutedWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeMicrophoneVolumeLevelWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMicrophoneVolumeLevelWithParams : params)
    }
    unsafe fn writeAttributeMicrophoneVolumeLevelWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMicrophoneVolumeLevelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeMicrophoneVolumeLevelWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMicrophoneVolumeLevelWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeMicrophoneMaxLevelWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMicrophoneMaxLevelWithParams : params)
    }
    unsafe fn readAttributeMicrophoneMinLevelWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMicrophoneMinLevelWithParams : params)
    }
    unsafe fn readAttributeMicrophoneAGCEnabledWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMicrophoneAGCEnabledWithParams : params)
    }
    unsafe fn writeAttributeMicrophoneAGCEnabledWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMicrophoneAGCEnabledWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeMicrophoneAGCEnabledWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMicrophoneAGCEnabledWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeImageRotationWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeImageRotationWithParams : params)
    }
    unsafe fn writeAttributeImageRotationWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeImageRotationWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeImageRotationWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeImageRotationWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeImageFlipHorizontalWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeImageFlipHorizontalWithParams : params)
    }
    unsafe fn writeAttributeImageFlipHorizontalWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeImageFlipHorizontalWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeImageFlipHorizontalWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeImageFlipHorizontalWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeImageFlipVerticalWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeImageFlipVerticalWithParams : params)
    }
    unsafe fn writeAttributeImageFlipVerticalWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeImageFlipVerticalWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeImageFlipVerticalWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeImageFlipVerticalWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeLocalVideoRecordingEnabledWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocalVideoRecordingEnabledWithParams : params)
    }
    unsafe fn writeAttributeLocalVideoRecordingEnabledWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalVideoRecordingEnabledWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLocalVideoRecordingEnabledWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalVideoRecordingEnabledWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeLocalSnapshotRecordingEnabledWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocalSnapshotRecordingEnabledWithParams : params)
    }
    unsafe fn writeAttributeLocalSnapshotRecordingEnabledWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalSnapshotRecordingEnabledWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLocalSnapshotRecordingEnabledWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLocalSnapshotRecordingEnabledWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeStatusLightEnabledWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStatusLightEnabledWithParams : params)
    }
    unsafe fn writeAttributeStatusLightEnabledWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStatusLightEnabledWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeStatusLightEnabledWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStatusLightEnabledWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeStatusLightBrightnessWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStatusLightBrightnessWithParams : params)
    }
    unsafe fn writeAttributeStatusLightBrightnessWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStatusLightBrightnessWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeStatusLightBrightnessWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStatusLightBrightnessWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterCameraAVStreamManagement").unwrap(), new)
    }
}
impl MTRClusterCameraAVStreamManagement_Availability for MTRClusterCameraAVStreamManagement {}
pub trait MTRClusterCameraAVStreamManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterCameraAVSettingsUserLevelManagement(pub id);
impl std::ops::Deref for MTRClusterCameraAVSettingsUserLevelManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterCameraAVSettingsUserLevelManagement {}
impl MTRClusterCameraAVSettingsUserLevelManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterCameraAVSettingsUserLevelManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterCameraAVSettingsUserLevelManagement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterCameraAVSettingsUserLevelManagement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterCameraAVSettingsUserLevelManagement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterCameraAVSettingsUserLevelManagement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterCameraAVSettingsUserLevelManagement(parent.0))
        } else {
            Err ("This MTRGenericCluster cannot be downcasted to MTRClusterCameraAVSettingsUserLevelManagement" ,)
        }
    }
}
impl IMTRCluster for MTRClusterCameraAVSettingsUserLevelManagement {}
impl INSObject for MTRClusterCameraAVSettingsUserLevelManagement {}
impl PNSObject for MTRClusterCameraAVSettingsUserLevelManagement {}
impl IMTRClusterCameraAVSettingsUserLevelManagement
    for MTRClusterCameraAVSettingsUserLevelManagement
{
}
pub trait IMTRClusterCameraAVSettingsUserLevelManagement: Sized + std::ops::Deref {
    unsafe fn MPTZSetPositionWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCameraAVSettingsUserLevelManagementClusterMPTZSetPositionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, MPTZSetPositionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn MPTZSetPositionWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, MPTZSetPositionWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn MPTZRelativeMoveWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCameraAVSettingsUserLevelManagementClusterMPTZRelativeMoveParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, MPTZRelativeMoveWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn MPTZRelativeMoveWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, MPTZRelativeMoveWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn MPTZMoveToPresetWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCameraAVSettingsUserLevelManagementClusterMPTZMoveToPresetParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, MPTZMoveToPresetWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn MPTZSavePresetWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCameraAVSettingsUserLevelManagementClusterMPTZSavePresetParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, MPTZSavePresetWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn MPTZRemovePresetWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCameraAVSettingsUserLevelManagementClusterMPTZRemovePresetParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, MPTZRemovePresetWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn DPTZSetViewportWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCameraAVSettingsUserLevelManagementClusterDPTZSetViewportParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, DPTZSetViewportWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn DPTZRelativeMoveWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCameraAVSettingsUserLevelManagementClusterDPTZRelativeMoveParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, DPTZRelativeMoveWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeMPTZPositionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMPTZPositionWithParams : params)
    }
    unsafe fn readAttributeMaxPresetsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxPresetsWithParams : params)
    }
    unsafe fn readAttributeMPTZPresetsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMPTZPresetsWithParams : params)
    }
    unsafe fn readAttributeDPTZStreamsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDPTZStreamsWithParams : params)
    }
    unsafe fn readAttributeZoomMaxWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeZoomMaxWithParams : params)
    }
    unsafe fn readAttributeTiltMinWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTiltMinWithParams : params)
    }
    unsafe fn readAttributeTiltMaxWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTiltMaxWithParams : params)
    }
    unsafe fn readAttributePanMinWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePanMinWithParams : params)
    }
    unsafe fn readAttributePanMaxWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePanMaxWithParams : params)
    }
    unsafe fn readAttributeMovementStateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMovementStateWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterCameraAVSettingsUserLevelManagement").unwrap(), new)
    }
}
impl MTRClusterCameraAVSettingsUserLevelManagement_Availability
    for MTRClusterCameraAVSettingsUserLevelManagement
{
}
pub trait MTRClusterCameraAVSettingsUserLevelManagement_Availability:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterWebRTCTransportProvider(pub id);
impl std::ops::Deref for MTRClusterWebRTCTransportProvider {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterWebRTCTransportProvider {}
impl MTRClusterWebRTCTransportProvider {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterWebRTCTransportProvider").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterWebRTCTransportProvider {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterWebRTCTransportProvider {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterWebRTCTransportProvider, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterWebRTCTransportProvider").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterWebRTCTransportProvider(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterWebRTCTransportProvider")
        }
    }
}
impl IMTRCluster for MTRClusterWebRTCTransportProvider {}
impl INSObject for MTRClusterWebRTCTransportProvider {}
impl PNSObject for MTRClusterWebRTCTransportProvider {}
impl IMTRClusterWebRTCTransportProvider for MTRClusterWebRTCTransportProvider {}
pub trait IMTRClusterWebRTCTransportProvider: Sized + std::ops::Deref {
    unsafe fn solicitOfferWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRWebRTCTransportProviderClusterSolicitOfferParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, solicitOfferWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn provideOfferWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRWebRTCTransportProviderClusterProvideOfferParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, provideOfferWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn provideAnswerWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRWebRTCTransportProviderClusterProvideAnswerParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, provideAnswerWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn provideICECandidatesWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRWebRTCTransportProviderClusterProvideICECandidatesParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, provideICECandidatesWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn endSessionWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRWebRTCTransportProviderClusterEndSessionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, endSessionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeCurrentSessionsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentSessionsWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterWebRTCTransportProvider").unwrap(), new)
    }
}
impl MTRClusterWebRTCTransportProvider_Availability for MTRClusterWebRTCTransportProvider {}
pub trait MTRClusterWebRTCTransportProvider_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterWebRTCTransportRequestor(pub id);
impl std::ops::Deref for MTRClusterWebRTCTransportRequestor {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterWebRTCTransportRequestor {}
impl MTRClusterWebRTCTransportRequestor {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterWebRTCTransportRequestor").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterWebRTCTransportRequestor {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterWebRTCTransportRequestor {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterWebRTCTransportRequestor, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterWebRTCTransportRequestor").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterWebRTCTransportRequestor(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterWebRTCTransportRequestor")
        }
    }
}
impl IMTRCluster for MTRClusterWebRTCTransportRequestor {}
impl INSObject for MTRClusterWebRTCTransportRequestor {}
impl PNSObject for MTRClusterWebRTCTransportRequestor {}
impl IMTRClusterWebRTCTransportRequestor for MTRClusterWebRTCTransportRequestor {}
pub trait IMTRClusterWebRTCTransportRequestor: Sized + std::ops::Deref {
    unsafe fn offerWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRWebRTCTransportRequestorClusterOfferParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, offerWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn answerWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRWebRTCTransportRequestorClusterAnswerParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, answerWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn ICECandidatesWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRWebRTCTransportRequestorClusterICECandidatesParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, ICECandidatesWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn endWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRWebRTCTransportRequestorClusterEndParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, endWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeCurrentSessionsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentSessionsWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterWebRTCTransportRequestor").unwrap(), new)
    }
}
impl MTRClusterWebRTCTransportRequestor_Availability for MTRClusterWebRTCTransportRequestor {}
pub trait MTRClusterWebRTCTransportRequestor_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterPushAVStreamTransport(pub id);
impl std::ops::Deref for MTRClusterPushAVStreamTransport {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterPushAVStreamTransport {}
impl MTRClusterPushAVStreamTransport {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPushAVStreamTransport").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterPushAVStreamTransport {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterPushAVStreamTransport {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterPushAVStreamTransport, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterPushAVStreamTransport").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterPushAVStreamTransport(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterPushAVStreamTransport")
        }
    }
}
impl IMTRCluster for MTRClusterPushAVStreamTransport {}
impl INSObject for MTRClusterPushAVStreamTransport {}
impl PNSObject for MTRClusterPushAVStreamTransport {}
impl IMTRClusterPushAVStreamTransport for MTRClusterPushAVStreamTransport {}
pub trait IMTRClusterPushAVStreamTransport: Sized + std::ops::Deref {
    unsafe fn allocatePushTransportWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRPushAVStreamTransportClusterAllocatePushTransportParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, allocatePushTransportWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn deallocatePushTransportWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRPushAVStreamTransportClusterDeallocatePushTransportParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deallocatePushTransportWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn modifyPushTransportWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRPushAVStreamTransportClusterModifyPushTransportParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, modifyPushTransportWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn setTransportStatusWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRPushAVStreamTransportClusterSetTransportStatusParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransportStatusWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn manuallyTriggerTransportWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRPushAVStreamTransportClusterManuallyTriggerTransportParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, manuallyTriggerTransportWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn findTransportWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRPushAVStreamTransportClusterFindTransportParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, findTransportWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeSupportedFormatsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedFormatsWithParams : params)
    }
    unsafe fn readAttributeCurrentConnectionsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentConnectionsWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterPushAVStreamTransport").unwrap(), new)
    }
}
impl MTRClusterPushAVStreamTransport_Availability for MTRClusterPushAVStreamTransport {}
pub trait MTRClusterPushAVStreamTransport_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterChime(pub id);
impl std::ops::Deref for MTRClusterChime {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterChime {}
impl MTRClusterChime {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterChime").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterChime {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterChime {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterChime, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterChime").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterChime(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterChime")
        }
    }
}
impl IMTRCluster for MTRClusterChime {}
impl INSObject for MTRClusterChime {}
impl PNSObject for MTRClusterChime {}
impl IMTRClusterChime for MTRClusterChime {}
pub trait IMTRClusterChime: Sized + std::ops::Deref {
    unsafe fn playChimeSoundWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRChimeClusterPlayChimeSoundParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, playChimeSoundWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn playChimeSoundWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, playChimeSoundWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeInstalledChimeSoundsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstalledChimeSoundsWithParams : params)
    }
    unsafe fn readAttributeSelectedChimeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSelectedChimeWithParams : params)
    }
    unsafe fn writeAttributeSelectedChimeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSelectedChimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeSelectedChimeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSelectedChimeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeEnabledWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnabledWithParams : params)
    }
    unsafe fn writeAttributeEnabledWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnabledWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeEnabledWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnabledWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterChime").unwrap(), new)
    }
}
impl MTRClusterChime_Availability for MTRClusterChime {}
pub trait MTRClusterChime_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterCommodityTariff(pub id);
impl std::ops::Deref for MTRClusterCommodityTariff {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterCommodityTariff {}
impl MTRClusterCommodityTariff {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterCommodityTariff").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterCommodityTariff {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterCommodityTariff {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterCommodityTariff, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterCommodityTariff").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterCommodityTariff(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterCommodityTariff")
        }
    }
}
impl IMTRCluster for MTRClusterCommodityTariff {}
impl INSObject for MTRClusterCommodityTariff {}
impl PNSObject for MTRClusterCommodityTariff {}
impl IMTRClusterCommodityTariff for MTRClusterCommodityTariff {}
pub trait IMTRClusterCommodityTariff: Sized + std::ops::Deref {
    unsafe fn getTariffComponentWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCommodityTariffClusterGetTariffComponentParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getTariffComponentWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn getDayEntryWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCommodityTariffClusterGetDayEntryParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getDayEntryWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeTariffInfoWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTariffInfoWithParams : params)
    }
    unsafe fn readAttributeTariffUnitWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTariffUnitWithParams : params)
    }
    unsafe fn readAttributeStartDateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStartDateWithParams : params)
    }
    unsafe fn readAttributeDayEntriesWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDayEntriesWithParams : params)
    }
    unsafe fn readAttributeDayPatternsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDayPatternsWithParams : params)
    }
    unsafe fn readAttributeCalendarPeriodsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCalendarPeriodsWithParams : params)
    }
    unsafe fn readAttributeIndividualDaysWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeIndividualDaysWithParams : params)
    }
    unsafe fn readAttributeCurrentDayWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentDayWithParams : params)
    }
    unsafe fn readAttributeNextDayWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNextDayWithParams : params)
    }
    unsafe fn readAttributeCurrentDayEntryWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentDayEntryWithParams : params)
    }
    unsafe fn readAttributeCurrentDayEntryDateWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentDayEntryDateWithParams : params)
    }
    unsafe fn readAttributeNextDayEntryWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNextDayEntryWithParams : params)
    }
    unsafe fn readAttributeNextDayEntryDateWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNextDayEntryDateWithParams : params)
    }
    unsafe fn readAttributeTariffComponentsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTariffComponentsWithParams : params)
    }
    unsafe fn readAttributeTariffPeriodsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTariffPeriodsWithParams : params)
    }
    unsafe fn readAttributeCurrentTariffComponentsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentTariffComponentsWithParams : params)
    }
    unsafe fn readAttributeNextTariffComponentsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNextTariffComponentsWithParams : params)
    }
    unsafe fn readAttributeDefaultRandomizationOffsetWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultRandomizationOffsetWithParams : params)
    }
    unsafe fn readAttributeDefaultRandomizationTypeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultRandomizationTypeWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterCommodityTariff").unwrap(), new)
    }
}
impl MTRClusterCommodityTariff_Availability for MTRClusterCommodityTariff {}
pub trait MTRClusterCommodityTariff_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterEcosystemInformation(pub id);
impl std::ops::Deref for MTRClusterEcosystemInformation {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterEcosystemInformation {}
impl MTRClusterEcosystemInformation {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterEcosystemInformation").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterEcosystemInformation {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterEcosystemInformation {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterEcosystemInformation, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterEcosystemInformation").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterEcosystemInformation(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterEcosystemInformation")
        }
    }
}
impl IMTRCluster for MTRClusterEcosystemInformation {}
impl INSObject for MTRClusterEcosystemInformation {}
impl PNSObject for MTRClusterEcosystemInformation {}
impl IMTRClusterEcosystemInformation for MTRClusterEcosystemInformation {}
pub trait IMTRClusterEcosystemInformation: Sized + std::ops::Deref {
    unsafe fn readAttributeDeviceDirectoryWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDeviceDirectoryWithParams : params)
    }
    unsafe fn readAttributeLocationDirectoryWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLocationDirectoryWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterEcosystemInformation").unwrap(), new)
    }
}
impl MTRClusterEcosystemInformation_Availability for MTRClusterEcosystemInformation {}
pub trait MTRClusterEcosystemInformation_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterCommissionerControl(pub id);
impl std::ops::Deref for MTRClusterCommissionerControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterCommissionerControl {}
impl MTRClusterCommissionerControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterCommissionerControl").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterCommissionerControl {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterCommissionerControl {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterCommissionerControl, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterCommissionerControl").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterCommissionerControl(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterCommissionerControl")
        }
    }
}
impl IMTRCluster for MTRClusterCommissionerControl {}
impl INSObject for MTRClusterCommissionerControl {}
impl PNSObject for MTRClusterCommissionerControl {}
impl IMTRClusterCommissionerControl for MTRClusterCommissionerControl {}
pub trait IMTRClusterCommissionerControl: Sized + std::ops::Deref {
    unsafe fn requestCommissioningApprovalWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCommissionerControlClusterRequestCommissioningApprovalParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, requestCommissioningApprovalWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn commissionNodeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRCommissionerControlClusterCommissionNodeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commissionNodeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeSupportedDeviceCategoriesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportedDeviceCategoriesWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterCommissionerControl").unwrap(), new)
    }
}
impl MTRClusterCommissionerControl_Availability for MTRClusterCommissionerControl {}
pub trait MTRClusterCommissionerControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterJointFabricDatastore(pub id);
impl std::ops::Deref for MTRClusterJointFabricDatastore {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterJointFabricDatastore {}
impl MTRClusterJointFabricDatastore {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterJointFabricDatastore").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterJointFabricDatastore {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterJointFabricDatastore {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterJointFabricDatastore, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterJointFabricDatastore").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterJointFabricDatastore(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterJointFabricDatastore")
        }
    }
}
impl IMTRCluster for MTRClusterJointFabricDatastore {}
impl INSObject for MTRClusterJointFabricDatastore {}
impl PNSObject for MTRClusterJointFabricDatastore {}
impl IMTRClusterJointFabricDatastore for MTRClusterJointFabricDatastore {}
pub trait IMTRClusterJointFabricDatastore: Sized + std::ops::Deref {
    unsafe fn addKeySetWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterAddKeySetParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addKeySetWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn updateKeySetWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterUpdateKeySetParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateKeySetWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn removeKeySetWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterRemoveKeySetParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeKeySetWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn addGroupWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterAddGroupParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addGroupWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn updateGroupWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterUpdateGroupParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateGroupWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn removeGroupWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterRemoveGroupParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeGroupWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn addAdminWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterAddAdminParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addAdminWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn updateAdminWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterUpdateAdminParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateAdminWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn removeAdminWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterRemoveAdminParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeAdminWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn addPendingNodeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterAddPendingNodeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addPendingNodeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn refreshNodeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterRefreshNodeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, refreshNodeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn updateNodeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterUpdateNodeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateNodeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn removeNodeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterRemoveNodeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeNodeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn updateEndpointForNodeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterUpdateEndpointForNodeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateEndpointForNodeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn addGroupIDToEndpointForNodeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterAddGroupIDToEndpointForNodeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addGroupIDToEndpointForNodeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn removeGroupIDFromEndpointForNodeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterRemoveGroupIDFromEndpointForNodeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeGroupIDFromEndpointForNodeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn addBindingToEndpointForNodeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterAddBindingToEndpointForNodeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addBindingToEndpointForNodeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn removeBindingFromEndpointForNodeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterRemoveBindingFromEndpointForNodeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeBindingFromEndpointForNodeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn addACLToNodeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterAddACLToNodeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addACLToNodeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn removeACLFromNodeWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricDatastoreClusterRemoveACLFromNodeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeACLFromNodeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeAnchorRootCAWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAnchorRootCAWithParams : params)
    }
    unsafe fn readAttributeAnchorNodeIDWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAnchorNodeIDWithParams : params)
    }
    unsafe fn readAttributeAnchorVendorIDWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAnchorVendorIDWithParams : params)
    }
    unsafe fn readAttributeFriendlyNameWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFriendlyNameWithParams : params)
    }
    unsafe fn readAttributeGroupKeySetListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGroupKeySetListWithParams : params)
    }
    unsafe fn readAttributeGroupListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGroupListWithParams : params)
    }
    unsafe fn readAttributeNodeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNodeListWithParams : params)
    }
    unsafe fn readAttributeAdminListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAdminListWithParams : params)
    }
    unsafe fn readAttributeStatusWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStatusWithParams : params)
    }
    unsafe fn readAttributeEndpointGroupIDListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEndpointGroupIDListWithParams : params)
    }
    unsafe fn readAttributeEndpointBindingListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEndpointBindingListWithParams : params)
    }
    unsafe fn readAttributeNodeKeySetListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNodeKeySetListWithParams : params)
    }
    unsafe fn readAttributeNodeACLListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNodeACLListWithParams : params)
    }
    unsafe fn readAttributeNodeEndpointListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNodeEndpointListWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterJointFabricDatastore").unwrap(), new)
    }
}
impl MTRClusterJointFabricDatastore_Availability for MTRClusterJointFabricDatastore {}
pub trait MTRClusterJointFabricDatastore_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterJointFabricAdministrator(pub id);
impl std::ops::Deref for MTRClusterJointFabricAdministrator {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterJointFabricAdministrator {}
impl MTRClusterJointFabricAdministrator {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterJointFabricAdministrator").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterJointFabricAdministrator {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterJointFabricAdministrator {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterJointFabricAdministrator, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterJointFabricAdministrator").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterJointFabricAdministrator(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterJointFabricAdministrator")
        }
    }
}
impl IMTRCluster for MTRClusterJointFabricAdministrator {}
impl INSObject for MTRClusterJointFabricAdministrator {}
impl PNSObject for MTRClusterJointFabricAdministrator {}
impl IMTRClusterJointFabricAdministrator for MTRClusterJointFabricAdministrator {}
pub trait IMTRClusterJointFabricAdministrator: Sized + std::ops::Deref {
    unsafe fn ICACCSRRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricAdministratorClusterICACCSRRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, ICACCSRRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn ICACCSRRequestWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, ICACCSRRequestWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn addICACWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricAdministratorClusterAddICACParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addICACWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn openJointCommissioningWindowWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricAdministratorClusterOpenJointCommissioningWindowParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, openJointCommissioningWindowWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn transferAnchorRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricAdministratorClusterTransferAnchorRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, transferAnchorRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn transferAnchorRequestWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, transferAnchorRequestWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn transferAnchorCompleteWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricAdministratorClusterTransferAnchorCompleteParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, transferAnchorCompleteWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn transferAnchorCompleteWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, transferAnchorCompleteWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn announceJointFabricAdministratorWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRJointFabricAdministratorClusterAnnounceJointFabricAdministratorParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, announceJointFabricAdministratorWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeAdministratorFabricIndexWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAdministratorFabricIndexWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterJointFabricAdministrator").unwrap(), new)
    }
}
impl MTRClusterJointFabricAdministrator_Availability for MTRClusterJointFabricAdministrator {}
pub trait MTRClusterJointFabricAdministrator_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterTLSCertificateManagement(pub id);
impl std::ops::Deref for MTRClusterTLSCertificateManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterTLSCertificateManagement {}
impl MTRClusterTLSCertificateManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterTLSCertificateManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterTLSCertificateManagement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterTLSCertificateManagement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterTLSCertificateManagement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterTLSCertificateManagement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterTLSCertificateManagement(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterTLSCertificateManagement")
        }
    }
}
impl IMTRCluster for MTRClusterTLSCertificateManagement {}
impl INSObject for MTRClusterTLSCertificateManagement {}
impl PNSObject for MTRClusterTLSCertificateManagement {}
impl IMTRClusterTLSCertificateManagement for MTRClusterTLSCertificateManagement {}
pub trait IMTRClusterTLSCertificateManagement: Sized + std::ops::Deref {
    unsafe fn provisionRootCertificateWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTLSCertificateManagementClusterProvisionRootCertificateParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, provisionRootCertificateWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn findRootCertificateWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTLSCertificateManagementClusterFindRootCertificateParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, findRootCertificateWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn lookupRootCertificateWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTLSCertificateManagementClusterLookupRootCertificateParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, lookupRootCertificateWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn removeRootCertificateWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTLSCertificateManagementClusterRemoveRootCertificateParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeRootCertificateWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn clientCSRWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTLSCertificateManagementClusterClientCSRParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clientCSRWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn provisionClientCertificateWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTLSCertificateManagementClusterProvisionClientCertificateParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, provisionClientCertificateWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn findClientCertificateWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTLSCertificateManagementClusterFindClientCertificateParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, findClientCertificateWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn lookupClientCertificateWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTLSCertificateManagementClusterLookupClientCertificateParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, lookupClientCertificateWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn removeClientCertificateWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTLSCertificateManagementClusterRemoveClientCertificateParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeClientCertificateWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeMaxRootCertificatesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxRootCertificatesWithParams : params)
    }
    unsafe fn readAttributeProvisionedRootCertificatesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProvisionedRootCertificatesWithParams : params)
    }
    unsafe fn readAttributeMaxClientCertificatesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxClientCertificatesWithParams : params)
    }
    unsafe fn readAttributeProvisionedClientCertificatesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProvisionedClientCertificatesWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterTLSCertificateManagement").unwrap(), new)
    }
}
impl MTRClusterTLSCertificateManagement_Availability for MTRClusterTLSCertificateManagement {}
pub trait MTRClusterTLSCertificateManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterTLSClientManagement(pub id);
impl std::ops::Deref for MTRClusterTLSClientManagement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterTLSClientManagement {}
impl MTRClusterTLSClientManagement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterTLSClientManagement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterTLSClientManagement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterTLSClientManagement {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterTLSClientManagement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterTLSClientManagement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterTLSClientManagement(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterTLSClientManagement")
        }
    }
}
impl IMTRCluster for MTRClusterTLSClientManagement {}
impl INSObject for MTRClusterTLSClientManagement {}
impl PNSObject for MTRClusterTLSClientManagement {}
impl IMTRClusterTLSClientManagement for MTRClusterTLSClientManagement {}
pub trait IMTRClusterTLSClientManagement: Sized + std::ops::Deref {
    unsafe fn provisionEndpointWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTLSClientManagementClusterProvisionEndpointParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, provisionEndpointWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn findEndpointWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTLSClientManagementClusterFindEndpointParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, findEndpointWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn removeEndpointWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRTLSClientManagementClusterRemoveEndpointParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeEndpointWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeMaxProvisionedWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaxProvisionedWithParams : params)
    }
    unsafe fn readAttributeProvisionedEndpointsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProvisionedEndpointsWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterTLSClientManagement").unwrap(), new)
    }
}
impl MTRClusterTLSClientManagement_Availability for MTRClusterTLSClientManagement {}
pub trait MTRClusterTLSClientManagement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterMeterIdentification(pub id);
impl std::ops::Deref for MTRClusterMeterIdentification {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterMeterIdentification {}
impl MTRClusterMeterIdentification {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterMeterIdentification").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterMeterIdentification {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterMeterIdentification {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterMeterIdentification, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterMeterIdentification").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterMeterIdentification(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterMeterIdentification")
        }
    }
}
impl IMTRCluster for MTRClusterMeterIdentification {}
impl INSObject for MTRClusterMeterIdentification {}
impl PNSObject for MTRClusterMeterIdentification {}
impl IMTRClusterMeterIdentification for MTRClusterMeterIdentification {}
pub trait IMTRClusterMeterIdentification: Sized + std::ops::Deref {
    unsafe fn readAttributeMeterTypeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeterTypeWithParams : params)
    }
    unsafe fn readAttributePointOfDeliveryWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePointOfDeliveryWithParams : params)
    }
    unsafe fn readAttributeMeterSerialNumberWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeterSerialNumberWithParams : params)
    }
    unsafe fn readAttributeProtocolVersionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeProtocolVersionWithParams : params)
    }
    unsafe fn readAttributePowerThresholdWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerThresholdWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterMeterIdentification").unwrap(), new)
    }
}
impl MTRClusterMeterIdentification_Availability for MTRClusterMeterIdentification {}
pub trait MTRClusterMeterIdentification_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterCommodityMetering(pub id);
impl std::ops::Deref for MTRClusterCommodityMetering {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterCommodityMetering {}
impl MTRClusterCommodityMetering {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterCommodityMetering").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterCommodityMetering {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterCommodityMetering {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterCommodityMetering, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterCommodityMetering").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterCommodityMetering(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterCommodityMetering")
        }
    }
}
impl IMTRCluster for MTRClusterCommodityMetering {}
impl INSObject for MTRClusterCommodityMetering {}
impl PNSObject for MTRClusterCommodityMetering {}
impl IMTRClusterCommodityMetering for MTRClusterCommodityMetering {}
pub trait IMTRClusterCommodityMetering: Sized + std::ops::Deref {
    unsafe fn readAttributeMeteredQuantityWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeteredQuantityWithParams : params)
    }
    unsafe fn readAttributeMeteredQuantityTimestampWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeteredQuantityTimestampWithParams : params)
    }
    unsafe fn readAttributeTariffUnitWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTariffUnitWithParams : params)
    }
    unsafe fn readAttributeMaximumMeteredQuantitiesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMaximumMeteredQuantitiesWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterCommodityMetering").unwrap(), new)
    }
}
impl MTRClusterCommodityMetering_Availability for MTRClusterCommodityMetering {}
pub trait MTRClusterCommodityMetering_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterAppleDeviceInformation(pub id);
impl std::ops::Deref for MTRClusterAppleDeviceInformation {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterAppleDeviceInformation {}
impl MTRClusterAppleDeviceInformation {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterAppleDeviceInformation").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterAppleDeviceInformation {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterAppleDeviceInformation {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterAppleDeviceInformation, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterAppleDeviceInformation").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterAppleDeviceInformation(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterAppleDeviceInformation")
        }
    }
}
impl IMTRCluster for MTRClusterAppleDeviceInformation {}
impl INSObject for MTRClusterAppleDeviceInformation {}
impl PNSObject for MTRClusterAppleDeviceInformation {}
impl IMTRClusterAppleDeviceInformation for MTRClusterAppleDeviceInformation {}
pub trait IMTRClusterAppleDeviceInformation: Sized + std::ops::Deref {
    unsafe fn readAttributeSupportsTapToUnlockWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportsTapToUnlockWithParams : params)
    }
    unsafe fn readAttributeSupportsWEDWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSupportsWEDWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterAppleDeviceInformation").unwrap(), new)
    }
}
impl MTRClusterAppleDeviceInformation_Availability for MTRClusterAppleDeviceInformation {}
pub trait MTRClusterAppleDeviceInformation_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterAppleLockCluster(pub id);
impl std::ops::Deref for MTRClusterAppleLockCluster {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterAppleLockCluster {}
impl MTRClusterAppleLockCluster {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterAppleLockCluster").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterAppleLockCluster {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterAppleLockCluster {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterAppleLockCluster, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterAppleLockCluster").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterAppleLockCluster(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterAppleLockCluster")
        }
    }
}
impl IMTRCluster for MTRClusterAppleLockCluster {}
impl INSObject for MTRClusterAppleLockCluster {}
impl PNSObject for MTRClusterAppleLockCluster {}
impl IMTRClusterAppleLockCluster for MTRClusterAppleLockCluster {}
pub trait IMTRClusterAppleLockCluster: Sized + std::ops::Deref {
    unsafe fn readAttributeIntentDetectionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeIntentDetectionWithParams : params)
    }
    unsafe fn writeAttributeIntentDetectionWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeIntentDetectionWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeIntentDetectionWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeIntentDetectionWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterAppleLockCluster").unwrap(), new)
    }
}
impl MTRClusterAppleLockCluster_Availability for MTRClusterAppleLockCluster {}
pub trait MTRClusterAppleLockCluster_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterUnitTesting(pub id);
impl std::ops::Deref for MTRClusterUnitTesting {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterUnitTesting {}
impl MTRClusterUnitTesting {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterUnitTesting").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterUnitTesting {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterUnitTesting {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterUnitTesting, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterUnitTesting").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterUnitTesting(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterUnitTesting")
        }
    }
}
impl IMTRCluster for MTRClusterUnitTesting {}
impl INSObject for MTRClusterUnitTesting {}
impl PNSObject for MTRClusterUnitTesting {}
impl IMTRClusterUnitTesting for MTRClusterUnitTesting {}
pub trait IMTRClusterUnitTesting: Sized + std::ops::Deref {
    unsafe fn testWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testNotHandledWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestNotHandledParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNotHandledWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testNotHandledWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNotHandledWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testSpecificWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestSpecificParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSpecificWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testSpecificWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSpecificWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testUnknownCommandWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestUnknownCommandParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testUnknownCommandWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testUnknownCommandWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testUnknownCommandWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testAddArgumentsWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestAddArgumentsParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testAddArgumentsWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testSimpleArgumentRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestSimpleArgumentRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSimpleArgumentRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testStructArrayArgumentRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestStructArrayArgumentRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testStructArrayArgumentRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testStructArgumentRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestStructArgumentRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testStructArgumentRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testNestedStructArgumentRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestNestedStructArgumentRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNestedStructArgumentRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testListStructArgumentRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestListStructArgumentRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testListStructArgumentRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testListInt8UArgumentRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestListInt8UArgumentRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testListInt8UArgumentRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testNestedStructListArgumentRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestNestedStructListArgumentRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNestedStructListArgumentRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testListNestedStructListArgumentRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testListNestedStructListArgumentRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testListInt8UReverseRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestListInt8UReverseRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testListInt8UReverseRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testEnumsRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestEnumsRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testEnumsRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testNullableOptionalRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestNullableOptionalRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNullableOptionalRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testNullableOptionalRequestWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNullableOptionalRequestWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testComplexNullableOptionalRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestComplexNullableOptionalRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testComplexNullableOptionalRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn simpleStructEchoRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterSimpleStructEchoRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, simpleStructEchoRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn timedInvokeRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTimedInvokeRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, timedInvokeRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn timedInvokeRequestWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, timedInvokeRequestWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testSimpleOptionalArgumentRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSimpleOptionalArgumentRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testSimpleOptionalArgumentRequestWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSimpleOptionalArgumentRequestWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testEmitTestEventRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestEmitTestEventRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testEmitTestEventRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testEmitTestFabricScopedEventRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testEmitTestFabricScopedEventRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testBatchHelperRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestBatchHelperRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testBatchHelperRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testSecondBatchHelperRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestSecondBatchHelperRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSecondBatchHelperRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn stringEchoRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterStringEchoRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringEchoRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn globalEchoRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterGlobalEchoRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, globalEchoRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testCheckCommandFlagsWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestCheckCommandFlagsParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testCheckCommandFlagsWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testCheckCommandFlagsWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testCheckCommandFlagsWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn testDifferentVendorMeiRequestWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRUnitTestingClusterTestDifferentVendorMeiRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testDifferentVendorMeiRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeBooleanWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBooleanWithParams : params)
    }
    unsafe fn writeAttributeBooleanWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBooleanWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeBooleanWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBooleanWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeBitmap8WithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBitmap8WithParams : params)
    }
    unsafe fn writeAttributeBitmap8WithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap8WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeBitmap8WithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap8WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeBitmap16WithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBitmap16WithParams : params)
    }
    unsafe fn writeAttributeBitmap16WithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap16WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeBitmap16WithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap16WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeBitmap32WithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBitmap32WithParams : params)
    }
    unsafe fn writeAttributeBitmap32WithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap32WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeBitmap32WithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap32WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeBitmap64WithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBitmap64WithParams : params)
    }
    unsafe fn writeAttributeBitmap64WithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap64WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeBitmap64WithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBitmap64WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeInt8uWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt8uWithParams : params)
    }
    unsafe fn writeAttributeInt8uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt8uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeInt8uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt8uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeInt16uWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt16uWithParams : params)
    }
    unsafe fn writeAttributeInt16uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt16uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeInt16uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt16uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeInt24uWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt24uWithParams : params)
    }
    unsafe fn writeAttributeInt24uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt24uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeInt24uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt24uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeInt32uWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt32uWithParams : params)
    }
    unsafe fn writeAttributeInt32uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt32uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeInt32uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt32uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeInt40uWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt40uWithParams : params)
    }
    unsafe fn writeAttributeInt40uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt40uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeInt40uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt40uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeInt48uWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt48uWithParams : params)
    }
    unsafe fn writeAttributeInt48uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt48uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeInt48uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt48uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeInt56uWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt56uWithParams : params)
    }
    unsafe fn writeAttributeInt56uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt56uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeInt56uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt56uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeInt64uWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt64uWithParams : params)
    }
    unsafe fn writeAttributeInt64uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt64uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeInt64uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt64uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeInt8sWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt8sWithParams : params)
    }
    unsafe fn writeAttributeInt8sWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt8sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeInt8sWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt8sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeInt16sWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt16sWithParams : params)
    }
    unsafe fn writeAttributeInt16sWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt16sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeInt16sWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt16sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeInt24sWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt24sWithParams : params)
    }
    unsafe fn writeAttributeInt24sWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt24sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeInt24sWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt24sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeInt32sWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt32sWithParams : params)
    }
    unsafe fn writeAttributeInt32sWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt32sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeInt32sWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt32sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeInt40sWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt40sWithParams : params)
    }
    unsafe fn writeAttributeInt40sWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt40sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeInt40sWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt40sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeInt48sWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt48sWithParams : params)
    }
    unsafe fn writeAttributeInt48sWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt48sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeInt48sWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt48sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeInt56sWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt56sWithParams : params)
    }
    unsafe fn writeAttributeInt56sWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt56sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeInt56sWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt56sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeInt64sWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInt64sWithParams : params)
    }
    unsafe fn writeAttributeInt64sWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt64sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeInt64sWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInt64sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeEnum8WithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnum8WithParams : params)
    }
    unsafe fn writeAttributeEnum8WithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnum8WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeEnum8WithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnum8WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeEnum16WithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnum16WithParams : params)
    }
    unsafe fn writeAttributeEnum16WithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnum16WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeEnum16WithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnum16WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeFloatSingleWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFloatSingleWithParams : params)
    }
    unsafe fn writeAttributeFloatSingleWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFloatSingleWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeFloatSingleWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFloatSingleWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeFloatDoubleWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFloatDoubleWithParams : params)
    }
    unsafe fn writeAttributeFloatDoubleWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFloatDoubleWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeFloatDoubleWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFloatDoubleWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeOctetStringWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOctetStringWithParams : params)
    }
    unsafe fn writeAttributeOctetStringWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOctetStringWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeOctetStringWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOctetStringWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeListInt8uWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeListInt8uWithParams : params)
    }
    unsafe fn writeAttributeListInt8uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListInt8uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeListInt8uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListInt8uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeListOctetStringWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeListOctetStringWithParams : params)
    }
    unsafe fn writeAttributeListOctetStringWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListOctetStringWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeListOctetStringWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListOctetStringWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeListStructOctetStringWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeListStructOctetStringWithParams : params)
    }
    unsafe fn writeAttributeListStructOctetStringWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListStructOctetStringWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeListStructOctetStringWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListStructOctetStringWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeLongOctetStringWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLongOctetStringWithParams : params)
    }
    unsafe fn writeAttributeLongOctetStringWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLongOctetStringWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLongOctetStringWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLongOctetStringWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeCharStringWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCharStringWithParams : params)
    }
    unsafe fn writeAttributeCharStringWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCharStringWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeCharStringWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeCharStringWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeLongCharStringWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLongCharStringWithParams : params)
    }
    unsafe fn writeAttributeLongCharStringWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLongCharStringWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeLongCharStringWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeLongCharStringWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeEpochUsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEpochUsWithParams : params)
    }
    unsafe fn writeAttributeEpochUsWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEpochUsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeEpochUsWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEpochUsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeEpochSWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEpochSWithParams : params)
    }
    unsafe fn writeAttributeEpochSWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEpochSWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeEpochSWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEpochSWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeVendorIdWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVendorIdWithParams : params)
    }
    unsafe fn writeAttributeVendorIdWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeVendorIdWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeVendorIdWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeVendorIdWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeListNullablesAndOptionalsStructWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeListNullablesAndOptionalsStructWithParams : params)
    }
    unsafe fn writeAttributeListNullablesAndOptionalsStructWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListNullablesAndOptionalsStructWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeListNullablesAndOptionalsStructWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListNullablesAndOptionalsStructWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeEnumAttrWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeEnumAttrWithParams : params)
    }
    unsafe fn writeAttributeEnumAttrWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnumAttrWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeEnumAttrWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeEnumAttrWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeStructAttrWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStructAttrWithParams : params)
    }
    unsafe fn writeAttributeStructAttrWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStructAttrWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeStructAttrWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeStructAttrWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeRangeRestrictedInt8uWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRangeRestrictedInt8uWithParams : params)
    }
    unsafe fn writeAttributeRangeRestrictedInt8uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt8uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeRangeRestrictedInt8uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt8uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeRangeRestrictedInt8sWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRangeRestrictedInt8sWithParams : params)
    }
    unsafe fn writeAttributeRangeRestrictedInt8sWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt8sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeRangeRestrictedInt8sWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt8sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeRangeRestrictedInt16uWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRangeRestrictedInt16uWithParams : params)
    }
    unsafe fn writeAttributeRangeRestrictedInt16uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt16uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeRangeRestrictedInt16uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt16uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeRangeRestrictedInt16sWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRangeRestrictedInt16sWithParams : params)
    }
    unsafe fn writeAttributeRangeRestrictedInt16sWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt16sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeRangeRestrictedInt16sWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRangeRestrictedInt16sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeListLongOctetStringWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeListLongOctetStringWithParams : params)
    }
    unsafe fn writeAttributeListLongOctetStringWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListLongOctetStringWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeListLongOctetStringWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListLongOctetStringWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeListFabricScopedWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeListFabricScopedWithParams : params)
    }
    unsafe fn writeAttributeListFabricScopedWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListFabricScopedWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeListFabricScopedWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeListFabricScopedWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeTimedWriteBooleanWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTimedWriteBooleanWithParams : params)
    }
    unsafe fn writeAttributeTimedWriteBooleanWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTimedWriteBooleanWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeTimedWriteBooleanWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeTimedWriteBooleanWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneralErrorBooleanWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneralErrorBooleanWithParams : params)
    }
    unsafe fn writeAttributeGeneralErrorBooleanWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeGeneralErrorBooleanWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeGeneralErrorBooleanWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeGeneralErrorBooleanWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeClusterErrorBooleanWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterErrorBooleanWithParams : params)
    }
    unsafe fn writeAttributeClusterErrorBooleanWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeClusterErrorBooleanWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeClusterErrorBooleanWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeClusterErrorBooleanWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGlobalEnumWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGlobalEnumWithParams : params)
    }
    unsafe fn writeAttributeGlobalEnumWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeGlobalEnumWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeGlobalEnumWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeGlobalEnumWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGlobalStructWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGlobalStructWithParams : params)
    }
    unsafe fn writeAttributeGlobalStructWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeGlobalStructWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeGlobalStructWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeGlobalStructWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeUnsupportedAttributeRequiringAdminPrivilegeWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnsupportedAttributeRequiringAdminPrivilegeWithParams : params)
    }
    unsafe fn writeAttributeUnsupportedAttributeRequiringAdminPrivilegeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnsupportedAttributeRequiringAdminPrivilegeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeUnsupportedAttributeRequiringAdminPrivilegeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnsupportedAttributeRequiringAdminPrivilegeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeUnsupportedWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeUnsupportedWithParams : params)
    }
    unsafe fn writeAttributeUnsupportedWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnsupportedWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeUnsupportedWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeUnsupportedWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeReadFailureCodeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReadFailureCodeWithParams : params)
    }
    unsafe fn writeAttributeReadFailureCodeWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeReadFailureCodeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeReadFailureCodeWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeReadFailureCodeWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeFailureInt32UWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFailureInt32UWithParams : params)
    }
    unsafe fn writeAttributeFailureInt32UWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFailureInt32UWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeFailureInt32UWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFailureInt32UWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableBooleanWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableBooleanWithParams : params)
    }
    unsafe fn writeAttributeNullableBooleanWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBooleanWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableBooleanWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBooleanWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableBitmap8WithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableBitmap8WithParams : params)
    }
    unsafe fn writeAttributeNullableBitmap8WithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap8WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableBitmap8WithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap8WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableBitmap16WithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableBitmap16WithParams : params)
    }
    unsafe fn writeAttributeNullableBitmap16WithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap16WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableBitmap16WithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap16WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableBitmap32WithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableBitmap32WithParams : params)
    }
    unsafe fn writeAttributeNullableBitmap32WithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap32WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableBitmap32WithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap32WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableBitmap64WithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableBitmap64WithParams : params)
    }
    unsafe fn writeAttributeNullableBitmap64WithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap64WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableBitmap64WithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableBitmap64WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableInt8uWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt8uWithParams : params)
    }
    unsafe fn writeAttributeNullableInt8uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt8uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableInt8uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt8uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableInt16uWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt16uWithParams : params)
    }
    unsafe fn writeAttributeNullableInt16uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt16uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableInt16uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt16uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableInt24uWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt24uWithParams : params)
    }
    unsafe fn writeAttributeNullableInt24uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt24uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableInt24uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt24uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableInt32uWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt32uWithParams : params)
    }
    unsafe fn writeAttributeNullableInt32uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt32uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableInt32uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt32uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableInt40uWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt40uWithParams : params)
    }
    unsafe fn writeAttributeNullableInt40uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt40uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableInt40uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt40uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableInt48uWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt48uWithParams : params)
    }
    unsafe fn writeAttributeNullableInt48uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt48uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableInt48uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt48uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableInt56uWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt56uWithParams : params)
    }
    unsafe fn writeAttributeNullableInt56uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt56uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableInt56uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt56uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableInt64uWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt64uWithParams : params)
    }
    unsafe fn writeAttributeNullableInt64uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt64uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableInt64uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt64uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableInt8sWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt8sWithParams : params)
    }
    unsafe fn writeAttributeNullableInt8sWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt8sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableInt8sWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt8sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableInt16sWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt16sWithParams : params)
    }
    unsafe fn writeAttributeNullableInt16sWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt16sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableInt16sWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt16sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableInt24sWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt24sWithParams : params)
    }
    unsafe fn writeAttributeNullableInt24sWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt24sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableInt24sWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt24sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableInt32sWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt32sWithParams : params)
    }
    unsafe fn writeAttributeNullableInt32sWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt32sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableInt32sWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt32sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableInt40sWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt40sWithParams : params)
    }
    unsafe fn writeAttributeNullableInt40sWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt40sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableInt40sWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt40sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableInt48sWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt48sWithParams : params)
    }
    unsafe fn writeAttributeNullableInt48sWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt48sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableInt48sWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt48sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableInt56sWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt56sWithParams : params)
    }
    unsafe fn writeAttributeNullableInt56sWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt56sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableInt56sWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt56sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableInt64sWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableInt64sWithParams : params)
    }
    unsafe fn writeAttributeNullableInt64sWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt64sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableInt64sWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableInt64sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableEnum8WithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableEnum8WithParams : params)
    }
    unsafe fn writeAttributeNullableEnum8WithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableEnum8WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableEnum8WithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableEnum8WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableEnum16WithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableEnum16WithParams : params)
    }
    unsafe fn writeAttributeNullableEnum16WithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableEnum16WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableEnum16WithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableEnum16WithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableFloatSingleWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableFloatSingleWithParams : params)
    }
    unsafe fn writeAttributeNullableFloatSingleWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableFloatSingleWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableFloatSingleWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableFloatSingleWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableFloatDoubleWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableFloatDoubleWithParams : params)
    }
    unsafe fn writeAttributeNullableFloatDoubleWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableFloatDoubleWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableFloatDoubleWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableFloatDoubleWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableOctetStringWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableOctetStringWithParams : params)
    }
    unsafe fn writeAttributeNullableOctetStringWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableOctetStringWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableOctetStringWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableOctetStringWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableCharStringWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableCharStringWithParams : params)
    }
    unsafe fn writeAttributeNullableCharStringWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableCharStringWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableCharStringWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableCharStringWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableEnumAttrWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableEnumAttrWithParams : params)
    }
    unsafe fn writeAttributeNullableEnumAttrWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableEnumAttrWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableEnumAttrWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableEnumAttrWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableStructWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableStructWithParams : params)
    }
    unsafe fn writeAttributeNullableStructWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableStructWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableStructWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableStructWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableRangeRestrictedInt8uWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableRangeRestrictedInt8uWithParams : params)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt8uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt8uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt8uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt8uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableRangeRestrictedInt8sWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableRangeRestrictedInt8sWithParams : params)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt8sWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt8sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt8sWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt8sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableRangeRestrictedInt16uWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableRangeRestrictedInt16uWithParams : params)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt16uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt16uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt16uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt16uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableRangeRestrictedInt16sWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableRangeRestrictedInt16sWithParams : params)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt16sWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt16sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableRangeRestrictedInt16sWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableRangeRestrictedInt16sWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeWriteOnlyInt8uWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWriteOnlyInt8uWithParams : params)
    }
    unsafe fn writeAttributeWriteOnlyInt8uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWriteOnlyInt8uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeWriteOnlyInt8uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWriteOnlyInt8uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableGlobalEnumWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableGlobalEnumWithParams : params)
    }
    unsafe fn writeAttributeNullableGlobalEnumWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableGlobalEnumWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableGlobalEnumWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableGlobalEnumWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeNullableGlobalStructWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNullableGlobalStructWithParams : params)
    }
    unsafe fn writeAttributeNullableGlobalStructWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableGlobalStructWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeNullableGlobalStructWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeNullableGlobalStructWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn readAttributeMeiInt8uWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeiInt8uWithParams : params)
    }
    unsafe fn writeAttributeMeiInt8uWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMeiInt8uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeMeiInt8uWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeMeiInt8uWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterUnitTesting").unwrap(), new)
    }
}
impl MTRClusterUnitTesting_Availability for MTRClusterUnitTesting {}
pub trait MTRClusterUnitTesting_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterSampleMEI(pub id);
impl std::ops::Deref for MTRClusterSampleMEI {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterSampleMEI {}
impl MTRClusterSampleMEI {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterSampleMEI").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterSampleMEI {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterSampleMEI {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterSampleMEI, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterSampleMEI").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterSampleMEI(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterSampleMEI")
        }
    }
}
impl IMTRCluster for MTRClusterSampleMEI {}
impl INSObject for MTRClusterSampleMEI {}
impl PNSObject for MTRClusterSampleMEI {}
impl IMTRClusterSampleMEI for MTRClusterSampleMEI {}
pub trait IMTRClusterSampleMEI: Sized + std::ops::Deref {
    unsafe fn pingWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRSampleMEIClusterPingParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pingWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn pingWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pingWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn addArgumentsWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRSampleMEIClusterAddArgumentsParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addArgumentsWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeFlipFlopWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFlipFlopWithParams : params)
    }
    unsafe fn writeAttributeFlipFlopWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFlipFlopWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeFlipFlopWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeFlipFlopWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterSampleMEI").unwrap(), new)
    }
}
impl MTRClusterSampleMEI_Availability for MTRClusterSampleMEI {}
pub trait MTRClusterSampleMEI_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterBasic(pub id);
impl std::ops::Deref for MTRClusterBasic {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterBasic {}
impl MTRClusterBasic {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterBasic").unwrap(), alloc) })
    }
}
impl IMTRClusterBasicInformation for MTRClusterBasic {}
impl From<MTRClusterBasic> for MTRClusterBasicInformation {
    fn from(child: MTRClusterBasic) -> MTRClusterBasicInformation {
        MTRClusterBasicInformation(child.0)
    }
}
impl std::convert::TryFrom<MTRClusterBasicInformation> for MTRClusterBasic {
    type Error = &'static str;
    fn try_from(parent: MTRClusterBasicInformation) -> Result<MTRClusterBasic, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterBasic").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterBasic(parent.0))
        } else {
            Err("This MTRClusterBasicInformation cannot be downcasted to MTRClusterBasic")
        }
    }
}
impl IMTRGenericCluster for MTRClusterBasic {}
impl IMTRCluster for MTRClusterBasic {}
impl INSObject for MTRClusterBasic {}
impl PNSObject for MTRClusterBasic {}
impl IMTRClusterBasic for MTRClusterBasic {}
pub trait IMTRClusterBasic: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterOtaSoftwareUpdateProvider(pub id);
impl std::ops::Deref for MTRClusterOtaSoftwareUpdateProvider {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterOtaSoftwareUpdateProvider {}
impl MTRClusterOtaSoftwareUpdateProvider {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOtaSoftwareUpdateProvider").unwrap(), alloc) })
    }
}
impl IMTRClusterOTASoftwareUpdateProvider for MTRClusterOtaSoftwareUpdateProvider {}
impl From<MTRClusterOtaSoftwareUpdateProvider> for MTRClusterOTASoftwareUpdateProvider {
    fn from(child: MTRClusterOtaSoftwareUpdateProvider) -> MTRClusterOTASoftwareUpdateProvider {
        MTRClusterOTASoftwareUpdateProvider(child.0)
    }
}
impl std::convert::TryFrom<MTRClusterOTASoftwareUpdateProvider>
    for MTRClusterOtaSoftwareUpdateProvider
{
    type Error = &'static str;
    fn try_from(
        parent: MTRClusterOTASoftwareUpdateProvider,
    ) -> Result<MTRClusterOtaSoftwareUpdateProvider, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterOtaSoftwareUpdateProvider").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterOtaSoftwareUpdateProvider(parent.0))
        } else {
            Err ("This MTRClusterOTASoftwareUpdateProvider cannot be downcasted to MTRClusterOtaSoftwareUpdateProvider" ,)
        }
    }
}
impl IMTRGenericCluster for MTRClusterOtaSoftwareUpdateProvider {}
impl IMTRCluster for MTRClusterOtaSoftwareUpdateProvider {}
impl INSObject for MTRClusterOtaSoftwareUpdateProvider {}
impl PNSObject for MTRClusterOtaSoftwareUpdateProvider {}
impl IMTRClusterOtaSoftwareUpdateProvider for MTRClusterOtaSoftwareUpdateProvider {}
pub trait IMTRClusterOtaSoftwareUpdateProvider: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterOtaSoftwareUpdateRequestor(pub id);
impl std::ops::Deref for MTRClusterOtaSoftwareUpdateRequestor {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterOtaSoftwareUpdateRequestor {}
impl MTRClusterOtaSoftwareUpdateRequestor {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOtaSoftwareUpdateRequestor").unwrap(), alloc) })
    }
}
impl IMTRClusterOTASoftwareUpdateRequestor for MTRClusterOtaSoftwareUpdateRequestor {}
impl From<MTRClusterOtaSoftwareUpdateRequestor> for MTRClusterOTASoftwareUpdateRequestor {
    fn from(child: MTRClusterOtaSoftwareUpdateRequestor) -> MTRClusterOTASoftwareUpdateRequestor {
        MTRClusterOTASoftwareUpdateRequestor(child.0)
    }
}
impl std::convert::TryFrom<MTRClusterOTASoftwareUpdateRequestor>
    for MTRClusterOtaSoftwareUpdateRequestor
{
    type Error = &'static str;
    fn try_from(
        parent: MTRClusterOTASoftwareUpdateRequestor,
    ) -> Result<MTRClusterOtaSoftwareUpdateRequestor, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterOtaSoftwareUpdateRequestor").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterOtaSoftwareUpdateRequestor(parent.0))
        } else {
            Err ("This MTRClusterOTASoftwareUpdateRequestor cannot be downcasted to MTRClusterOtaSoftwareUpdateRequestor" ,)
        }
    }
}
impl IMTRGenericCluster for MTRClusterOtaSoftwareUpdateRequestor {}
impl IMTRCluster for MTRClusterOtaSoftwareUpdateRequestor {}
impl INSObject for MTRClusterOtaSoftwareUpdateRequestor {}
impl PNSObject for MTRClusterOtaSoftwareUpdateRequestor {}
impl IMTRClusterOtaSoftwareUpdateRequestor for MTRClusterOtaSoftwareUpdateRequestor {}
pub trait IMTRClusterOtaSoftwareUpdateRequestor: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterBridgedDeviceBasic(pub id);
impl std::ops::Deref for MTRClusterBridgedDeviceBasic {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterBridgedDeviceBasic {}
impl MTRClusterBridgedDeviceBasic {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterBridgedDeviceBasic").unwrap(), alloc) })
    }
}
impl IMTRClusterBridgedDeviceBasicInformation for MTRClusterBridgedDeviceBasic {}
impl From<MTRClusterBridgedDeviceBasic> for MTRClusterBridgedDeviceBasicInformation {
    fn from(child: MTRClusterBridgedDeviceBasic) -> MTRClusterBridgedDeviceBasicInformation {
        MTRClusterBridgedDeviceBasicInformation(child.0)
    }
}
impl std::convert::TryFrom<MTRClusterBridgedDeviceBasicInformation>
    for MTRClusterBridgedDeviceBasic
{
    type Error = &'static str;
    fn try_from(
        parent: MTRClusterBridgedDeviceBasicInformation,
    ) -> Result<MTRClusterBridgedDeviceBasic, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterBridgedDeviceBasic").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterBridgedDeviceBasic(parent.0))
        } else {
            Err ("This MTRClusterBridgedDeviceBasicInformation cannot be downcasted to MTRClusterBridgedDeviceBasic" ,)
        }
    }
}
impl IMTRGenericCluster for MTRClusterBridgedDeviceBasic {}
impl IMTRCluster for MTRClusterBridgedDeviceBasic {}
impl INSObject for MTRClusterBridgedDeviceBasic {}
impl PNSObject for MTRClusterBridgedDeviceBasic {}
impl IMTRClusterBridgedDeviceBasic for MTRClusterBridgedDeviceBasic {}
pub trait IMTRClusterBridgedDeviceBasic: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterWakeOnLan(pub id);
impl std::ops::Deref for MTRClusterWakeOnLan {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterWakeOnLan {}
impl MTRClusterWakeOnLan {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterWakeOnLan").unwrap(), alloc) })
    }
}
impl IMTRClusterWakeOnLAN for MTRClusterWakeOnLan {}
impl From<MTRClusterWakeOnLan> for MTRClusterWakeOnLAN {
    fn from(child: MTRClusterWakeOnLan) -> MTRClusterWakeOnLAN {
        MTRClusterWakeOnLAN(child.0)
    }
}
impl std::convert::TryFrom<MTRClusterWakeOnLAN> for MTRClusterWakeOnLan {
    type Error = &'static str;
    fn try_from(parent: MTRClusterWakeOnLAN) -> Result<MTRClusterWakeOnLan, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterWakeOnLan").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterWakeOnLan(parent.0))
        } else {
            Err("This MTRClusterWakeOnLAN cannot be downcasted to MTRClusterWakeOnLan")
        }
    }
}
impl IMTRGenericCluster for MTRClusterWakeOnLan {}
impl IMTRCluster for MTRClusterWakeOnLan {}
impl INSObject for MTRClusterWakeOnLan {}
impl PNSObject for MTRClusterWakeOnLan {}
impl IMTRClusterWakeOnLan for MTRClusterWakeOnLan {}
pub trait IMTRClusterWakeOnLan: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterTestCluster(pub id);
impl std::ops::Deref for MTRClusterTestCluster {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterTestCluster {}
impl MTRClusterTestCluster {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterTestCluster").unwrap(), alloc) })
    }
}
impl IMTRClusterUnitTesting for MTRClusterTestCluster {}
impl From<MTRClusterTestCluster> for MTRClusterUnitTesting {
    fn from(child: MTRClusterTestCluster) -> MTRClusterUnitTesting {
        MTRClusterUnitTesting(child.0)
    }
}
impl std::convert::TryFrom<MTRClusterUnitTesting> for MTRClusterTestCluster {
    type Error = &'static str;
    fn try_from(parent: MTRClusterUnitTesting) -> Result<MTRClusterTestCluster, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterTestCluster").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterTestCluster(parent.0))
        } else {
            Err("This MTRClusterUnitTesting cannot be downcasted to MTRClusterTestCluster")
        }
    }
}
impl IMTRGenericCluster for MTRClusterTestCluster {}
impl IMTRCluster for MTRClusterTestCluster {}
impl INSObject for MTRClusterTestCluster {}
impl PNSObject for MTRClusterTestCluster {}
impl IMTRClusterTestCluster for MTRClusterTestCluster {}
pub trait IMTRClusterTestCluster: Sized + std::ops::Deref {}
impl MTRClusterIdentify_Deprecated for MTRClusterIdentify {}
pub trait MTRClusterIdentify_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn identifyWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRIdentifyClusterIdentifyParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, identifyWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn triggerEffectWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRIdentifyClusterTriggerEffectParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, triggerEffectWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterGroups_Deprecated for MTRClusterGroups {}
pub trait MTRClusterGroups_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn addGroupWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRGroupsClusterAddGroupParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addGroupWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn viewGroupWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRGroupsClusterViewGroupParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, viewGroupWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn getGroupMembershipWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRGroupsClusterGetGroupMembershipParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getGroupMembershipWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn removeGroupWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRGroupsClusterRemoveGroupParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeGroupWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn removeAllGroupsWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRGroupsClusterRemoveAllGroupsParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeAllGroupsWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn removeAllGroupsWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeAllGroupsWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn addGroupIfIdentifyingWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRGroupsClusterAddGroupIfIdentifyingParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addGroupIfIdentifyingWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterOnOff_Deprecated for MTRClusterOnOff {}
pub trait MTRClusterOnOff_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn offWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTROnOffClusterOffParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, offWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn offWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, offWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn onWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTROnOffClusterOnParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn onWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn toggleWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTROnOffClusterToggleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, toggleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn toggleWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, toggleWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn offWithEffectWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTROnOffClusterOffWithEffectParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, offWithEffectWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn onWithRecallGlobalSceneWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTROnOffClusterOnWithRecallGlobalSceneParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onWithRecallGlobalSceneWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn onWithRecallGlobalSceneWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onWithRecallGlobalSceneWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn onWithTimedOffWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTROnOffClusterOnWithTimedOffParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onWithTimedOffWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterLevelControl_Deprecated for MTRClusterLevelControl {}
pub trait MTRClusterLevelControl_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn moveToLevelWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRLevelControlClusterMoveToLevelParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToLevelWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn moveWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRLevelControlClusterMoveParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn stepWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRLevelControlClusterStepParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn stopWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRLevelControlClusterStopParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn moveToLevelWithOnOffWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRLevelControlClusterMoveToLevelWithOnOffParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToLevelWithOnOffWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn moveWithOnOffWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRLevelControlClusterMoveWithOnOffParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveWithOnOffWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn stepWithOnOffWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRLevelControlClusterStepWithOnOffParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepWithOnOffWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn stopWithOnOffWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRLevelControlClusterStopWithOnOffParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopWithOnOffWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn moveToClosestFrequencyWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRLevelControlClusterMoveToClosestFrequencyParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToClosestFrequencyWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterDescriptor_Deprecated for MTRClusterDescriptor {}
pub trait MTRClusterDescriptor_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeDeviceListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDeviceListWithParams : params)
    }
}
impl MTRClusterBinding_Deprecated for MTRClusterBinding {}
pub trait MTRClusterBinding_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
impl MTRClusterAccessControl_Deprecated for MTRClusterAccessControl {}
pub trait MTRClusterAccessControl_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeAclWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAclWithParams : params)
    }
    unsafe fn writeAttributeAclWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAclWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeAclWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAclWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
}
impl MTRClusterActions_Deprecated for MTRClusterActions {}
pub trait MTRClusterActions_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn instantActionWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRActionsClusterInstantActionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, instantActionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn instantActionWithTransitionWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRActionsClusterInstantActionWithTransitionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, instantActionWithTransitionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn startActionWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRActionsClusterStartActionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startActionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn startActionWithDurationWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRActionsClusterStartActionWithDurationParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startActionWithDurationWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn stopActionWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRActionsClusterStopActionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopActionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn pauseActionWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRActionsClusterPauseActionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseActionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn pauseActionWithDurationWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRActionsClusterPauseActionWithDurationParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseActionWithDurationWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn resumeActionWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRActionsClusterResumeActionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resumeActionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn enableActionWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRActionsClusterEnableActionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enableActionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn enableActionWithDurationWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRActionsClusterEnableActionWithDurationParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enableActionWithDurationWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn disableActionWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRActionsClusterDisableActionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, disableActionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn disableActionWithDurationWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRActionsClusterDisableActionWithDurationParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, disableActionWithDurationWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterBasic_Deprecated for MTRClusterBasic {}
pub trait MTRClusterBasic_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn mfgSpecificPingWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRBasicClusterMfgSpecificPingParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, mfgSpecificPingWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn mfgSpecificPingWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, mfgSpecificPingWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterOtaSoftwareUpdateProvider_Deprecated for MTRClusterOtaSoftwareUpdateProvider {}
pub trait MTRClusterOtaSoftwareUpdateProvider_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn queryImageWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTROtaSoftwareUpdateProviderClusterQueryImageParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, queryImageWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn applyUpdateRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, applyUpdateRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn notifyUpdateAppliedWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, notifyUpdateAppliedWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterOtaSoftwareUpdateRequestor_Deprecated for MTRClusterOtaSoftwareUpdateRequestor {}
pub trait MTRClusterOtaSoftwareUpdateRequestor_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn announceOtaProviderWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, announceOtaProviderWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDefaultOtaProvidersWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDefaultOtaProvidersWithParams : params)
    }
    unsafe fn writeAttributeDefaultOtaProvidersWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultOtaProvidersWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeDefaultOtaProvidersWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDefaultOtaProvidersWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
}
impl MTRClusterLocalizationConfiguration_Deprecated for MTRClusterLocalizationConfiguration {}
pub trait MTRClusterLocalizationConfiguration_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
impl MTRClusterTimeFormatLocalization_Deprecated for MTRClusterTimeFormatLocalization {}
pub trait MTRClusterTimeFormatLocalization_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
impl MTRClusterUnitLocalization_Deprecated for MTRClusterUnitLocalization {}
pub trait MTRClusterUnitLocalization_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
impl MTRClusterPowerSourceConfiguration_Deprecated for MTRClusterPowerSourceConfiguration {}
pub trait MTRClusterPowerSourceConfiguration_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
impl MTRClusterPowerSource_Deprecated for MTRClusterPowerSource {}
pub trait MTRClusterPowerSource_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
impl MTRClusterGeneralCommissioning_Deprecated for MTRClusterGeneralCommissioning {}
pub trait MTRClusterGeneralCommissioning_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn armFailSafeWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRGeneralCommissioningClusterArmFailSafeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, armFailSafeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn setRegulatoryConfigWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRGeneralCommissioningClusterSetRegulatoryConfigParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRegulatoryConfigWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn commissioningCompleteWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRGeneralCommissioningClusterCommissioningCompleteParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commissioningCompleteWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn commissioningCompleteWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commissioningCompleteWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterNetworkCommissioning_Deprecated for MTRClusterNetworkCommissioning {}
pub trait MTRClusterNetworkCommissioning_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn scanNetworksWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRNetworkCommissioningClusterScanNetworksParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scanNetworksWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn addOrUpdateWiFiNetworkWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addOrUpdateWiFiNetworkWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn addOrUpdateThreadNetworkWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addOrUpdateThreadNetworkWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn removeNetworkWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRNetworkCommissioningClusterRemoveNetworkParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeNetworkWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn connectNetworkWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRNetworkCommissioningClusterConnectNetworkParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connectNetworkWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn reorderNetworkWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRNetworkCommissioningClusterReorderNetworkParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, reorderNetworkWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterDiagnosticLogs_Deprecated for MTRClusterDiagnosticLogs {}
pub trait MTRClusterDiagnosticLogs_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn retrieveLogsRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRDiagnosticLogsClusterRetrieveLogsRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, retrieveLogsRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterGeneralDiagnostics_Deprecated for MTRClusterGeneralDiagnostics {}
pub trait MTRClusterGeneralDiagnostics_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn testEventTriggerWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRGeneralDiagnosticsClusterTestEventTriggerParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testEventTriggerWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBootReasonsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBootReasonsWithParams : params)
    }
}
impl MTRClusterSoftwareDiagnostics_Deprecated for MTRClusterSoftwareDiagnostics {}
pub trait MTRClusterSoftwareDiagnostics_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn resetWatermarksWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRSoftwareDiagnosticsClusterResetWatermarksParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetWatermarksWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn resetWatermarksWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetWatermarksWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterThreadNetworkDiagnostics_Deprecated for MTRClusterThreadNetworkDiagnostics {}
pub trait MTRClusterThreadNetworkDiagnostics_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn resetCountsWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRThreadNetworkDiagnosticsClusterResetCountsParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn resetCountsWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNeighborTableListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNeighborTableListWithParams : params)
    }
    unsafe fn readAttributeRouteTableListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRouteTableListWithParams : params)
    }
}
impl MTRClusterWiFiNetworkDiagnostics_Deprecated for MTRClusterWiFiNetworkDiagnostics {}
pub trait MTRClusterWiFiNetworkDiagnostics_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn resetCountsWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRWiFiNetworkDiagnosticsClusterResetCountsParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn resetCountsWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBssidWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBssidWithParams : params)
    }
    unsafe fn readAttributeRssiWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRssiWithParams : params)
    }
}
impl MTRClusterEthernetNetworkDiagnostics_Deprecated for MTRClusterEthernetNetworkDiagnostics {}
pub trait MTRClusterEthernetNetworkDiagnostics_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn resetCountsWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTREthernetNetworkDiagnosticsClusterResetCountsParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn resetCountsWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetCountsWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterBridgedDeviceBasic_Deprecated for MTRClusterBridgedDeviceBasic {}
pub trait MTRClusterBridgedDeviceBasic_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
impl MTRClusterSwitch_Deprecated for MTRClusterSwitch {}
pub trait MTRClusterSwitch_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
impl MTRClusterAdministratorCommissioning_Deprecated for MTRClusterAdministratorCommissioning {}
pub trait MTRClusterAdministratorCommissioning_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn openCommissioningWindowWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRAdministratorCommissioningClusterOpenCommissioningWindowParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, openCommissioningWindowWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn openBasicCommissioningWindowWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, openBasicCommissioningWindowWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn revokeCommissioningWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRAdministratorCommissioningClusterRevokeCommissioningParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, revokeCommissioningWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn revokeCommissioningWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, revokeCommissioningWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterOperationalCredentials_Deprecated for MTRClusterOperationalCredentials {}
pub trait MTRClusterOperationalCredentials_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn attestationRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTROperationalCredentialsClusterAttestationRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, attestationRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn certificateChainRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTROperationalCredentialsClusterCertificateChainRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, certificateChainRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn CSRRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTROperationalCredentialsClusterCSRRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, CSRRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn addNOCWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTROperationalCredentialsClusterAddNOCParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addNOCWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn updateNOCWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTROperationalCredentialsClusterUpdateNOCParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateNOCWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn updateFabricLabelWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTROperationalCredentialsClusterUpdateFabricLabelParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateFabricLabelWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn removeFabricWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTROperationalCredentialsClusterRemoveFabricParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeFabricWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn addTrustedRootCertificateWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTROperationalCredentialsClusterAddTrustedRootCertificateParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addTrustedRootCertificateWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterGroupKeyManagement_Deprecated for MTRClusterGroupKeyManagement {}
pub trait MTRClusterGroupKeyManagement_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn keySetWriteWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRGroupKeyManagementClusterKeySetWriteParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keySetWriteWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn keySetReadWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRGroupKeyManagementClusterKeySetReadParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keySetReadWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn keySetRemoveWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRGroupKeyManagementClusterKeySetRemoveParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keySetRemoveWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn keySetReadAllIndicesWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRGroupKeyManagementClusterKeySetReadAllIndicesParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keySetReadAllIndicesWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterFixedLabel_Deprecated for MTRClusterFixedLabel {}
pub trait MTRClusterFixedLabel_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
impl MTRClusterUserLabel_Deprecated for MTRClusterUserLabel {}
pub trait MTRClusterUserLabel_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
impl MTRClusterBooleanState_Deprecated for MTRClusterBooleanState {}
pub trait MTRClusterBooleanState_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
impl MTRClusterModeSelect_Deprecated for MTRClusterModeSelect {}
pub trait MTRClusterModeSelect_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn changeToModeWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRModeSelectClusterChangeToModeParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeToModeWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterDoorLock_Deprecated for MTRClusterDoorLock {}
pub trait MTRClusterDoorLock_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn lockDoorWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRDoorLockClusterLockDoorParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, lockDoorWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn unlockDoorWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRDoorLockClusterUnlockDoorParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unlockDoorWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn unlockWithTimeoutWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRDoorLockClusterUnlockWithTimeoutParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unlockWithTimeoutWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn setWeekDayScheduleWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRDoorLockClusterSetWeekDayScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWeekDayScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn getWeekDayScheduleWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRDoorLockClusterGetWeekDayScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getWeekDayScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn clearWeekDayScheduleWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRDoorLockClusterClearWeekDayScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearWeekDayScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn setYearDayScheduleWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRDoorLockClusterSetYearDayScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setYearDayScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn getYearDayScheduleWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRDoorLockClusterGetYearDayScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getYearDayScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn clearYearDayScheduleWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRDoorLockClusterClearYearDayScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearYearDayScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn setHolidayScheduleWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRDoorLockClusterSetHolidayScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHolidayScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn getHolidayScheduleWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRDoorLockClusterGetHolidayScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getHolidayScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn clearHolidayScheduleWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRDoorLockClusterClearHolidayScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearHolidayScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn setUserWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRDoorLockClusterSetUserParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn getUserWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRDoorLockClusterGetUserParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getUserWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn clearUserWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRDoorLockClusterClearUserParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearUserWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn setCredentialWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRDoorLockClusterSetCredentialParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredentialWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn getCredentialStatusWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRDoorLockClusterGetCredentialStatusParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getCredentialStatusWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn clearCredentialWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRDoorLockClusterClearCredentialParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearCredentialWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterWindowCovering_Deprecated for MTRClusterWindowCovering {}
pub trait MTRClusterWindowCovering_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn upOrOpenWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRWindowCoveringClusterUpOrOpenParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, upOrOpenWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn upOrOpenWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, upOrOpenWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn downOrCloseWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRWindowCoveringClusterDownOrCloseParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, downOrCloseWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn downOrCloseWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, downOrCloseWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn stopMotionWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRWindowCoveringClusterStopMotionParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopMotionWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn stopMotionWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopMotionWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn goToLiftValueWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRWindowCoveringClusterGoToLiftValueParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, goToLiftValueWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn goToLiftPercentageWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRWindowCoveringClusterGoToLiftPercentageParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, goToLiftPercentageWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn goToTiltValueWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRWindowCoveringClusterGoToTiltValueParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, goToTiltValueWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn goToTiltPercentageWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRWindowCoveringClusterGoToTiltPercentageParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, goToTiltPercentageWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterPumpConfigurationAndControl_Deprecated for MTRClusterPumpConfigurationAndControl {}
pub trait MTRClusterPumpConfigurationAndControl_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
impl MTRClusterThermostat_Deprecated for MTRClusterThermostat {}
pub trait MTRClusterThermostat_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn setpointRaiseLowerWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRThermostatClusterSetpointRaiseLowerParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setpointRaiseLowerWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn setWeeklyScheduleWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRThermostatClusterSetWeeklyScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWeeklyScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn getWeeklyScheduleWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRThermostatClusterGetWeeklyScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getWeeklyScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn clearWeeklyScheduleWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRThermostatClusterClearWeeklyScheduleParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearWeeklyScheduleWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn clearWeeklyScheduleWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, clearWeeklyScheduleWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterFanControl_Deprecated for MTRClusterFanControl {}
pub trait MTRClusterFanControl_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
impl MTRClusterThermostatUserInterfaceConfiguration_Deprecated
    for MTRClusterThermostatUserInterfaceConfiguration
{
}
pub trait MTRClusterThermostatUserInterfaceConfiguration_Deprecated:
    Sized + std::ops::Deref
{
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
impl MTRClusterColorControl_Deprecated for MTRClusterColorControl {}
pub trait MTRClusterColorControl_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn moveToHueWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRColorControlClusterMoveToHueParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToHueWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn moveHueWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRColorControlClusterMoveHueParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveHueWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn stepHueWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRColorControlClusterStepHueParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepHueWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn moveToSaturationWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRColorControlClusterMoveToSaturationParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToSaturationWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn moveSaturationWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRColorControlClusterMoveSaturationParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveSaturationWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn stepSaturationWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRColorControlClusterStepSaturationParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepSaturationWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn moveToHueAndSaturationWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRColorControlClusterMoveToHueAndSaturationParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToHueAndSaturationWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn moveToColorWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRColorControlClusterMoveToColorParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToColorWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn moveColorWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRColorControlClusterMoveColorParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveColorWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn stepColorWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRColorControlClusterStepColorParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepColorWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn moveToColorTemperatureWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRColorControlClusterMoveToColorTemperatureParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveToColorTemperatureWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn enhancedMoveToHueWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRColorControlClusterEnhancedMoveToHueParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enhancedMoveToHueWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn enhancedMoveHueWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRColorControlClusterEnhancedMoveHueParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enhancedMoveHueWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn enhancedStepHueWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRColorControlClusterEnhancedStepHueParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enhancedStepHueWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn enhancedMoveToHueAndSaturationWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRColorControlClusterEnhancedMoveToHueAndSaturationParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enhancedMoveToHueAndSaturationWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn colorLoopSetWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRColorControlClusterColorLoopSetParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, colorLoopSetWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn stopMoveStepWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRColorControlClusterStopMoveStepParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopMoveStepWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn moveColorTemperatureWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRColorControlClusterMoveColorTemperatureParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveColorTemperatureWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn stepColorTemperatureWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRColorControlClusterStepColorTemperatureParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stepColorTemperatureWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterBallastConfiguration_Deprecated for MTRClusterBallastConfiguration {}
pub trait MTRClusterBallastConfiguration_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeIntrinsicBalanceFactorWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeIntrinsicBalanceFactorWithParams : params)
    }
    unsafe fn writeAttributeIntrinsicBalanceFactorWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeIntrinsicBalanceFactorWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeIntrinsicBalanceFactorWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeIntrinsicBalanceFactorWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
}
impl MTRClusterIlluminanceMeasurement_Deprecated for MTRClusterIlluminanceMeasurement {}
pub trait MTRClusterIlluminanceMeasurement_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
impl MTRClusterTemperatureMeasurement_Deprecated for MTRClusterTemperatureMeasurement {}
pub trait MTRClusterTemperatureMeasurement_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
impl MTRClusterPressureMeasurement_Deprecated for MTRClusterPressureMeasurement {}
pub trait MTRClusterPressureMeasurement_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
impl MTRClusterFlowMeasurement_Deprecated for MTRClusterFlowMeasurement {}
pub trait MTRClusterFlowMeasurement_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
impl MTRClusterRelativeHumidityMeasurement_Deprecated for MTRClusterRelativeHumidityMeasurement {}
pub trait MTRClusterRelativeHumidityMeasurement_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
impl MTRClusterOccupancySensing_Deprecated for MTRClusterOccupancySensing {}
pub trait MTRClusterOccupancySensing_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributePirOccupiedToUnoccupiedDelayWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePirOccupiedToUnoccupiedDelayWithParams : params)
    }
    unsafe fn writeAttributePirOccupiedToUnoccupiedDelayWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePirOccupiedToUnoccupiedDelayWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributePirOccupiedToUnoccupiedDelayWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePirOccupiedToUnoccupiedDelayWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributePirUnoccupiedToOccupiedDelayWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePirUnoccupiedToOccupiedDelayWithParams : params)
    }
    unsafe fn writeAttributePirUnoccupiedToOccupiedDelayWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePirUnoccupiedToOccupiedDelayWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributePirUnoccupiedToOccupiedDelayWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePirUnoccupiedToOccupiedDelayWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributePirUnoccupiedToOccupiedThresholdWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePirUnoccupiedToOccupiedThresholdWithParams : params)
    }
    unsafe fn writeAttributePirUnoccupiedToOccupiedThresholdWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePirUnoccupiedToOccupiedThresholdWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributePirUnoccupiedToOccupiedThresholdWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePirUnoccupiedToOccupiedThresholdWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
}
impl MTRClusterWakeOnLan_Deprecated for MTRClusterWakeOnLan {}
pub trait MTRClusterWakeOnLan_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
impl MTRClusterChannel_Deprecated for MTRClusterChannel {}
pub trait MTRClusterChannel_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn changeChannelWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRChannelClusterChangeChannelParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeChannelWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn changeChannelByNumberWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRChannelClusterChangeChannelByNumberParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeChannelByNumberWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn skipChannelWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRChannelClusterSkipChannelParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, skipChannelWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterTargetNavigator_Deprecated for MTRClusterTargetNavigator {}
pub trait MTRClusterTargetNavigator_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn navigateTargetWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTargetNavigatorClusterNavigateTargetParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, navigateTargetWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterMediaPlayback_Deprecated for MTRClusterMediaPlayback {}
pub trait MTRClusterMediaPlayback_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn playWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterPlayParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, playWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn playWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, playWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn pauseWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterPauseParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn pauseWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn stopPlaybackWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterStopPlaybackParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopPlaybackWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn stopPlaybackWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopPlaybackWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn startOverWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterStartOverParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startOverWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn startOverWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startOverWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn previousWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterPreviousParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, previousWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn previousWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, previousWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn nextWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterNextParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, nextWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn nextWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, nextWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn rewindWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterRewindParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rewindWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn rewindWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rewindWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn fastForwardWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterFastForwardParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fastForwardWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn fastForwardWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fastForwardWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn skipForwardWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterSkipForwardParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, skipForwardWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn skipBackwardWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterSkipBackwardParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, skipBackwardWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn seekWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRMediaPlaybackClusterSeekParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, seekWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterMediaInput_Deprecated for MTRClusterMediaInput {}
pub trait MTRClusterMediaInput_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn selectInputWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRMediaInputClusterSelectInputParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, selectInputWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn showInputStatusWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRMediaInputClusterShowInputStatusParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, showInputStatusWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn showInputStatusWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, showInputStatusWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn hideInputStatusWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRMediaInputClusterHideInputStatusParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hideInputStatusWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn hideInputStatusWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hideInputStatusWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn renameInputWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRMediaInputClusterRenameInputParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, renameInputWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterLowPower_Deprecated for MTRClusterLowPower {}
pub trait MTRClusterLowPower_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn sleepWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRLowPowerClusterSleepParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sleepWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn sleepWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sleepWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterKeypadInput_Deprecated for MTRClusterKeypadInput {}
pub trait MTRClusterKeypadInput_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn sendKeyWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRKeypadInputClusterSendKeyParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sendKeyWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterContentLauncher_Deprecated for MTRClusterContentLauncher {}
pub trait MTRClusterContentLauncher_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn launchContentWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRContentLauncherClusterLaunchContentParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, launchContentWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn launchURLWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRContentLauncherClusterLaunchURLParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, launchURLWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterAudioOutput_Deprecated for MTRClusterAudioOutput {}
pub trait MTRClusterAudioOutput_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn selectOutputWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRAudioOutputClusterSelectOutputParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, selectOutputWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn renameOutputWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRAudioOutputClusterRenameOutputParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, renameOutputWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterApplicationLauncher_Deprecated for MTRClusterApplicationLauncher {}
pub trait MTRClusterApplicationLauncher_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn launchAppWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRApplicationLauncherClusterLaunchAppParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, launchAppWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn stopAppWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRApplicationLauncherClusterStopAppParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopAppWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn hideAppWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRApplicationLauncherClusterHideAppParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hideAppWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterApplicationBasic_Deprecated for MTRClusterApplicationBasic {}
pub trait MTRClusterApplicationBasic_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
impl MTRClusterAccountLogin_Deprecated for MTRClusterAccountLogin {}
pub trait MTRClusterAccountLogin_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn getSetupPINWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRAccountLoginClusterGetSetupPINParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getSetupPINWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn loginWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRAccountLoginClusterLoginParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, loginWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn logoutWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRAccountLoginClusterLogoutParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, logoutWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn logoutWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, logoutWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRClusterTestCluster_Deprecated for MTRClusterTestCluster {}
pub trait MTRClusterTestCluster_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn testWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testNotHandledWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestNotHandledParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNotHandledWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testNotHandledWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNotHandledWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testSpecificWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestSpecificParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSpecificWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testSpecificWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSpecificWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testUnknownCommandWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestUnknownCommandParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testUnknownCommandWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testUnknownCommandWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testUnknownCommandWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testAddArgumentsWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestAddArgumentsParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testAddArgumentsWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testSimpleArgumentRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestSimpleArgumentRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSimpleArgumentRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testStructArrayArgumentRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestStructArrayArgumentRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testStructArrayArgumentRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testStructArgumentRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestStructArgumentRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testStructArgumentRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testNestedStructArgumentRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestNestedStructArgumentRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNestedStructArgumentRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testListStructArgumentRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestListStructArgumentRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testListStructArgumentRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testListInt8UArgumentRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestListInt8UArgumentRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testListInt8UArgumentRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testNestedStructListArgumentRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestNestedStructListArgumentRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNestedStructListArgumentRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testListNestedStructListArgumentRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestListNestedStructListArgumentRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testListNestedStructListArgumentRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testListInt8UReverseRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestListInt8UReverseRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testListInt8UReverseRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testEnumsRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestEnumsRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testEnumsRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testNullableOptionalRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestNullableOptionalRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNullableOptionalRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testNullableOptionalRequestWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testNullableOptionalRequestWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testComplexNullableOptionalRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestComplexNullableOptionalRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testComplexNullableOptionalRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn simpleStructEchoRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterSimpleStructEchoRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, simpleStructEchoRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn timedInvokeRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterTimedInvokeRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, timedInvokeRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn timedInvokeRequestWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, timedInvokeRequestWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testSimpleOptionalArgumentRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSimpleOptionalArgumentRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testSimpleOptionalArgumentRequestWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testSimpleOptionalArgumentRequestWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testEmitTestEventRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestEmitTestEventRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testEmitTestEventRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn testEmitTestFabricScopedEventRequestWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, testEmitTestFabricScopedEventRequestWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
impl MTRGroupKeyManagementClusterKeySetReadAllIndicesParams_
    for MTRGroupKeyManagementClusterKeySetReadAllIndicesParams
{
}
pub trait MTRGroupKeyManagementClusterKeySetReadAllIndicesParams_: Sized + std::ops::Deref {
    unsafe fn groupKeySetIDs(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupKeySetIDs)
    }
    unsafe fn setGroupKeySetIDs_(&self, groupKeySetIDs: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupKeySetIDs : groupKeySetIDs)
    }
}
pub type MTRFanControlWindSettingMask = u8;
pub type MTROTASoftwareUpdateProviderOTAApplyUpdateAction = u8;
pub type MTROTASoftwareUpdateProviderOTADownloadProtocol = u8;
pub type MTROTASoftwareUpdateProviderOTAQueryStatus = u8;
pub type MTROTASoftwareUpdateRequestorOTAAnnouncementReason = u8;
pub type MTROTASoftwareUpdateRequestorOTAChangeReason = u8;
pub type MTROTASoftwareUpdateRequestorOTAUpdateState = u8;
pub type MTRColorControlSaturationMoveMode = u8;
pub type MTRColorControlSaturationStepMode = u8;
impl MTRBaseClusterColorControl_AttributesNowReadonly for MTRBaseClusterColorControl {}
pub trait MTRBaseClusterColorControl_AttributesNowReadonly: Sized + std::ops::Deref {
    unsafe fn writeAttributeWhitePointXWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWhitePointXWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeWhitePointXWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWhitePointXWithValue : value, params : params, completion : completion)
    }
    unsafe fn writeAttributeWhitePointYWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWhitePointYWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeWhitePointYWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWhitePointYWithValue : value, params : params, completion : completion)
    }
    unsafe fn writeAttributeColorPointRXWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointRXWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeColorPointRXWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointRXWithValue : value, params : params, completion : completion)
    }
    unsafe fn writeAttributeColorPointRYWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointRYWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeColorPointRYWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointRYWithValue : value, params : params, completion : completion)
    }
    unsafe fn writeAttributeColorPointRIntensityWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointRIntensityWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeColorPointRIntensityWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointRIntensityWithValue : value, params : params, completion : completion)
    }
    unsafe fn writeAttributeColorPointGXWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointGXWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeColorPointGXWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointGXWithValue : value, params : params, completion : completion)
    }
    unsafe fn writeAttributeColorPointGYWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointGYWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeColorPointGYWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointGYWithValue : value, params : params, completion : completion)
    }
    unsafe fn writeAttributeColorPointGIntensityWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointGIntensityWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeColorPointGIntensityWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointGIntensityWithValue : value, params : params, completion : completion)
    }
    unsafe fn writeAttributeColorPointBXWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointBXWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeColorPointBXWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointBXWithValue : value, params : params, completion : completion)
    }
    unsafe fn writeAttributeColorPointBYWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointBYWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeColorPointBYWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointBYWithValue : value, params : params, completion : completion)
    }
    unsafe fn writeAttributeColorPointBIntensityWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointBIntensityWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeColorPointBIntensityWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointBIntensityWithValue : value, params : params, completion : completion)
    }
    unsafe fn writeAttributeWhitePointXWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWhitePointXWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeWhitePointXWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWhitePointXWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeWhitePointYWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWhitePointYWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeWhitePointYWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWhitePointYWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeColorPointRXWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointRXWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeColorPointRXWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointRXWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeColorPointRYWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointRYWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeColorPointRYWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointRYWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeColorPointRIntensityWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointRIntensityWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeColorPointRIntensityWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointRIntensityWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeColorPointGXWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointGXWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeColorPointGXWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointGXWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeColorPointGYWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointGYWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeColorPointGYWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointGYWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeColorPointGIntensityWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointGIntensityWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeColorPointGIntensityWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointGIntensityWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeColorPointBXWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointBXWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeColorPointBXWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointBXWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeColorPointBYWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointBYWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeColorPointBYWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointBYWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeColorPointBIntensityWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointBIntensityWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeColorPointBIntensityWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointBIntensityWithValue : value, params : params, completionHandler : completionHandler)
    }
}
impl MTRClusterColorControl_AttributesNowReadonly for MTRClusterColorControl {}
pub trait MTRClusterColorControl_AttributesNowReadonly: Sized + std::ops::Deref {
    unsafe fn writeAttributeWhitePointXWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWhitePointXWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeWhitePointXWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWhitePointXWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn writeAttributeWhitePointYWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWhitePointYWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeWhitePointYWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWhitePointYWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn writeAttributeColorPointRXWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointRXWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeColorPointRXWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointRXWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn writeAttributeColorPointRYWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointRYWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeColorPointRYWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointRYWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn writeAttributeColorPointRIntensityWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointRIntensityWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeColorPointRIntensityWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointRIntensityWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn writeAttributeColorPointGXWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointGXWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeColorPointGXWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointGXWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn writeAttributeColorPointGYWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointGYWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeColorPointGYWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointGYWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn writeAttributeColorPointGIntensityWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointGIntensityWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeColorPointGIntensityWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointGIntensityWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn writeAttributeColorPointBXWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointBXWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeColorPointBXWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointBXWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn writeAttributeColorPointBYWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointBYWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeColorPointBYWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointBYWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn writeAttributeColorPointBIntensityWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointBIntensityWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeColorPointBIntensityWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeColorPointBIntensityWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterOnOffSwitchConfiguration(pub id);
impl std::ops::Deref for MTRBaseClusterOnOffSwitchConfiguration {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterOnOffSwitchConfiguration {}
impl MTRBaseClusterOnOffSwitchConfiguration {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOffSwitchConfiguration").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterOnOffSwitchConfiguration {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterOnOffSwitchConfiguration {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterOnOffSwitchConfiguration, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOffSwitchConfiguration").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterOnOffSwitchConfiguration(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterOnOffSwitchConfiguration" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterOnOffSwitchConfiguration {}
impl INSObject for MTRBaseClusterOnOffSwitchConfiguration {}
impl PNSObject for MTRBaseClusterOnOffSwitchConfiguration {}
impl IMTRBaseClusterOnOffSwitchConfiguration for MTRBaseClusterOnOffSwitchConfiguration {}
pub trait IMTRBaseClusterOnOffSwitchConfiguration: Sized + std::ops::Deref {
    unsafe fn readAttributeSwitchTypeWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSwitchTypeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeSwitchTypeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSwitchTypeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSwitchActionsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSwitchActionsWithCompletion : completion)
    }
    unsafe fn writeAttributeSwitchActionsWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSwitchActionsWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeSwitchActionsWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSwitchActionsWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeSwitchActionsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSwitchActionsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeSwitchTypeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOffSwitchConfiguration").unwrap(), readAttributeSwitchTypeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeSwitchActionsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOffSwitchConfiguration").unwrap(), readAttributeSwitchActionsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOffSwitchConfiguration").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOffSwitchConfiguration").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOffSwitchConfiguration").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOffSwitchConfiguration").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOffSwitchConfiguration").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOffSwitchConfiguration").unwrap(), new)
    }
}
impl MTRBaseClusterOnOffSwitchConfiguration_Availability
    for MTRBaseClusterOnOffSwitchConfiguration
{
}
pub trait MTRBaseClusterOnOffSwitchConfiguration_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
impl MTRBaseClusterOnOffSwitchConfiguration_Deprecated for MTRBaseClusterOnOffSwitchConfiguration {}
pub trait MTRBaseClusterOnOffSwitchConfiguration_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeSwitchTypeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSwitchTypeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSwitchTypeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSwitchTypeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSwitchActionsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSwitchActionsWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeSwitchActionsWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSwitchActionsWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeSwitchActionsWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSwitchActionsWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeSwitchActionsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeSwitchActionsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeSwitchTypeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOffSwitchConfiguration").unwrap(), readAttributeSwitchTypeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeSwitchActionsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOffSwitchConfiguration").unwrap(), readAttributeSwitchActionsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOffSwitchConfiguration").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOffSwitchConfiguration").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOffSwitchConfiguration").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOffSwitchConfiguration").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterOnOffSwitchConfiguration").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterOnOffSwitchConfiguration(pub id);
impl std::ops::Deref for MTRClusterOnOffSwitchConfiguration {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterOnOffSwitchConfiguration {}
impl MTRClusterOnOffSwitchConfiguration {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOnOffSwitchConfiguration").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterOnOffSwitchConfiguration {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterOnOffSwitchConfiguration {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericCluster,
    ) -> Result<MTRClusterOnOffSwitchConfiguration, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterOnOffSwitchConfiguration").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterOnOffSwitchConfiguration(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterOnOffSwitchConfiguration")
        }
    }
}
impl IMTRCluster for MTRClusterOnOffSwitchConfiguration {}
impl INSObject for MTRClusterOnOffSwitchConfiguration {}
impl PNSObject for MTRClusterOnOffSwitchConfiguration {}
impl IMTRClusterOnOffSwitchConfiguration for MTRClusterOnOffSwitchConfiguration {}
pub trait IMTRClusterOnOffSwitchConfiguration: Sized + std::ops::Deref {
    unsafe fn readAttributeSwitchTypeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSwitchTypeWithParams : params)
    }
    unsafe fn readAttributeSwitchActionsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeSwitchActionsWithParams : params)
    }
    unsafe fn writeAttributeSwitchActionsWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSwitchActionsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeSwitchActionsWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeSwitchActionsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterOnOffSwitchConfiguration").unwrap(), new)
    }
}
impl MTRClusterOnOffSwitchConfiguration_Availability for MTRClusterOnOffSwitchConfiguration {}
pub trait MTRClusterOnOffSwitchConfiguration_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
impl MTRClusterOnOffSwitchConfiguration_Deprecated for MTRClusterOnOffSwitchConfiguration {}
pub trait MTRClusterOnOffSwitchConfiguration_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterBinaryInputBasic(pub id);
impl std::ops::Deref for MTRBaseClusterBinaryInputBasic {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterBinaryInputBasic {}
impl MTRBaseClusterBinaryInputBasic {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterBinaryInputBasic {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterBinaryInputBasic {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterBinaryInputBasic, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterBinaryInputBasic(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterBinaryInputBasic")
        }
    }
}
impl IMTRCluster for MTRBaseClusterBinaryInputBasic {}
impl INSObject for MTRBaseClusterBinaryInputBasic {}
impl PNSObject for MTRBaseClusterBinaryInputBasic {}
impl IMTRBaseClusterBinaryInputBasic for MTRBaseClusterBinaryInputBasic {}
pub trait IMTRBaseClusterBinaryInputBasic: Sized + std::ops::Deref {
    unsafe fn readAttributeActiveTextWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveTextWithCompletion : completion)
    }
    unsafe fn writeAttributeActiveTextWithValue_completion_(
        &self,
        value: NSString,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeActiveTextWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeActiveTextWithValue_params_completion_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeActiveTextWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeActiveTextWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveTextWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDescriptionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDescriptionWithCompletion : completion)
    }
    unsafe fn writeAttributeDescriptionWithValue_completion_(
        &self,
        value: NSString,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDescriptionWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeDescriptionWithValue_params_completion_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDescriptionWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeDescriptionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDescriptionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInactiveTextWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInactiveTextWithCompletion : completion)
    }
    unsafe fn writeAttributeInactiveTextWithValue_completion_(
        &self,
        value: NSString,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInactiveTextWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeInactiveTextWithValue_params_completion_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInactiveTextWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeInactiveTextWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInactiveTextWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOutOfServiceWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOutOfServiceWithCompletion : completion)
    }
    unsafe fn writeAttributeOutOfServiceWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOutOfServiceWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeOutOfServiceWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOutOfServiceWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeOutOfServiceWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOutOfServiceWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePolarityWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePolarityWithCompletion : completion)
    }
    unsafe fn subscribeAttributePolarityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePolarityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePresentValueWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePresentValueWithCompletion : completion)
    }
    unsafe fn writeAttributePresentValueWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePresentValueWithValue : value, completion : completion)
    }
    unsafe fn writeAttributePresentValueWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePresentValueWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributePresentValueWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePresentValueWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeReliabilityWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReliabilityWithCompletion : completion)
    }
    unsafe fn writeAttributeReliabilityWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeReliabilityWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeReliabilityWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeReliabilityWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeReliabilityWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeReliabilityWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStatusFlagsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStatusFlagsWithCompletion : completion)
    }
    unsafe fn subscribeAttributeStatusFlagsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStatusFlagsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeApplicationTypeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApplicationTypeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeApplicationTypeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeApplicationTypeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeActiveTextWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeActiveTextWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDescriptionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeDescriptionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInactiveTextWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeInactiveTextWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOutOfServiceWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeOutOfServiceWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePolarityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributePolarityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePresentValueWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributePresentValueWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeReliabilityWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeReliabilityWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeStatusFlagsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeStatusFlagsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeApplicationTypeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeApplicationTypeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), new)
    }
}
impl MTRBaseClusterBinaryInputBasic_Availability for MTRBaseClusterBinaryInputBasic {}
pub trait MTRBaseClusterBinaryInputBasic_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
impl MTRBaseClusterBinaryInputBasic_Deprecated for MTRBaseClusterBinaryInputBasic {}
pub trait MTRBaseClusterBinaryInputBasic_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn readAttributeActiveTextWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveTextWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeActiveTextWithValue_completionHandler_(
        &self,
        value: NSString,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeActiveTextWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeActiveTextWithValue_params_completionHandler_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeActiveTextWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActiveTextWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveTextWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDescriptionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDescriptionWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeDescriptionWithValue_completionHandler_(
        &self,
        value: NSString,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDescriptionWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeDescriptionWithValue_params_completionHandler_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDescriptionWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDescriptionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDescriptionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInactiveTextWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInactiveTextWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeInactiveTextWithValue_completionHandler_(
        &self,
        value: NSString,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInactiveTextWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeInactiveTextWithValue_params_completionHandler_(
        &self,
        value: NSString,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInactiveTextWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInactiveTextWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInactiveTextWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOutOfServiceWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOutOfServiceWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeOutOfServiceWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOutOfServiceWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeOutOfServiceWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOutOfServiceWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOutOfServiceWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOutOfServiceWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePolarityWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePolarityWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePolarityWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePolarityWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePresentValueWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePresentValueWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributePresentValueWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePresentValueWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributePresentValueWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePresentValueWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePresentValueWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePresentValueWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeReliabilityWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReliabilityWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeReliabilityWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeReliabilityWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeReliabilityWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeReliabilityWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeReliabilityWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeReliabilityWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeStatusFlagsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStatusFlagsWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeStatusFlagsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeStatusFlagsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeApplicationTypeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApplicationTypeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeApplicationTypeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeApplicationTypeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveTextWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeActiveTextWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDescriptionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeDescriptionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInactiveTextWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeInactiveTextWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOutOfServiceWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeOutOfServiceWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePolarityWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributePolarityWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePresentValueWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributePresentValueWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeReliabilityWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeReliabilityWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeStatusFlagsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeStatusFlagsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeApplicationTypeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeApplicationTypeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBinaryInputBasic").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterBinaryInputBasic(pub id);
impl std::ops::Deref for MTRClusterBinaryInputBasic {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterBinaryInputBasic {}
impl MTRClusterBinaryInputBasic {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterBinaryInputBasic").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterBinaryInputBasic {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterBinaryInputBasic {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterBinaryInputBasic, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterBinaryInputBasic").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterBinaryInputBasic(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterBinaryInputBasic")
        }
    }
}
impl IMTRCluster for MTRClusterBinaryInputBasic {}
impl INSObject for MTRClusterBinaryInputBasic {}
impl PNSObject for MTRClusterBinaryInputBasic {}
impl IMTRClusterBinaryInputBasic for MTRClusterBinaryInputBasic {}
pub trait IMTRClusterBinaryInputBasic: Sized + std::ops::Deref {
    unsafe fn readAttributeActiveTextWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveTextWithParams : params)
    }
    unsafe fn writeAttributeActiveTextWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeActiveTextWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeActiveTextWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeActiveTextWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeDescriptionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDescriptionWithParams : params)
    }
    unsafe fn writeAttributeDescriptionWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDescriptionWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeDescriptionWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeDescriptionWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeInactiveTextWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInactiveTextWithParams : params)
    }
    unsafe fn writeAttributeInactiveTextWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInactiveTextWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeInactiveTextWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeInactiveTextWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeOutOfServiceWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOutOfServiceWithParams : params)
    }
    unsafe fn writeAttributeOutOfServiceWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOutOfServiceWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeOutOfServiceWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOutOfServiceWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributePolarityWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePolarityWithParams : params)
    }
    unsafe fn readAttributePresentValueWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePresentValueWithParams : params)
    }
    unsafe fn writeAttributePresentValueWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePresentValueWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributePresentValueWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributePresentValueWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeReliabilityWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReliabilityWithParams : params)
    }
    unsafe fn writeAttributeReliabilityWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeReliabilityWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeReliabilityWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeReliabilityWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeStatusFlagsWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeStatusFlagsWithParams : params)
    }
    unsafe fn readAttributeApplicationTypeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApplicationTypeWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterBinaryInputBasic").unwrap(), new)
    }
}
impl MTRClusterBinaryInputBasic_Availability for MTRClusterBinaryInputBasic {}
pub trait MTRClusterBinaryInputBasic_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
impl MTRClusterBinaryInputBasic_Deprecated for MTRClusterBinaryInputBasic {}
pub trait MTRClusterBinaryInputBasic_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBarrierControlClusterBarrierControlGoToPercentParams(pub id);
impl std::ops::Deref for MTRBarrierControlClusterBarrierControlGoToPercentParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBarrierControlClusterBarrierControlGoToPercentParams {}
impl MTRBarrierControlClusterBarrierControlGoToPercentParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBarrierControlClusterBarrierControlGoToPercentParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRBarrierControlClusterBarrierControlGoToPercentParams {}
impl INSObject for MTRBarrierControlClusterBarrierControlGoToPercentParams {}
impl PNSObject for MTRBarrierControlClusterBarrierControlGoToPercentParams {}
impl std::convert::TryFrom<NSObject> for MTRBarrierControlClusterBarrierControlGoToPercentParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRBarrierControlClusterBarrierControlGoToPercentParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBarrierControlClusterBarrierControlGoToPercentParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRBarrierControlClusterBarrierControlGoToPercentParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRBarrierControlClusterBarrierControlGoToPercentParams" ,)
        }
    }
}
impl IMTRBarrierControlClusterBarrierControlGoToPercentParams
    for MTRBarrierControlClusterBarrierControlGoToPercentParams
{
}
pub trait IMTRBarrierControlClusterBarrierControlGoToPercentParams:
    Sized + std::ops::Deref
{
    unsafe fn percentOpen(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, percentOpen)
    }
    unsafe fn setPercentOpen_(&self, percentOpen: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPercentOpen : percentOpen)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBarrierControlClusterBarrierControlStopParams(pub id);
impl std::ops::Deref for MTRBarrierControlClusterBarrierControlStopParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBarrierControlClusterBarrierControlStopParams {}
impl MTRBarrierControlClusterBarrierControlStopParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBarrierControlClusterBarrierControlStopParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRBarrierControlClusterBarrierControlStopParams {}
impl INSObject for MTRBarrierControlClusterBarrierControlStopParams {}
impl PNSObject for MTRBarrierControlClusterBarrierControlStopParams {}
impl std::convert::TryFrom<NSObject> for MTRBarrierControlClusterBarrierControlStopParams {
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRBarrierControlClusterBarrierControlStopParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBarrierControlClusterBarrierControlStopParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRBarrierControlClusterBarrierControlStopParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRBarrierControlClusterBarrierControlStopParams" ,)
        }
    }
}
impl IMTRBarrierControlClusterBarrierControlStopParams
    for MTRBarrierControlClusterBarrierControlStopParams
{
}
pub trait IMTRBarrierControlClusterBarrierControlStopParams: Sized + std::ops::Deref {
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterBarrierControl(pub id);
impl std::ops::Deref for MTRBaseClusterBarrierControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterBarrierControl {}
impl MTRBaseClusterBarrierControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterBarrierControl {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterBarrierControl {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterBarrierControl, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap()) };
        if is_kind_of {
            Ok(MTRBaseClusterBarrierControl(parent.0))
        } else {
            Err("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterBarrierControl")
        }
    }
}
impl IMTRCluster for MTRBaseClusterBarrierControl {}
impl INSObject for MTRBaseClusterBarrierControl {}
impl PNSObject for MTRBaseClusterBarrierControl {}
impl IMTRBaseClusterBarrierControl for MTRBaseClusterBarrierControl {}
pub trait IMTRBaseClusterBarrierControl: Sized + std::ops::Deref {
    unsafe fn barrierControlGoToPercentWithParams_completion_(
        &self,
        params: MTRBarrierControlClusterBarrierControlGoToPercentParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, barrierControlGoToPercentWithParams : params, completion : completion)
    }
    unsafe fn barrierControlStopWithParams_completion_(
        &self,
        params: MTRBarrierControlClusterBarrierControlStopParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, barrierControlStopWithParams : params, completion : completion)
    }
    unsafe fn barrierControlStopWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, barrierControlStopWithCompletion : completion)
    }
    unsafe fn readAttributeBarrierMovingStateWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierMovingStateWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBarrierMovingStateWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBarrierMovingStateWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBarrierSafetyStatusWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierSafetyStatusWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBarrierSafetyStatusWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBarrierSafetyStatusWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBarrierCapabilitiesWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierCapabilitiesWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBarrierCapabilitiesWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBarrierCapabilitiesWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBarrierOpenEventsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierOpenEventsWithCompletion : completion)
    }
    unsafe fn writeAttributeBarrierOpenEventsWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierOpenEventsWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeBarrierOpenEventsWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierOpenEventsWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeBarrierOpenEventsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBarrierOpenEventsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBarrierCloseEventsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierCloseEventsWithCompletion : completion)
    }
    unsafe fn writeAttributeBarrierCloseEventsWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierCloseEventsWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeBarrierCloseEventsWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierCloseEventsWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeBarrierCloseEventsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBarrierCloseEventsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBarrierCommandOpenEventsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierCommandOpenEventsWithCompletion : completion)
    }
    unsafe fn writeAttributeBarrierCommandOpenEventsWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierCommandOpenEventsWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeBarrierCommandOpenEventsWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierCommandOpenEventsWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeBarrierCommandOpenEventsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBarrierCommandOpenEventsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBarrierCommandCloseEventsWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierCommandCloseEventsWithCompletion : completion)
    }
    unsafe fn writeAttributeBarrierCommandCloseEventsWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierCommandCloseEventsWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeBarrierCommandCloseEventsWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierCommandCloseEventsWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeBarrierCommandCloseEventsWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBarrierCommandCloseEventsWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBarrierOpenPeriodWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierOpenPeriodWithCompletion : completion)
    }
    unsafe fn writeAttributeBarrierOpenPeriodWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierOpenPeriodWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeBarrierOpenPeriodWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierOpenPeriodWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeBarrierOpenPeriodWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBarrierOpenPeriodWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBarrierClosePeriodWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierClosePeriodWithCompletion : completion)
    }
    unsafe fn writeAttributeBarrierClosePeriodWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierClosePeriodWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeBarrierClosePeriodWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierClosePeriodWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeBarrierClosePeriodWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBarrierClosePeriodWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBarrierPositionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierPositionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeBarrierPositionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBarrierPositionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeBarrierMovingStateWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeBarrierMovingStateWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBarrierSafetyStatusWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeBarrierSafetyStatusWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBarrierCapabilitiesWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeBarrierCapabilitiesWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBarrierOpenEventsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeBarrierOpenEventsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBarrierCloseEventsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeBarrierCloseEventsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBarrierCommandOpenEventsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeBarrierCommandOpenEventsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBarrierCommandCloseEventsWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeBarrierCommandCloseEventsWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBarrierOpenPeriodWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeBarrierOpenPeriodWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBarrierClosePeriodWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeBarrierClosePeriodWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeBarrierPositionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeBarrierPositionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), new)
    }
}
impl MTRBaseClusterBarrierControl_Availability for MTRBaseClusterBarrierControl {}
pub trait MTRBaseClusterBarrierControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
impl MTRBaseClusterBarrierControl_Deprecated for MTRBaseClusterBarrierControl {}
pub trait MTRBaseClusterBarrierControl_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn barrierControlGoToPercentWithParams_completionHandler_(
        &self,
        params: MTRBarrierControlClusterBarrierControlGoToPercentParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, barrierControlGoToPercentWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn barrierControlStopWithParams_completionHandler_(
        &self,
        params: MTRBarrierControlClusterBarrierControlStopParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, barrierControlStopWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn barrierControlStopWithCompletionHandler_(
        &self,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, barrierControlStopWithCompletionHandler : completionHandler)
    }
    unsafe fn readAttributeBarrierMovingStateWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierMovingStateWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBarrierMovingStateWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBarrierMovingStateWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBarrierSafetyStatusWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierSafetyStatusWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBarrierSafetyStatusWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBarrierSafetyStatusWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBarrierCapabilitiesWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierCapabilitiesWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBarrierCapabilitiesWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBarrierCapabilitiesWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBarrierOpenEventsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierOpenEventsWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeBarrierOpenEventsWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierOpenEventsWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeBarrierOpenEventsWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierOpenEventsWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBarrierOpenEventsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBarrierOpenEventsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBarrierCloseEventsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierCloseEventsWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeBarrierCloseEventsWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierCloseEventsWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeBarrierCloseEventsWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierCloseEventsWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBarrierCloseEventsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBarrierCloseEventsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBarrierCommandOpenEventsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierCommandOpenEventsWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeBarrierCommandOpenEventsWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierCommandOpenEventsWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeBarrierCommandOpenEventsWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierCommandOpenEventsWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBarrierCommandOpenEventsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBarrierCommandOpenEventsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBarrierCommandCloseEventsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierCommandCloseEventsWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeBarrierCommandCloseEventsWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierCommandCloseEventsWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeBarrierCommandCloseEventsWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierCommandCloseEventsWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBarrierCommandCloseEventsWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBarrierCommandCloseEventsWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBarrierOpenPeriodWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierOpenPeriodWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeBarrierOpenPeriodWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierOpenPeriodWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeBarrierOpenPeriodWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierOpenPeriodWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBarrierOpenPeriodWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBarrierOpenPeriodWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBarrierClosePeriodWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierClosePeriodWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeBarrierClosePeriodWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierClosePeriodWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeBarrierClosePeriodWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierClosePeriodWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBarrierClosePeriodWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBarrierClosePeriodWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBarrierPositionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierPositionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeBarrierPositionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeBarrierPositionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeBarrierMovingStateWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeBarrierMovingStateWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBarrierSafetyStatusWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeBarrierSafetyStatusWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBarrierCapabilitiesWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeBarrierCapabilitiesWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBarrierOpenEventsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeBarrierOpenEventsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBarrierCloseEventsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeBarrierCloseEventsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBarrierCommandOpenEventsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeBarrierCommandOpenEventsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBarrierCommandCloseEventsWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeBarrierCommandCloseEventsWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBarrierOpenPeriodWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeBarrierOpenPeriodWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBarrierClosePeriodWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeBarrierClosePeriodWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeBarrierPositionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeBarrierPositionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterBarrierControl").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterBarrierControl(pub id);
impl std::ops::Deref for MTRClusterBarrierControl {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterBarrierControl {}
impl MTRClusterBarrierControl {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterBarrierControl").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterBarrierControl {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterBarrierControl {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterBarrierControl, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterBarrierControl").unwrap()) };
        if is_kind_of {
            Ok(MTRClusterBarrierControl(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterBarrierControl")
        }
    }
}
impl IMTRCluster for MTRClusterBarrierControl {}
impl INSObject for MTRClusterBarrierControl {}
impl PNSObject for MTRClusterBarrierControl {}
impl IMTRClusterBarrierControl for MTRClusterBarrierControl {}
pub trait IMTRClusterBarrierControl: Sized + std::ops::Deref {
    unsafe fn barrierControlGoToPercentWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRBarrierControlClusterBarrierControlGoToPercentParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, barrierControlGoToPercentWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn barrierControlStopWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRBarrierControlClusterBarrierControlStopParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, barrierControlStopWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn barrierControlStopWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, barrierControlStopWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeBarrierMovingStateWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierMovingStateWithParams : params)
    }
    unsafe fn readAttributeBarrierSafetyStatusWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierSafetyStatusWithParams : params)
    }
    unsafe fn readAttributeBarrierCapabilitiesWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierCapabilitiesWithParams : params)
    }
    unsafe fn readAttributeBarrierOpenEventsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierOpenEventsWithParams : params)
    }
    unsafe fn writeAttributeBarrierOpenEventsWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierOpenEventsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeBarrierOpenEventsWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierOpenEventsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeBarrierCloseEventsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierCloseEventsWithParams : params)
    }
    unsafe fn writeAttributeBarrierCloseEventsWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierCloseEventsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeBarrierCloseEventsWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierCloseEventsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeBarrierCommandOpenEventsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierCommandOpenEventsWithParams : params)
    }
    unsafe fn writeAttributeBarrierCommandOpenEventsWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierCommandOpenEventsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeBarrierCommandOpenEventsWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierCommandOpenEventsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeBarrierCommandCloseEventsWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierCommandCloseEventsWithParams : params)
    }
    unsafe fn writeAttributeBarrierCommandCloseEventsWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierCommandCloseEventsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeBarrierCommandCloseEventsWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierCommandCloseEventsWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeBarrierOpenPeriodWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierOpenPeriodWithParams : params)
    }
    unsafe fn writeAttributeBarrierOpenPeriodWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierOpenPeriodWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeBarrierOpenPeriodWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierOpenPeriodWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeBarrierClosePeriodWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierClosePeriodWithParams : params)
    }
    unsafe fn writeAttributeBarrierClosePeriodWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierClosePeriodWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeBarrierClosePeriodWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeBarrierClosePeriodWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeBarrierPositionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeBarrierPositionWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterBarrierControl").unwrap(), new)
    }
}
impl MTRClusterBarrierControl_Availability for MTRClusterBarrierControl {}
pub trait MTRClusterBarrierControl_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
impl MTRClusterBarrierControl_Deprecated for MTRClusterBarrierControl {}
pub trait MTRClusterBarrierControl_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn barrierControlGoToPercentWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRBarrierControlClusterBarrierControlGoToPercentParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, barrierControlGoToPercentWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn barrierControlStopWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRBarrierControlClusterBarrierControlStopParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, barrierControlStopWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn barrierControlStopWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, barrierControlStopWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRElectricalMeasurementClusterGetProfileInfoResponseCommandParams(pub id);
impl std::ops::Deref for MTRElectricalMeasurementClusterGetProfileInfoResponseCommandParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRElectricalMeasurementClusterGetProfileInfoResponseCommandParams {}
impl MTRElectricalMeasurementClusterGetProfileInfoResponseCommandParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRElectricalMeasurementClusterGetProfileInfoResponseCommandParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRElectricalMeasurementClusterGetProfileInfoResponseCommandParams {}
impl INSObject for MTRElectricalMeasurementClusterGetProfileInfoResponseCommandParams {}
impl PNSObject for MTRElectricalMeasurementClusterGetProfileInfoResponseCommandParams {}
impl std::convert::TryFrom<NSObject>
    for MTRElectricalMeasurementClusterGetProfileInfoResponseCommandParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRElectricalMeasurementClusterGetProfileInfoResponseCommandParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRElectricalMeasurementClusterGetProfileInfoResponseCommandParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRElectricalMeasurementClusterGetProfileInfoResponseCommandParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRElectricalMeasurementClusterGetProfileInfoResponseCommandParams" ,)
        }
    }
}
impl IMTRElectricalMeasurementClusterGetProfileInfoResponseCommandParams
    for MTRElectricalMeasurementClusterGetProfileInfoResponseCommandParams
{
}
pub trait IMTRElectricalMeasurementClusterGetProfileInfoResponseCommandParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn profileCount(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, profileCount)
    }
    unsafe fn setProfileCount_(&self, profileCount: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProfileCount : profileCount)
    }
    unsafe fn profileIntervalPeriod(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, profileIntervalPeriod)
    }
    unsafe fn setProfileIntervalPeriod_(&self, profileIntervalPeriod: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProfileIntervalPeriod : profileIntervalPeriod)
    }
    unsafe fn maxNumberOfIntervals(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxNumberOfIntervals)
    }
    unsafe fn setMaxNumberOfIntervals_(&self, maxNumberOfIntervals: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxNumberOfIntervals : maxNumberOfIntervals)
    }
    unsafe fn listOfAttributes(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, listOfAttributes)
    }
    unsafe fn setListOfAttributes_(&self, listOfAttributes: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setListOfAttributes : listOfAttributes)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRElectricalMeasurementClusterGetProfileInfoCommandParams(pub id);
impl std::ops::Deref for MTRElectricalMeasurementClusterGetProfileInfoCommandParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRElectricalMeasurementClusterGetProfileInfoCommandParams {}
impl MTRElectricalMeasurementClusterGetProfileInfoCommandParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRElectricalMeasurementClusterGetProfileInfoCommandParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRElectricalMeasurementClusterGetProfileInfoCommandParams {}
impl INSObject for MTRElectricalMeasurementClusterGetProfileInfoCommandParams {}
impl PNSObject for MTRElectricalMeasurementClusterGetProfileInfoCommandParams {}
impl std::convert::TryFrom<NSObject>
    for MTRElectricalMeasurementClusterGetProfileInfoCommandParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRElectricalMeasurementClusterGetProfileInfoCommandParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRElectricalMeasurementClusterGetProfileInfoCommandParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRElectricalMeasurementClusterGetProfileInfoCommandParams(
                parent.0,
            ))
        } else {
            Err ("This NSObject cannot be downcasted to MTRElectricalMeasurementClusterGetProfileInfoCommandParams" ,)
        }
    }
}
impl IMTRElectricalMeasurementClusterGetProfileInfoCommandParams
    for MTRElectricalMeasurementClusterGetProfileInfoCommandParams
{
}
pub trait IMTRElectricalMeasurementClusterGetProfileInfoCommandParams:
    Sized + std::ops::Deref
{
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRElectricalMeasurementClusterGetMeasurementProfileResponseCommandParams(pub id);
impl std::ops::Deref for MTRElectricalMeasurementClusterGetMeasurementProfileResponseCommandParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message
    for MTRElectricalMeasurementClusterGetMeasurementProfileResponseCommandParams
{
}
impl MTRElectricalMeasurementClusterGetMeasurementProfileResponseCommandParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRElectricalMeasurementClusterGetMeasurementProfileResponseCommandParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRElectricalMeasurementClusterGetMeasurementProfileResponseCommandParams {}
impl INSObject for MTRElectricalMeasurementClusterGetMeasurementProfileResponseCommandParams {}
impl PNSObject for MTRElectricalMeasurementClusterGetMeasurementProfileResponseCommandParams {}
impl std::convert::TryFrom<NSObject>
    for MTRElectricalMeasurementClusterGetMeasurementProfileResponseCommandParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<
        MTRElectricalMeasurementClusterGetMeasurementProfileResponseCommandParams,
        Self::Error,
    > {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRElectricalMeasurementClusterGetMeasurementProfileResponseCommandParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRElectricalMeasurementClusterGetMeasurementProfileResponseCommandParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRElectricalMeasurementClusterGetMeasurementProfileResponseCommandParams" ,)
        }
    }
}
impl IMTRElectricalMeasurementClusterGetMeasurementProfileResponseCommandParams
    for MTRElectricalMeasurementClusterGetMeasurementProfileResponseCommandParams
{
}
pub trait IMTRElectricalMeasurementClusterGetMeasurementProfileResponseCommandParams:
    Sized + std::ops::Deref
{
    unsafe fn initWithResponseValue_error_(
        &self,
        responseValue: NSDictionary,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponseValue : responseValue, error : error)
    }
    unsafe fn startTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startTime)
    }
    unsafe fn setStartTime_(&self, startTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartTime : startTime)
    }
    unsafe fn status(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn setStatus_(&self, status: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStatus : status)
    }
    unsafe fn profileIntervalPeriod(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, profileIntervalPeriod)
    }
    unsafe fn setProfileIntervalPeriod_(&self, profileIntervalPeriod: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProfileIntervalPeriod : profileIntervalPeriod)
    }
    unsafe fn numberOfIntervalsDelivered(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, numberOfIntervalsDelivered)
    }
    unsafe fn setNumberOfIntervalsDelivered_(&self, numberOfIntervalsDelivered: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNumberOfIntervalsDelivered : numberOfIntervalsDelivered)
    }
    unsafe fn attributeId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attributeId)
    }
    unsafe fn setAttributeId_(&self, attributeId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttributeId : attributeId)
    }
    unsafe fn intervals(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, intervals)
    }
    unsafe fn setIntervals_(&self, intervals: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIntervals : intervals)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams(pub id);
impl std::ops::Deref for MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams {}
impl MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams").unwrap(), alloc)
        })
    }
}
impl PNSCopying for MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams {}
impl INSObject for MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams {}
impl PNSObject for MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams {}
impl std::convert::TryFrom<NSObject>
    for MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams
{
    type Error = &'static str;
    fn try_from(
        parent: NSObject,
    ) -> Result<MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams, Self::Error>
    {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams(parent.0))
        } else {
            Err ("This NSObject cannot be downcasted to MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams" ,)
        }
    }
}
impl IMTRElectricalMeasurementClusterGetMeasurementProfileCommandParams
    for MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams
{
}
pub trait IMTRElectricalMeasurementClusterGetMeasurementProfileCommandParams:
    Sized + std::ops::Deref
{
    unsafe fn attributeId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attributeId)
    }
    unsafe fn setAttributeId_(&self, attributeId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttributeId : attributeId)
    }
    unsafe fn startTime(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startTime)
    }
    unsafe fn setStartTime_(&self, startTime: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartTime : startTime)
    }
    unsafe fn numberOfIntervals(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, numberOfIntervals)
    }
    unsafe fn setNumberOfIntervals_(&self, numberOfIntervals: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNumberOfIntervals : numberOfIntervals)
    }
    unsafe fn timedInvokeTimeoutMs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timedInvokeTimeoutMs)
    }
    unsafe fn setTimedInvokeTimeoutMs_(&self, timedInvokeTimeoutMs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimedInvokeTimeoutMs : timedInvokeTimeoutMs)
    }
    unsafe fn serverSideProcessingTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverSideProcessingTimeout)
    }
    unsafe fn setServerSideProcessingTimeout_(&self, serverSideProcessingTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setServerSideProcessingTimeout : serverSideProcessingTimeout)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRBaseClusterElectricalMeasurement(pub id);
impl std::ops::Deref for MTRBaseClusterElectricalMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRBaseClusterElectricalMeasurement {}
impl MTRBaseClusterElectricalMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericBaseCluster for MTRBaseClusterElectricalMeasurement {}
impl std::convert::TryFrom<MTRGenericBaseCluster> for MTRBaseClusterElectricalMeasurement {
    type Error = &'static str;
    fn try_from(
        parent: MTRGenericBaseCluster,
    ) -> Result<MTRBaseClusterElectricalMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRBaseClusterElectricalMeasurement(parent.0))
        } else {
            Err ("This MTRGenericBaseCluster cannot be downcasted to MTRBaseClusterElectricalMeasurement" ,)
        }
    }
}
impl IMTRCluster for MTRBaseClusterElectricalMeasurement {}
impl INSObject for MTRBaseClusterElectricalMeasurement {}
impl PNSObject for MTRBaseClusterElectricalMeasurement {}
impl IMTRBaseClusterElectricalMeasurement for MTRBaseClusterElectricalMeasurement {}
pub trait IMTRBaseClusterElectricalMeasurement: Sized + std::ops::Deref {
    unsafe fn getProfileInfoCommandWithParams_completion_(
        &self,
        params: MTRElectricalMeasurementClusterGetProfileInfoCommandParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getProfileInfoCommandWithParams : params, completion : completion)
    }
    unsafe fn getProfileInfoCommandWithCompletion_(&self, completion: MTRStatusCompletion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getProfileInfoCommandWithCompletion : completion)
    }
    unsafe fn getMeasurementProfileCommandWithParams_completion_(
        &self,
        params: MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getMeasurementProfileCommandWithParams : params, completion : completion)
    }
    unsafe fn readAttributeMeasurementTypeWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementTypeWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasurementTypeWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementTypeWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcVoltageWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcVoltageWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDcVoltageWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcVoltageWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcVoltageMinWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcVoltageMinWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDcVoltageMinWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcVoltageMinWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcVoltageMaxWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcVoltageMaxWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDcVoltageMaxWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcVoltageMaxWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcCurrentWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDcCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcCurrentMinWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcCurrentMinWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDcCurrentMinWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcCurrentMinWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcCurrentMaxWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcCurrentMaxWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDcCurrentMaxWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcCurrentMaxWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcPowerWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcPowerWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDcPowerWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcPowerWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcPowerMinWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcPowerMinWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDcPowerMinWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcPowerMinWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcPowerMaxWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcPowerMaxWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDcPowerMaxWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcPowerMaxWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcVoltageMultiplierWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcVoltageMultiplierWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDcVoltageMultiplierWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcVoltageMultiplierWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcVoltageDivisorWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcVoltageDivisorWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDcVoltageDivisorWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcVoltageDivisorWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcCurrentMultiplierWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcCurrentMultiplierWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDcCurrentMultiplierWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcCurrentMultiplierWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcCurrentDivisorWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcCurrentDivisorWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDcCurrentDivisorWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcCurrentDivisorWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcPowerMultiplierWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcPowerMultiplierWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDcPowerMultiplierWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcPowerMultiplierWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcPowerDivisorWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcPowerDivisorWithCompletion : completion)
    }
    unsafe fn subscribeAttributeDcPowerDivisorWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcPowerDivisorWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcFrequencyWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcFrequencyWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcFrequencyWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcFrequencyWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcFrequencyMinWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcFrequencyMinWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcFrequencyMinWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcFrequencyMinWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcFrequencyMaxWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcFrequencyMaxWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcFrequencyMaxWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcFrequencyMaxWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNeutralCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNeutralCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeNeutralCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNeutralCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTotalActivePowerWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTotalActivePowerWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTotalActivePowerWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTotalActivePowerWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTotalReactivePowerWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTotalReactivePowerWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTotalReactivePowerWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTotalReactivePowerWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTotalApparentPowerWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTotalApparentPowerWithCompletion : completion)
    }
    unsafe fn subscribeAttributeTotalApparentPowerWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTotalApparentPowerWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasured1stHarmonicCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasured1stHarmonicCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasured1stHarmonicCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasured1stHarmonicCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasured3rdHarmonicCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasured3rdHarmonicCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasured3rdHarmonicCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasured3rdHarmonicCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasured5thHarmonicCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasured5thHarmonicCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasured5thHarmonicCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasured5thHarmonicCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasured7thHarmonicCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasured7thHarmonicCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasured7thHarmonicCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasured7thHarmonicCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasured9thHarmonicCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasured9thHarmonicCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasured9thHarmonicCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasured9thHarmonicCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasured11thHarmonicCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasured11thHarmonicCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasured11thHarmonicCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasured11thHarmonicCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasuredPhase1stHarmonicCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredPhase1stHarmonicCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasuredPhase1stHarmonicCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredPhase1stHarmonicCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasuredPhase3rdHarmonicCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredPhase3rdHarmonicCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasuredPhase3rdHarmonicCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredPhase3rdHarmonicCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasuredPhase5thHarmonicCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredPhase5thHarmonicCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasuredPhase5thHarmonicCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredPhase5thHarmonicCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasuredPhase7thHarmonicCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredPhase7thHarmonicCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasuredPhase7thHarmonicCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredPhase7thHarmonicCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasuredPhase9thHarmonicCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredPhase9thHarmonicCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasuredPhase9thHarmonicCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredPhase9thHarmonicCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasuredPhase11thHarmonicCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredPhase11thHarmonicCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeMeasuredPhase11thHarmonicCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredPhase11thHarmonicCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcFrequencyMultiplierWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcFrequencyMultiplierWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcFrequencyMultiplierWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcFrequencyMultiplierWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcFrequencyDivisorWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcFrequencyDivisorWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcFrequencyDivisorWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcFrequencyDivisorWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePowerMultiplierWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerMultiplierWithCompletion : completion)
    }
    unsafe fn subscribeAttributePowerMultiplierWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePowerMultiplierWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePowerDivisorWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerDivisorWithCompletion : completion)
    }
    unsafe fn subscribeAttributePowerDivisorWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePowerDivisorWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeHarmonicCurrentMultiplierWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHarmonicCurrentMultiplierWithCompletion : completion)
    }
    unsafe fn subscribeAttributeHarmonicCurrentMultiplierWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHarmonicCurrentMultiplierWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePhaseHarmonicCurrentMultiplierWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhaseHarmonicCurrentMultiplierWithCompletion : completion)
    }
    unsafe fn subscribeAttributePhaseHarmonicCurrentMultiplierWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePhaseHarmonicCurrentMultiplierWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInstantaneousVoltageWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstantaneousVoltageWithCompletion : completion)
    }
    unsafe fn subscribeAttributeInstantaneousVoltageWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInstantaneousVoltageWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInstantaneousLineCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstantaneousLineCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeInstantaneousLineCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInstantaneousLineCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInstantaneousActiveCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstantaneousActiveCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeInstantaneousActiveCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInstantaneousActiveCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInstantaneousReactiveCurrentWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstantaneousReactiveCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeInstantaneousReactiveCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInstantaneousReactiveCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInstantaneousPowerWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstantaneousPowerWithCompletion : completion)
    }
    unsafe fn subscribeAttributeInstantaneousPowerWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInstantaneousPowerWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsVoltageWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageMinWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageMinWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsVoltageMinWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageMinWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageMaxWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageMaxWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsVoltageMaxWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageMaxWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsCurrentWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsCurrentWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsCurrentWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsCurrentMinWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentMinWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsCurrentMinWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsCurrentMinWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsCurrentMaxWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentMaxWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsCurrentMaxWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsCurrentMaxWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActivePowerWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActivePowerWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActivePowerWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActivePowerMinWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerMinWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActivePowerMinWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActivePowerMinWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActivePowerMaxWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerMaxWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActivePowerMaxWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActivePowerMaxWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeReactivePowerWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReactivePowerWithCompletion : completion)
    }
    unsafe fn subscribeAttributeReactivePowerWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeReactivePowerWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeApparentPowerWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApparentPowerWithCompletion : completion)
    }
    unsafe fn subscribeAttributeApparentPowerWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeApparentPowerWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePowerFactorWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerFactorWithCompletion : completion)
    }
    unsafe fn subscribeAttributePowerFactorWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePowerFactorWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageRmsVoltageMeasurementPeriodWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsVoltageMeasurementPeriodWithCompletion : completion)
    }
    unsafe fn writeAttributeAverageRmsVoltageMeasurementPeriodWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAverageRmsVoltageMeasurementPeriodWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeAverageRmsVoltageMeasurementPeriodWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAverageRmsVoltageMeasurementPeriodWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeAverageRmsVoltageMeasurementPeriodWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageRmsVoltageMeasurementPeriodWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageRmsUnderVoltageCounterWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsUnderVoltageCounterWithCompletion : completion)
    }
    unsafe fn writeAttributeAverageRmsUnderVoltageCounterWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAverageRmsUnderVoltageCounterWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeAverageRmsUnderVoltageCounterWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAverageRmsUnderVoltageCounterWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeAverageRmsUnderVoltageCounterWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageRmsUnderVoltageCounterWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsExtremeOverVoltagePeriodWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeOverVoltagePeriodWithCompletion : completion)
    }
    unsafe fn writeAttributeRmsExtremeOverVoltagePeriodWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsExtremeOverVoltagePeriodWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeRmsExtremeOverVoltagePeriodWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsExtremeOverVoltagePeriodWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeRmsExtremeOverVoltagePeriodWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsExtremeOverVoltagePeriodWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsExtremeUnderVoltagePeriodWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeUnderVoltagePeriodWithCompletion : completion)
    }
    unsafe fn writeAttributeRmsExtremeUnderVoltagePeriodWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsExtremeUnderVoltagePeriodWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeRmsExtremeUnderVoltagePeriodWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsExtremeUnderVoltagePeriodWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeRmsExtremeUnderVoltagePeriodWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsExtremeUnderVoltagePeriodWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageSagPeriodWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSagPeriodWithCompletion : completion)
    }
    unsafe fn writeAttributeRmsVoltageSagPeriodWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsVoltageSagPeriodWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeRmsVoltageSagPeriodWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsVoltageSagPeriodWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeRmsVoltageSagPeriodWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageSagPeriodWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageSwellPeriodWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSwellPeriodWithCompletion : completion)
    }
    unsafe fn writeAttributeRmsVoltageSwellPeriodWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsVoltageSwellPeriodWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeRmsVoltageSwellPeriodWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsVoltageSwellPeriodWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeRmsVoltageSwellPeriodWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageSwellPeriodWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcVoltageMultiplierWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcVoltageMultiplierWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcVoltageMultiplierWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcVoltageMultiplierWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcVoltageDivisorWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcVoltageDivisorWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcVoltageDivisorWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcVoltageDivisorWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcCurrentMultiplierWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcCurrentMultiplierWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcCurrentMultiplierWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcCurrentMultiplierWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcCurrentDivisorWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcCurrentDivisorWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcCurrentDivisorWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcCurrentDivisorWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcPowerMultiplierWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcPowerMultiplierWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcPowerMultiplierWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcPowerMultiplierWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcPowerDivisorWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcPowerDivisorWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcPowerDivisorWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcPowerDivisorWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOverloadAlarmsMaskWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOverloadAlarmsMaskWithCompletion : completion)
    }
    unsafe fn writeAttributeOverloadAlarmsMaskWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOverloadAlarmsMaskWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeOverloadAlarmsMaskWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOverloadAlarmsMaskWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeOverloadAlarmsMaskWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOverloadAlarmsMaskWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeVoltageOverloadWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVoltageOverloadWithCompletion : completion)
    }
    unsafe fn subscribeAttributeVoltageOverloadWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeVoltageOverloadWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentOverloadWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentOverloadWithCompletion : completion)
    }
    unsafe fn subscribeAttributeCurrentOverloadWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentOverloadWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcOverloadAlarmsMaskWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcOverloadAlarmsMaskWithCompletion : completion)
    }
    unsafe fn writeAttributeAcOverloadAlarmsMaskWithValue_completion_(
        &self,
        value: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAcOverloadAlarmsMaskWithValue : value, completion : completion)
    }
    unsafe fn writeAttributeAcOverloadAlarmsMaskWithValue_params_completion_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAcOverloadAlarmsMaskWithValue : value, params : params, completion : completion)
    }
    unsafe fn subscribeAttributeAcOverloadAlarmsMaskWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcOverloadAlarmsMaskWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcVoltageOverloadWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcVoltageOverloadWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcVoltageOverloadWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcVoltageOverloadWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcCurrentOverloadWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcCurrentOverloadWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcCurrentOverloadWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcCurrentOverloadWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcActivePowerOverloadWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcActivePowerOverloadWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcActivePowerOverloadWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcActivePowerOverloadWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcReactivePowerOverloadWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcReactivePowerOverloadWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcReactivePowerOverloadWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcReactivePowerOverloadWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageRmsOverVoltageWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsOverVoltageWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageRmsOverVoltageWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageRmsOverVoltageWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageRmsUnderVoltageWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsUnderVoltageWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageRmsUnderVoltageWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageRmsUnderVoltageWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsExtremeOverVoltageWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeOverVoltageWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsExtremeOverVoltageWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsExtremeOverVoltageWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsExtremeUnderVoltageWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeUnderVoltageWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsExtremeUnderVoltageWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsExtremeUnderVoltageWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageSagWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSagWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsVoltageSagWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageSagWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageSwellWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSwellWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsVoltageSwellWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageSwellWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLineCurrentPhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLineCurrentPhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLineCurrentPhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLineCurrentPhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveCurrentPhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveCurrentPhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActiveCurrentPhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveCurrentPhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeReactiveCurrentPhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReactiveCurrentPhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributeReactiveCurrentPhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeReactiveCurrentPhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltagePhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltagePhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsVoltagePhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltagePhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageMinPhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageMinPhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsVoltageMinPhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageMinPhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageMaxPhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageMaxPhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsVoltageMaxPhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageMaxPhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsCurrentPhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentPhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsCurrentPhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsCurrentPhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsCurrentMinPhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentMinPhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsCurrentMinPhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsCurrentMinPhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsCurrentMaxPhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentMaxPhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsCurrentMaxPhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsCurrentMaxPhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActivePowerPhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerPhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActivePowerPhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActivePowerPhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActivePowerMinPhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerMinPhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActivePowerMinPhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActivePowerMinPhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActivePowerMaxPhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerMaxPhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActivePowerMaxPhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActivePowerMaxPhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeReactivePowerPhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReactivePowerPhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributeReactivePowerPhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeReactivePowerPhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeApparentPowerPhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApparentPowerPhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributeApparentPowerPhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeApparentPowerPhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePowerFactorPhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerFactorPhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributePowerFactorPhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePowerFactorPhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageRmsOverVoltageCounterPhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsOverVoltageCounterPhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageRmsOverVoltageCounterPhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageRmsOverVoltageCounterPhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageRmsUnderVoltageCounterPhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsUnderVoltageCounterPhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageRmsUnderVoltageCounterPhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageRmsUnderVoltageCounterPhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsExtremeOverVoltagePeriodPhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeOverVoltagePeriodPhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsExtremeOverVoltagePeriodPhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsExtremeOverVoltagePeriodPhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageSagPeriodPhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSagPeriodPhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsVoltageSagPeriodPhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageSagPeriodPhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageSwellPeriodPhaseBWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSwellPeriodPhaseBWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsVoltageSwellPeriodPhaseBWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageSwellPeriodPhaseBWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLineCurrentPhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLineCurrentPhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeLineCurrentPhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLineCurrentPhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveCurrentPhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveCurrentPhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActiveCurrentPhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveCurrentPhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeReactiveCurrentPhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReactiveCurrentPhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeReactiveCurrentPhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeReactiveCurrentPhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltagePhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltagePhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsVoltagePhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltagePhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageMinPhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageMinPhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsVoltageMinPhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageMinPhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageMaxPhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageMaxPhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsVoltageMaxPhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageMaxPhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsCurrentPhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentPhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsCurrentPhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsCurrentPhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsCurrentMinPhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentMinPhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsCurrentMinPhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsCurrentMinPhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsCurrentMaxPhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentMaxPhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsCurrentMaxPhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsCurrentMaxPhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActivePowerPhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerPhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActivePowerPhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActivePowerPhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActivePowerMinPhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerMinPhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActivePowerMinPhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActivePowerMinPhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActivePowerMaxPhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerMaxPhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeActivePowerMaxPhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActivePowerMaxPhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeReactivePowerPhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReactivePowerPhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeReactivePowerPhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeReactivePowerPhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeApparentPowerPhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApparentPowerPhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeApparentPowerPhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeApparentPowerPhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributePowerFactorPhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerFactorPhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributePowerFactorPhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePowerFactorPhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageRmsOverVoltageCounterPhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsOverVoltageCounterPhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageRmsOverVoltageCounterPhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageRmsOverVoltageCounterPhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageRmsUnderVoltageCounterPhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsUnderVoltageCounterPhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAverageRmsUnderVoltageCounterPhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageRmsUnderVoltageCounterPhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsExtremeOverVoltagePeriodPhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeOverVoltagePeriodPhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsExtremeOverVoltagePeriodPhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsExtremeOverVoltagePeriodPhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageSagPeriodPhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSagPeriodPhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsVoltageSagPeriodPhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageSagPeriodPhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageSwellPeriodPhaseCWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSwellPeriodPhaseCWithCompletion : completion)
    }
    unsafe fn subscribeAttributeRmsVoltageSwellPeriodPhaseCWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageSwellPeriodPhaseCWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletion : completion)
    }
    unsafe fn subscribeAttributeAttributeListWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletion_(&self, completion: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletion : completion)
    }
    unsafe fn subscribeAttributeFeatureMapWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletion_(
        &self,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletion : completion)
    }
    unsafe fn subscribeAttributeClusterRevisionWithParams_subscriptionEstablished_reportHandler_(
        &self,
        params: MTRSubscribeParams,
        subscriptionEstablished: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithParams : params, subscriptionEstablished : subscriptionEstablished, reportHandler : reportHandler)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn readAttributeMeasurementTypeWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasurementTypeWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDcVoltageWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcVoltageWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDcVoltageMinWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcVoltageMinWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDcVoltageMaxWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcVoltageMaxWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDcCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDcCurrentMinWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcCurrentMinWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDcCurrentMaxWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcCurrentMaxWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDcPowerWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcPowerWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDcPowerMinWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcPowerMinWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDcPowerMaxWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcPowerMaxWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDcVoltageMultiplierWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcVoltageMultiplierWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDcVoltageDivisorWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcVoltageDivisorWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDcCurrentMultiplierWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcCurrentMultiplierWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDcCurrentDivisorWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcCurrentDivisorWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDcPowerMultiplierWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcPowerMultiplierWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeDcPowerDivisorWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcPowerDivisorWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcFrequencyWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcFrequencyWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcFrequencyMinWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcFrequencyMinWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcFrequencyMaxWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcFrequencyMaxWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeNeutralCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeNeutralCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTotalActivePowerWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeTotalActivePowerWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTotalReactivePowerWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeTotalReactivePowerWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeTotalApparentPowerWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeTotalApparentPowerWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasured1stHarmonicCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasured1stHarmonicCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasured3rdHarmonicCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasured3rdHarmonicCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasured5thHarmonicCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasured5thHarmonicCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasured7thHarmonicCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasured7thHarmonicCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasured9thHarmonicCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasured9thHarmonicCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasured11thHarmonicCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasured11thHarmonicCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasuredPhase1stHarmonicCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasuredPhase1stHarmonicCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasuredPhase3rdHarmonicCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasuredPhase3rdHarmonicCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasuredPhase5thHarmonicCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasuredPhase5thHarmonicCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasuredPhase7thHarmonicCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasuredPhase7thHarmonicCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasuredPhase9thHarmonicCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasuredPhase9thHarmonicCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeMeasuredPhase11thHarmonicCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasuredPhase11thHarmonicCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcFrequencyMultiplierWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcFrequencyMultiplierWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcFrequencyDivisorWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcFrequencyDivisorWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePowerMultiplierWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributePowerMultiplierWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePowerDivisorWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributePowerDivisorWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeHarmonicCurrentMultiplierWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeHarmonicCurrentMultiplierWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePhaseHarmonicCurrentMultiplierWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributePhaseHarmonicCurrentMultiplierWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInstantaneousVoltageWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeInstantaneousVoltageWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInstantaneousLineCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeInstantaneousLineCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInstantaneousActiveCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeInstantaneousActiveCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInstantaneousReactiveCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeInstantaneousReactiveCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeInstantaneousPowerWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeInstantaneousPowerWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsVoltageWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsVoltageMinWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageMinWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsVoltageMaxWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageMaxWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsCurrentWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsCurrentWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsCurrentMinWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsCurrentMinWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsCurrentMaxWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsCurrentMaxWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActivePowerWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActivePowerWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActivePowerMinWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActivePowerMinWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActivePowerMaxWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActivePowerMaxWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeReactivePowerWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeReactivePowerWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeApparentPowerWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeApparentPowerWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePowerFactorWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributePowerFactorWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageRmsVoltageMeasurementPeriodWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAverageRmsVoltageMeasurementPeriodWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageRmsUnderVoltageCounterWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAverageRmsUnderVoltageCounterWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsExtremeOverVoltagePeriodWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsExtremeOverVoltagePeriodWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsExtremeUnderVoltagePeriodWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsExtremeUnderVoltagePeriodWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsVoltageSagPeriodWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageSagPeriodWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsVoltageSwellPeriodWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageSwellPeriodWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcVoltageMultiplierWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcVoltageMultiplierWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcVoltageDivisorWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcVoltageDivisorWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcCurrentMultiplierWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcCurrentMultiplierWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcCurrentDivisorWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcCurrentDivisorWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcPowerMultiplierWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcPowerMultiplierWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcPowerDivisorWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcPowerDivisorWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeOverloadAlarmsMaskWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeOverloadAlarmsMaskWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeVoltageOverloadWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeVoltageOverloadWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeCurrentOverloadWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeCurrentOverloadWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcOverloadAlarmsMaskWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcOverloadAlarmsMaskWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcVoltageOverloadWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcVoltageOverloadWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcCurrentOverloadWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcCurrentOverloadWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcActivePowerOverloadWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcActivePowerOverloadWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcReactivePowerOverloadWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcReactivePowerOverloadWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageRmsOverVoltageWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAverageRmsOverVoltageWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageRmsUnderVoltageWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAverageRmsUnderVoltageWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsExtremeOverVoltageWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsExtremeOverVoltageWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsExtremeUnderVoltageWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsExtremeUnderVoltageWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsVoltageSagWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageSagWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsVoltageSwellWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageSwellWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLineCurrentPhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeLineCurrentPhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActiveCurrentPhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActiveCurrentPhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeReactiveCurrentPhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeReactiveCurrentPhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsVoltagePhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltagePhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsVoltageMinPhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageMinPhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsVoltageMaxPhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageMaxPhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsCurrentPhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsCurrentPhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsCurrentMinPhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsCurrentMinPhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsCurrentMaxPhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsCurrentMaxPhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActivePowerPhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActivePowerPhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActivePowerMinPhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActivePowerMinPhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActivePowerMaxPhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActivePowerMaxPhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeReactivePowerPhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeReactivePowerPhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeApparentPowerPhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeApparentPowerPhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePowerFactorPhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributePowerFactorPhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageRmsOverVoltageCounterPhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAverageRmsOverVoltageCounterPhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageRmsUnderVoltageCounterPhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAverageRmsUnderVoltageCounterPhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsExtremeOverVoltagePeriodPhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsExtremeOverVoltagePeriodPhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsVoltageSagPeriodPhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageSagPeriodPhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsVoltageSwellPeriodPhaseBWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageSwellPeriodPhaseBWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeLineCurrentPhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeLineCurrentPhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActiveCurrentPhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActiveCurrentPhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeReactiveCurrentPhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeReactiveCurrentPhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsVoltagePhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltagePhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsVoltageMinPhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageMinPhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsVoltageMaxPhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageMaxPhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsCurrentPhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsCurrentPhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsCurrentMinPhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsCurrentMinPhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsCurrentMaxPhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsCurrentMaxPhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActivePowerPhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActivePowerPhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActivePowerMinPhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActivePowerMinPhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeActivePowerMaxPhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActivePowerMaxPhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeReactivePowerPhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeReactivePowerPhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeApparentPowerPhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeApparentPowerPhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributePowerFactorPhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributePowerFactorPhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageRmsOverVoltageCounterPhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAverageRmsOverVoltageCounterPhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAverageRmsUnderVoltageCounterPhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAverageRmsUnderVoltageCounterPhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsExtremeOverVoltagePeriodPhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsExtremeOverVoltagePeriodPhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsVoltageSagPeriodPhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageSagPeriodPhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeRmsVoltageSwellPeriodPhaseCWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageSwellPeriodPhaseCWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeGeneratedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeGeneratedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAcceptedCommandListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcceptedCommandListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeAttributeListWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAttributeListWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeFeatureMapWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeFeatureMapWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn readAttributeClusterRevisionWithClusterStateCache_endpoint_queue_completion_(
        clusterStateCacheContainer: MTRClusterStateCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeClusterRevisionWithClusterStateCache : clusterStateCacheContainer, endpoint : endpoint, queue : queue, completion : completion)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), new)
    }
}
impl MTRBaseClusterElectricalMeasurement_Availability for MTRBaseClusterElectricalMeasurement {}
pub trait MTRBaseClusterElectricalMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRBaseDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
impl MTRBaseClusterElectricalMeasurement_Deprecated for MTRBaseClusterElectricalMeasurement {}
pub trait MTRBaseClusterElectricalMeasurement_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRBaseDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn getProfileInfoCommandWithParams_completionHandler_(
        &self,
        params: MTRElectricalMeasurementClusterGetProfileInfoCommandParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getProfileInfoCommandWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn getProfileInfoCommandWithCompletionHandler_(
        &self,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getProfileInfoCommandWithCompletionHandler : completionHandler)
    }
    unsafe fn getMeasurementProfileCommandWithParams_completionHandler_(
        &self,
        params: MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getMeasurementProfileCommandWithParams : params, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMeasurementTypeWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementTypeWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMeasurementTypeWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasurementTypeWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcVoltageWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcVoltageWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDcVoltageWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcVoltageWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcVoltageMinWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcVoltageMinWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDcVoltageMinWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcVoltageMinWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcVoltageMaxWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcVoltageMaxWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDcVoltageMaxWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcVoltageMaxWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDcCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcCurrentMinWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcCurrentMinWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDcCurrentMinWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcCurrentMinWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcCurrentMaxWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcCurrentMaxWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDcCurrentMaxWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcCurrentMaxWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcPowerWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcPowerWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDcPowerWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcPowerWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcPowerMinWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcPowerMinWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDcPowerMinWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcPowerMinWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcPowerMaxWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcPowerMaxWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDcPowerMaxWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcPowerMaxWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcVoltageMultiplierWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcVoltageMultiplierWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDcVoltageMultiplierWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcVoltageMultiplierWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcVoltageDivisorWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcVoltageDivisorWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDcVoltageDivisorWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcVoltageDivisorWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcCurrentMultiplierWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcCurrentMultiplierWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDcCurrentMultiplierWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcCurrentMultiplierWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcCurrentDivisorWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcCurrentDivisorWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDcCurrentDivisorWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcCurrentDivisorWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcPowerMultiplierWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcPowerMultiplierWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDcPowerMultiplierWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcPowerMultiplierWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeDcPowerDivisorWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcPowerDivisorWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeDcPowerDivisorWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeDcPowerDivisorWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcFrequencyWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcFrequencyWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcFrequencyWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcFrequencyWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcFrequencyMinWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcFrequencyMinWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcFrequencyMinWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcFrequencyMinWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcFrequencyMaxWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcFrequencyMaxWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcFrequencyMaxWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcFrequencyMaxWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeNeutralCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNeutralCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeNeutralCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeNeutralCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTotalActivePowerWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTotalActivePowerWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTotalActivePowerWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTotalActivePowerWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTotalReactivePowerWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTotalReactivePowerWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTotalReactivePowerWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTotalReactivePowerWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeTotalApparentPowerWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTotalApparentPowerWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeTotalApparentPowerWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeTotalApparentPowerWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasured1stHarmonicCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasured1stHarmonicCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMeasured1stHarmonicCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasured1stHarmonicCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasured3rdHarmonicCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasured3rdHarmonicCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMeasured3rdHarmonicCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasured3rdHarmonicCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasured5thHarmonicCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasured5thHarmonicCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMeasured5thHarmonicCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasured5thHarmonicCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasured7thHarmonicCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasured7thHarmonicCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMeasured7thHarmonicCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasured7thHarmonicCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasured9thHarmonicCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasured9thHarmonicCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMeasured9thHarmonicCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasured9thHarmonicCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasured11thHarmonicCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasured11thHarmonicCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMeasured11thHarmonicCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasured11thHarmonicCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasuredPhase1stHarmonicCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredPhase1stHarmonicCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMeasuredPhase1stHarmonicCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredPhase1stHarmonicCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasuredPhase3rdHarmonicCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredPhase3rdHarmonicCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMeasuredPhase3rdHarmonicCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredPhase3rdHarmonicCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasuredPhase5thHarmonicCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredPhase5thHarmonicCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMeasuredPhase5thHarmonicCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredPhase5thHarmonicCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasuredPhase7thHarmonicCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredPhase7thHarmonicCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMeasuredPhase7thHarmonicCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredPhase7thHarmonicCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasuredPhase9thHarmonicCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredPhase9thHarmonicCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMeasuredPhase9thHarmonicCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredPhase9thHarmonicCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasuredPhase11thHarmonicCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredPhase11thHarmonicCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeMeasuredPhase11thHarmonicCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeMeasuredPhase11thHarmonicCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcFrequencyMultiplierWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcFrequencyMultiplierWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcFrequencyMultiplierWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcFrequencyMultiplierWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcFrequencyDivisorWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcFrequencyDivisorWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcFrequencyDivisorWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcFrequencyDivisorWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePowerMultiplierWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerMultiplierWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePowerMultiplierWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePowerMultiplierWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePowerDivisorWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerDivisorWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePowerDivisorWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePowerDivisorWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeHarmonicCurrentMultiplierWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHarmonicCurrentMultiplierWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeHarmonicCurrentMultiplierWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeHarmonicCurrentMultiplierWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePhaseHarmonicCurrentMultiplierWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhaseHarmonicCurrentMultiplierWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePhaseHarmonicCurrentMultiplierWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePhaseHarmonicCurrentMultiplierWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInstantaneousVoltageWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstantaneousVoltageWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInstantaneousVoltageWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInstantaneousVoltageWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInstantaneousLineCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstantaneousLineCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInstantaneousLineCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInstantaneousLineCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInstantaneousActiveCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstantaneousActiveCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInstantaneousActiveCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInstantaneousActiveCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInstantaneousReactiveCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstantaneousReactiveCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInstantaneousReactiveCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInstantaneousReactiveCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeInstantaneousPowerWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstantaneousPowerWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeInstantaneousPowerWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeInstantaneousPowerWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsVoltageWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageMinWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageMinWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsVoltageMinWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageMinWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageMaxWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageMaxWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsVoltageMaxWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageMaxWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsCurrentWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsCurrentWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsCurrentWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsCurrentMinWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentMinWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsCurrentMinWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsCurrentMinWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsCurrentMaxWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentMaxWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsCurrentMaxWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsCurrentMaxWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActivePowerWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActivePowerWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActivePowerWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActivePowerMinWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerMinWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActivePowerMinWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActivePowerMinWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActivePowerMaxWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerMaxWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActivePowerMaxWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActivePowerMaxWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeReactivePowerWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReactivePowerWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeReactivePowerWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeReactivePowerWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeApparentPowerWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApparentPowerWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeApparentPowerWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeApparentPowerWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePowerFactorWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerFactorWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePowerFactorWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePowerFactorWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageRmsVoltageMeasurementPeriodWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsVoltageMeasurementPeriodWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeAverageRmsVoltageMeasurementPeriodWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAverageRmsVoltageMeasurementPeriodWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeAverageRmsVoltageMeasurementPeriodWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAverageRmsVoltageMeasurementPeriodWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAverageRmsVoltageMeasurementPeriodWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageRmsVoltageMeasurementPeriodWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageRmsUnderVoltageCounterWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsUnderVoltageCounterWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeAverageRmsUnderVoltageCounterWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAverageRmsUnderVoltageCounterWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeAverageRmsUnderVoltageCounterWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAverageRmsUnderVoltageCounterWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAverageRmsUnderVoltageCounterWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageRmsUnderVoltageCounterWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsExtremeOverVoltagePeriodWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeOverVoltagePeriodWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeRmsExtremeOverVoltagePeriodWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsExtremeOverVoltagePeriodWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeRmsExtremeOverVoltagePeriodWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsExtremeOverVoltagePeriodWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsExtremeOverVoltagePeriodWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsExtremeOverVoltagePeriodWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsExtremeUnderVoltagePeriodWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeUnderVoltagePeriodWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeRmsExtremeUnderVoltagePeriodWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsExtremeUnderVoltagePeriodWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeRmsExtremeUnderVoltagePeriodWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsExtremeUnderVoltagePeriodWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsExtremeUnderVoltagePeriodWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsExtremeUnderVoltagePeriodWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageSagPeriodWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSagPeriodWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeRmsVoltageSagPeriodWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsVoltageSagPeriodWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeRmsVoltageSagPeriodWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsVoltageSagPeriodWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsVoltageSagPeriodWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageSagPeriodWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageSwellPeriodWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSwellPeriodWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeRmsVoltageSwellPeriodWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsVoltageSwellPeriodWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeRmsVoltageSwellPeriodWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsVoltageSwellPeriodWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsVoltageSwellPeriodWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageSwellPeriodWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcVoltageMultiplierWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcVoltageMultiplierWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcVoltageMultiplierWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcVoltageMultiplierWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcVoltageDivisorWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcVoltageDivisorWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcVoltageDivisorWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcVoltageDivisorWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcCurrentMultiplierWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcCurrentMultiplierWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcCurrentMultiplierWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcCurrentMultiplierWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcCurrentDivisorWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcCurrentDivisorWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcCurrentDivisorWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcCurrentDivisorWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcPowerMultiplierWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcPowerMultiplierWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcPowerMultiplierWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcPowerMultiplierWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcPowerDivisorWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcPowerDivisorWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcPowerDivisorWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcPowerDivisorWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeOverloadAlarmsMaskWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOverloadAlarmsMaskWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeOverloadAlarmsMaskWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOverloadAlarmsMaskWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeOverloadAlarmsMaskWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOverloadAlarmsMaskWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeOverloadAlarmsMaskWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeOverloadAlarmsMaskWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeVoltageOverloadWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVoltageOverloadWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeVoltageOverloadWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeVoltageOverloadWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeCurrentOverloadWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentOverloadWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeCurrentOverloadWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeCurrentOverloadWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcOverloadAlarmsMaskWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcOverloadAlarmsMaskWithCompletionHandler : completionHandler)
    }
    unsafe fn writeAttributeAcOverloadAlarmsMaskWithValue_completionHandler_(
        &self,
        value: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAcOverloadAlarmsMaskWithValue : value, completionHandler : completionHandler)
    }
    unsafe fn writeAttributeAcOverloadAlarmsMaskWithValue_params_completionHandler_(
        &self,
        value: NSNumber,
        params: MTRWriteParams,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAcOverloadAlarmsMaskWithValue : value, params : params, completionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcOverloadAlarmsMaskWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcOverloadAlarmsMaskWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcVoltageOverloadWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcVoltageOverloadWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcVoltageOverloadWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcVoltageOverloadWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcCurrentOverloadWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcCurrentOverloadWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcCurrentOverloadWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcCurrentOverloadWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcActivePowerOverloadWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcActivePowerOverloadWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcActivePowerOverloadWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcActivePowerOverloadWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcReactivePowerOverloadWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcReactivePowerOverloadWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcReactivePowerOverloadWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcReactivePowerOverloadWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageRmsOverVoltageWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsOverVoltageWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAverageRmsOverVoltageWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageRmsOverVoltageWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageRmsUnderVoltageWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsUnderVoltageWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAverageRmsUnderVoltageWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageRmsUnderVoltageWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsExtremeOverVoltageWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeOverVoltageWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsExtremeOverVoltageWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsExtremeOverVoltageWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsExtremeUnderVoltageWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeUnderVoltageWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsExtremeUnderVoltageWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsExtremeUnderVoltageWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageSagWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSagWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsVoltageSagWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageSagWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageSwellWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSwellWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsVoltageSwellWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageSwellWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLineCurrentPhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLineCurrentPhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLineCurrentPhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLineCurrentPhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveCurrentPhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveCurrentPhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActiveCurrentPhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveCurrentPhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeReactiveCurrentPhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReactiveCurrentPhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeReactiveCurrentPhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeReactiveCurrentPhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltagePhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltagePhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsVoltagePhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltagePhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageMinPhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageMinPhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsVoltageMinPhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageMinPhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageMaxPhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageMaxPhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsVoltageMaxPhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageMaxPhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsCurrentPhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentPhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsCurrentPhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsCurrentPhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsCurrentMinPhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentMinPhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsCurrentMinPhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsCurrentMinPhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsCurrentMaxPhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentMaxPhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsCurrentMaxPhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsCurrentMaxPhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActivePowerPhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerPhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActivePowerPhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActivePowerPhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActivePowerMinPhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerMinPhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActivePowerMinPhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActivePowerMinPhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActivePowerMaxPhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerMaxPhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActivePowerMaxPhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActivePowerMaxPhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeReactivePowerPhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReactivePowerPhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeReactivePowerPhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeReactivePowerPhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeApparentPowerPhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApparentPowerPhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeApparentPowerPhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeApparentPowerPhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePowerFactorPhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerFactorPhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePowerFactorPhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePowerFactorPhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageRmsOverVoltageCounterPhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsOverVoltageCounterPhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAverageRmsOverVoltageCounterPhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageRmsOverVoltageCounterPhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageRmsUnderVoltageCounterPhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsUnderVoltageCounterPhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAverageRmsUnderVoltageCounterPhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageRmsUnderVoltageCounterPhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsExtremeOverVoltagePeriodPhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeOverVoltagePeriodPhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsExtremeOverVoltagePeriodPhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsExtremeOverVoltagePeriodPhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageSagPeriodPhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSagPeriodPhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsVoltageSagPeriodPhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageSagPeriodPhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageSwellPeriodPhaseBWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSwellPeriodPhaseBWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsVoltageSwellPeriodPhaseBWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageSwellPeriodPhaseBWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeLineCurrentPhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLineCurrentPhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeLineCurrentPhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeLineCurrentPhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActiveCurrentPhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveCurrentPhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActiveCurrentPhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActiveCurrentPhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeReactiveCurrentPhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReactiveCurrentPhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeReactiveCurrentPhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeReactiveCurrentPhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltagePhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltagePhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsVoltagePhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltagePhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageMinPhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageMinPhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsVoltageMinPhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageMinPhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageMaxPhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageMaxPhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsVoltageMaxPhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageMaxPhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsCurrentPhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentPhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsCurrentPhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsCurrentPhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsCurrentMinPhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentMinPhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsCurrentMinPhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsCurrentMinPhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsCurrentMaxPhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentMaxPhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsCurrentMaxPhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsCurrentMaxPhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActivePowerPhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerPhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActivePowerPhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActivePowerPhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActivePowerMinPhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerMinPhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActivePowerMinPhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActivePowerMinPhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeActivePowerMaxPhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerMaxPhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeActivePowerMaxPhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeActivePowerMaxPhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeReactivePowerPhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReactivePowerPhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeReactivePowerPhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeReactivePowerPhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeApparentPowerPhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApparentPowerPhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeApparentPowerPhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeApparentPowerPhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributePowerFactorPhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerFactorPhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributePowerFactorPhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributePowerFactorPhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageRmsOverVoltageCounterPhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsOverVoltageCounterPhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAverageRmsOverVoltageCounterPhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageRmsOverVoltageCounterPhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAverageRmsUnderVoltageCounterPhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsUnderVoltageCounterPhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAverageRmsUnderVoltageCounterPhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAverageRmsUnderVoltageCounterPhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsExtremeOverVoltagePeriodPhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeOverVoltagePeriodPhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsExtremeOverVoltagePeriodPhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsExtremeOverVoltagePeriodPhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageSagPeriodPhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSagPeriodPhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsVoltageSagPeriodPhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageSagPeriodPhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeRmsVoltageSwellPeriodPhaseCWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSwellPeriodPhaseCWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeRmsVoltageSwellPeriodPhaseCWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeRmsVoltageSwellPeriodPhaseCWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeGeneratedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeGeneratedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAcceptedCommandListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAcceptedCommandListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeAttributeListWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeAttributeListWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeAttributeListWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeFeatureMapWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeFeatureMapWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeFeatureMapWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeClusterRevisionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithCompletionHandler : completionHandler)
    }
    unsafe fn subscribeAttributeClusterRevisionWithMinInterval_maxInterval_params_subscriptionEstablished_reportHandler_(
        &self,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: MTRSubscribeParams,
        subscriptionEstablishedHandler: MTRSubscriptionEstablishedHandler,
        reportHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeClusterRevisionWithMinInterval : minInterval, maxInterval : maxInterval, params : params, subscriptionEstablished : subscriptionEstablishedHandler, reportHandler : reportHandler)
    }
    unsafe fn readAttributeMeasurementTypeWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasurementTypeWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDcVoltageWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcVoltageWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDcVoltageMinWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcVoltageMinWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDcVoltageMaxWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcVoltageMaxWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDcCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDcCurrentMinWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcCurrentMinWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDcCurrentMaxWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcCurrentMaxWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDcPowerWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcPowerWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDcPowerMinWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcPowerMinWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDcPowerMaxWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcPowerMaxWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDcVoltageMultiplierWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcVoltageMultiplierWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDcVoltageDivisorWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcVoltageDivisorWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDcCurrentMultiplierWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcCurrentMultiplierWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDcCurrentDivisorWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcCurrentDivisorWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDcPowerMultiplierWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcPowerMultiplierWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeDcPowerDivisorWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeDcPowerDivisorWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcFrequencyWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcFrequencyWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcFrequencyMinWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcFrequencyMinWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcFrequencyMaxWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcFrequencyMaxWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeNeutralCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeNeutralCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTotalActivePowerWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeTotalActivePowerWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTotalReactivePowerWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeTotalReactivePowerWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeTotalApparentPowerWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeTotalApparentPowerWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMeasured1stHarmonicCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasured1stHarmonicCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMeasured3rdHarmonicCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasured3rdHarmonicCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMeasured5thHarmonicCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasured5thHarmonicCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMeasured7thHarmonicCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasured7thHarmonicCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMeasured9thHarmonicCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasured9thHarmonicCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMeasured11thHarmonicCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasured11thHarmonicCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMeasuredPhase1stHarmonicCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasuredPhase1stHarmonicCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMeasuredPhase3rdHarmonicCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasuredPhase3rdHarmonicCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMeasuredPhase5thHarmonicCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasuredPhase5thHarmonicCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMeasuredPhase7thHarmonicCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasuredPhase7thHarmonicCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMeasuredPhase9thHarmonicCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasuredPhase9thHarmonicCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeMeasuredPhase11thHarmonicCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeMeasuredPhase11thHarmonicCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcFrequencyMultiplierWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcFrequencyMultiplierWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcFrequencyDivisorWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcFrequencyDivisorWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePowerMultiplierWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributePowerMultiplierWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePowerDivisorWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributePowerDivisorWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeHarmonicCurrentMultiplierWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeHarmonicCurrentMultiplierWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePhaseHarmonicCurrentMultiplierWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributePhaseHarmonicCurrentMultiplierWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInstantaneousVoltageWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeInstantaneousVoltageWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInstantaneousLineCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeInstantaneousLineCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInstantaneousActiveCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeInstantaneousActiveCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInstantaneousReactiveCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeInstantaneousReactiveCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeInstantaneousPowerWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeInstantaneousPowerWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsVoltageWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsVoltageMinWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageMinWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsVoltageMaxWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageMaxWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsCurrentWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsCurrentWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsCurrentMinWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsCurrentMinWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsCurrentMaxWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsCurrentMaxWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActivePowerWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActivePowerWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActivePowerMinWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActivePowerMinWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActivePowerMaxWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActivePowerMaxWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeReactivePowerWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeReactivePowerWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeApparentPowerWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeApparentPowerWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePowerFactorWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributePowerFactorWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAverageRmsVoltageMeasurementPeriodWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAverageRmsVoltageMeasurementPeriodWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAverageRmsUnderVoltageCounterWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAverageRmsUnderVoltageCounterWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsExtremeOverVoltagePeriodWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsExtremeOverVoltagePeriodWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsExtremeUnderVoltagePeriodWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsExtremeUnderVoltagePeriodWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsVoltageSagPeriodWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageSagPeriodWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsVoltageSwellPeriodWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageSwellPeriodWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcVoltageMultiplierWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcVoltageMultiplierWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcVoltageDivisorWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcVoltageDivisorWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcCurrentMultiplierWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcCurrentMultiplierWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcCurrentDivisorWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcCurrentDivisorWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcPowerMultiplierWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcPowerMultiplierWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcPowerDivisorWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcPowerDivisorWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeOverloadAlarmsMaskWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeOverloadAlarmsMaskWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeVoltageOverloadWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeVoltageOverloadWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeCurrentOverloadWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeCurrentOverloadWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcOverloadAlarmsMaskWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcOverloadAlarmsMaskWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcVoltageOverloadWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcVoltageOverloadWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcCurrentOverloadWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcCurrentOverloadWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcActivePowerOverloadWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcActivePowerOverloadWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcReactivePowerOverloadWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcReactivePowerOverloadWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAverageRmsOverVoltageWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAverageRmsOverVoltageWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAverageRmsUnderVoltageWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAverageRmsUnderVoltageWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsExtremeOverVoltageWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsExtremeOverVoltageWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsExtremeUnderVoltageWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsExtremeUnderVoltageWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsVoltageSagWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageSagWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsVoltageSwellWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageSwellWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLineCurrentPhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeLineCurrentPhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActiveCurrentPhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActiveCurrentPhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeReactiveCurrentPhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeReactiveCurrentPhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsVoltagePhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltagePhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsVoltageMinPhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageMinPhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsVoltageMaxPhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageMaxPhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsCurrentPhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsCurrentPhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsCurrentMinPhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsCurrentMinPhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsCurrentMaxPhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsCurrentMaxPhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActivePowerPhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActivePowerPhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActivePowerMinPhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActivePowerMinPhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActivePowerMaxPhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActivePowerMaxPhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeReactivePowerPhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeReactivePowerPhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeApparentPowerPhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeApparentPowerPhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePowerFactorPhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributePowerFactorPhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAverageRmsOverVoltageCounterPhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAverageRmsOverVoltageCounterPhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAverageRmsUnderVoltageCounterPhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAverageRmsUnderVoltageCounterPhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsExtremeOverVoltagePeriodPhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsExtremeOverVoltagePeriodPhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsVoltageSagPeriodPhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageSagPeriodPhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsVoltageSwellPeriodPhaseBWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageSwellPeriodPhaseBWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeLineCurrentPhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeLineCurrentPhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActiveCurrentPhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActiveCurrentPhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeReactiveCurrentPhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeReactiveCurrentPhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsVoltagePhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltagePhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsVoltageMinPhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageMinPhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsVoltageMaxPhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageMaxPhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsCurrentPhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsCurrentPhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsCurrentMinPhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsCurrentMinPhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsCurrentMaxPhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsCurrentMaxPhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActivePowerPhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActivePowerPhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActivePowerMinPhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActivePowerMinPhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeActivePowerMaxPhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeActivePowerMaxPhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeReactivePowerPhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeReactivePowerPhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeApparentPowerPhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeApparentPowerPhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributePowerFactorPhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributePowerFactorPhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAverageRmsOverVoltageCounterPhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAverageRmsOverVoltageCounterPhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAverageRmsUnderVoltageCounterPhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAverageRmsUnderVoltageCounterPhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsExtremeOverVoltagePeriodPhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsExtremeOverVoltagePeriodPhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsVoltageSagPeriodPhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageSagPeriodPhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeRmsVoltageSwellPeriodPhaseCWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeRmsVoltageSwellPeriodPhaseCWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeGeneratedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeGeneratedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAcceptedCommandListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAcceptedCommandListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeAttributeListWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeAttributeListWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeFeatureMapWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeFeatureMapWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
    unsafe fn readAttributeClusterRevisionWithAttributeCache_endpoint_queue_completionHandler_(
        attributeCacheContainer: MTRAttributeCacheContainer,
        endpoint: NSNumber,
        queue: NSObject,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRBaseClusterElectricalMeasurement").unwrap(), readAttributeClusterRevisionWithAttributeCache : attributeCacheContainer, endpoint : endpoint, queue : queue, completionHandler : completionHandler)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRClusterElectricalMeasurement(pub id);
impl std::ops::Deref for MTRClusterElectricalMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRClusterElectricalMeasurement {}
impl MTRClusterElectricalMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterElectricalMeasurement").unwrap(), alloc) })
    }
}
impl IMTRGenericCluster for MTRClusterElectricalMeasurement {}
impl std::convert::TryFrom<MTRGenericCluster> for MTRClusterElectricalMeasurement {
    type Error = &'static str;
    fn try_from(parent: MTRGenericCluster) -> Result<MTRClusterElectricalMeasurement, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRClusterElectricalMeasurement").unwrap())
        };
        if is_kind_of {
            Ok(MTRClusterElectricalMeasurement(parent.0))
        } else {
            Err("This MTRGenericCluster cannot be downcasted to MTRClusterElectricalMeasurement")
        }
    }
}
impl IMTRCluster for MTRClusterElectricalMeasurement {}
impl INSObject for MTRClusterElectricalMeasurement {}
impl PNSObject for MTRClusterElectricalMeasurement {}
impl IMTRClusterElectricalMeasurement for MTRClusterElectricalMeasurement {}
pub trait IMTRClusterElectricalMeasurement: Sized + std::ops::Deref {
    unsafe fn getProfileInfoCommandWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRElectricalMeasurementClusterGetProfileInfoCommandParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getProfileInfoCommandWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn getProfileInfoCommandWithExpectedValues_expectedValueInterval_completion_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getProfileInfoCommandWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn getMeasurementProfileCommandWithParams_expectedValues_expectedValueInterval_completion_(
        &self,
        params: MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getMeasurementProfileCommandWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completion : completion)
    }
    unsafe fn readAttributeMeasurementTypeWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasurementTypeWithParams : params)
    }
    unsafe fn readAttributeDcVoltageWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcVoltageWithParams : params)
    }
    unsafe fn readAttributeDcVoltageMinWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcVoltageMinWithParams : params)
    }
    unsafe fn readAttributeDcVoltageMaxWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcVoltageMaxWithParams : params)
    }
    unsafe fn readAttributeDcCurrentWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcCurrentWithParams : params)
    }
    unsafe fn readAttributeDcCurrentMinWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcCurrentMinWithParams : params)
    }
    unsafe fn readAttributeDcCurrentMaxWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcCurrentMaxWithParams : params)
    }
    unsafe fn readAttributeDcPowerWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcPowerWithParams : params)
    }
    unsafe fn readAttributeDcPowerMinWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcPowerMinWithParams : params)
    }
    unsafe fn readAttributeDcPowerMaxWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcPowerMaxWithParams : params)
    }
    unsafe fn readAttributeDcVoltageMultiplierWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcVoltageMultiplierWithParams : params)
    }
    unsafe fn readAttributeDcVoltageDivisorWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcVoltageDivisorWithParams : params)
    }
    unsafe fn readAttributeDcCurrentMultiplierWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcCurrentMultiplierWithParams : params)
    }
    unsafe fn readAttributeDcCurrentDivisorWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcCurrentDivisorWithParams : params)
    }
    unsafe fn readAttributeDcPowerMultiplierWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcPowerMultiplierWithParams : params)
    }
    unsafe fn readAttributeDcPowerDivisorWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeDcPowerDivisorWithParams : params)
    }
    unsafe fn readAttributeAcFrequencyWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcFrequencyWithParams : params)
    }
    unsafe fn readAttributeAcFrequencyMinWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcFrequencyMinWithParams : params)
    }
    unsafe fn readAttributeAcFrequencyMaxWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcFrequencyMaxWithParams : params)
    }
    unsafe fn readAttributeNeutralCurrentWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeNeutralCurrentWithParams : params)
    }
    unsafe fn readAttributeTotalActivePowerWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTotalActivePowerWithParams : params)
    }
    unsafe fn readAttributeTotalReactivePowerWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTotalReactivePowerWithParams : params)
    }
    unsafe fn readAttributeTotalApparentPowerWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeTotalApparentPowerWithParams : params)
    }
    unsafe fn readAttributeMeasured1stHarmonicCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasured1stHarmonicCurrentWithParams : params)
    }
    unsafe fn readAttributeMeasured3rdHarmonicCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasured3rdHarmonicCurrentWithParams : params)
    }
    unsafe fn readAttributeMeasured5thHarmonicCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasured5thHarmonicCurrentWithParams : params)
    }
    unsafe fn readAttributeMeasured7thHarmonicCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasured7thHarmonicCurrentWithParams : params)
    }
    unsafe fn readAttributeMeasured9thHarmonicCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasured9thHarmonicCurrentWithParams : params)
    }
    unsafe fn readAttributeMeasured11thHarmonicCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasured11thHarmonicCurrentWithParams : params)
    }
    unsafe fn readAttributeMeasuredPhase1stHarmonicCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredPhase1stHarmonicCurrentWithParams : params)
    }
    unsafe fn readAttributeMeasuredPhase3rdHarmonicCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredPhase3rdHarmonicCurrentWithParams : params)
    }
    unsafe fn readAttributeMeasuredPhase5thHarmonicCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredPhase5thHarmonicCurrentWithParams : params)
    }
    unsafe fn readAttributeMeasuredPhase7thHarmonicCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredPhase7thHarmonicCurrentWithParams : params)
    }
    unsafe fn readAttributeMeasuredPhase9thHarmonicCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredPhase9thHarmonicCurrentWithParams : params)
    }
    unsafe fn readAttributeMeasuredPhase11thHarmonicCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeMeasuredPhase11thHarmonicCurrentWithParams : params)
    }
    unsafe fn readAttributeAcFrequencyMultiplierWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcFrequencyMultiplierWithParams : params)
    }
    unsafe fn readAttributeAcFrequencyDivisorWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcFrequencyDivisorWithParams : params)
    }
    unsafe fn readAttributePowerMultiplierWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerMultiplierWithParams : params)
    }
    unsafe fn readAttributePowerDivisorWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerDivisorWithParams : params)
    }
    unsafe fn readAttributeHarmonicCurrentMultiplierWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeHarmonicCurrentMultiplierWithParams : params)
    }
    unsafe fn readAttributePhaseHarmonicCurrentMultiplierWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePhaseHarmonicCurrentMultiplierWithParams : params)
    }
    unsafe fn readAttributeInstantaneousVoltageWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstantaneousVoltageWithParams : params)
    }
    unsafe fn readAttributeInstantaneousLineCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstantaneousLineCurrentWithParams : params)
    }
    unsafe fn readAttributeInstantaneousActiveCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstantaneousActiveCurrentWithParams : params)
    }
    unsafe fn readAttributeInstantaneousReactiveCurrentWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstantaneousReactiveCurrentWithParams : params)
    }
    unsafe fn readAttributeInstantaneousPowerWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeInstantaneousPowerWithParams : params)
    }
    unsafe fn readAttributeRmsVoltageWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageWithParams : params)
    }
    unsafe fn readAttributeRmsVoltageMinWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageMinWithParams : params)
    }
    unsafe fn readAttributeRmsVoltageMaxWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageMaxWithParams : params)
    }
    unsafe fn readAttributeRmsCurrentWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentWithParams : params)
    }
    unsafe fn readAttributeRmsCurrentMinWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentMinWithParams : params)
    }
    unsafe fn readAttributeRmsCurrentMaxWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentMaxWithParams : params)
    }
    unsafe fn readAttributeActivePowerWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerWithParams : params)
    }
    unsafe fn readAttributeActivePowerMinWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerMinWithParams : params)
    }
    unsafe fn readAttributeActivePowerMaxWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerMaxWithParams : params)
    }
    unsafe fn readAttributeReactivePowerWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReactivePowerWithParams : params)
    }
    unsafe fn readAttributeApparentPowerWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApparentPowerWithParams : params)
    }
    unsafe fn readAttributePowerFactorWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerFactorWithParams : params)
    }
    unsafe fn readAttributeAverageRmsVoltageMeasurementPeriodWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsVoltageMeasurementPeriodWithParams : params)
    }
    unsafe fn writeAttributeAverageRmsVoltageMeasurementPeriodWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAverageRmsVoltageMeasurementPeriodWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeAverageRmsVoltageMeasurementPeriodWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAverageRmsVoltageMeasurementPeriodWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeAverageRmsUnderVoltageCounterWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsUnderVoltageCounterWithParams : params)
    }
    unsafe fn writeAttributeAverageRmsUnderVoltageCounterWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAverageRmsUnderVoltageCounterWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeAverageRmsUnderVoltageCounterWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAverageRmsUnderVoltageCounterWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeRmsExtremeOverVoltagePeriodWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeOverVoltagePeriodWithParams : params)
    }
    unsafe fn writeAttributeRmsExtremeOverVoltagePeriodWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsExtremeOverVoltagePeriodWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeRmsExtremeOverVoltagePeriodWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsExtremeOverVoltagePeriodWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeRmsExtremeUnderVoltagePeriodWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeUnderVoltagePeriodWithParams : params)
    }
    unsafe fn writeAttributeRmsExtremeUnderVoltagePeriodWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsExtremeUnderVoltagePeriodWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeRmsExtremeUnderVoltagePeriodWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsExtremeUnderVoltagePeriodWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeRmsVoltageSagPeriodWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSagPeriodWithParams : params)
    }
    unsafe fn writeAttributeRmsVoltageSagPeriodWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsVoltageSagPeriodWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeRmsVoltageSagPeriodWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsVoltageSagPeriodWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeRmsVoltageSwellPeriodWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSwellPeriodWithParams : params)
    }
    unsafe fn writeAttributeRmsVoltageSwellPeriodWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsVoltageSwellPeriodWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeRmsVoltageSwellPeriodWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeRmsVoltageSwellPeriodWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeAcVoltageMultiplierWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcVoltageMultiplierWithParams : params)
    }
    unsafe fn readAttributeAcVoltageDivisorWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcVoltageDivisorWithParams : params)
    }
    unsafe fn readAttributeAcCurrentMultiplierWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcCurrentMultiplierWithParams : params)
    }
    unsafe fn readAttributeAcCurrentDivisorWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcCurrentDivisorWithParams : params)
    }
    unsafe fn readAttributeAcPowerMultiplierWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcPowerMultiplierWithParams : params)
    }
    unsafe fn readAttributeAcPowerDivisorWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcPowerDivisorWithParams : params)
    }
    unsafe fn readAttributeOverloadAlarmsMaskWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeOverloadAlarmsMaskWithParams : params)
    }
    unsafe fn writeAttributeOverloadAlarmsMaskWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOverloadAlarmsMaskWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeOverloadAlarmsMaskWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeOverloadAlarmsMaskWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeVoltageOverloadWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeVoltageOverloadWithParams : params)
    }
    unsafe fn readAttributeCurrentOverloadWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCurrentOverloadWithParams : params)
    }
    unsafe fn readAttributeAcOverloadAlarmsMaskWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcOverloadAlarmsMaskWithParams : params)
    }
    unsafe fn writeAttributeAcOverloadAlarmsMaskWithValue_expectedValueInterval_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAcOverloadAlarmsMaskWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs)
    }
    unsafe fn writeAttributeAcOverloadAlarmsMaskWithValue_expectedValueInterval_params_(
        &self,
        dataValueDictionary: NSDictionary,
        expectedValueIntervalMs: NSNumber,
        params: MTRWriteParams,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeAcOverloadAlarmsMaskWithValue : dataValueDictionary, expectedValueInterval : expectedValueIntervalMs, params : params)
    }
    unsafe fn readAttributeAcVoltageOverloadWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcVoltageOverloadWithParams : params)
    }
    unsafe fn readAttributeAcCurrentOverloadWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcCurrentOverloadWithParams : params)
    }
    unsafe fn readAttributeAcActivePowerOverloadWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcActivePowerOverloadWithParams : params)
    }
    unsafe fn readAttributeAcReactivePowerOverloadWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcReactivePowerOverloadWithParams : params)
    }
    unsafe fn readAttributeAverageRmsOverVoltageWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsOverVoltageWithParams : params)
    }
    unsafe fn readAttributeAverageRmsUnderVoltageWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsUnderVoltageWithParams : params)
    }
    unsafe fn readAttributeRmsExtremeOverVoltageWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeOverVoltageWithParams : params)
    }
    unsafe fn readAttributeRmsExtremeUnderVoltageWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeUnderVoltageWithParams : params)
    }
    unsafe fn readAttributeRmsVoltageSagWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSagWithParams : params)
    }
    unsafe fn readAttributeRmsVoltageSwellWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSwellWithParams : params)
    }
    unsafe fn readAttributeLineCurrentPhaseBWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLineCurrentPhaseBWithParams : params)
    }
    unsafe fn readAttributeActiveCurrentPhaseBWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveCurrentPhaseBWithParams : params)
    }
    unsafe fn readAttributeReactiveCurrentPhaseBWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReactiveCurrentPhaseBWithParams : params)
    }
    unsafe fn readAttributeRmsVoltagePhaseBWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltagePhaseBWithParams : params)
    }
    unsafe fn readAttributeRmsVoltageMinPhaseBWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageMinPhaseBWithParams : params)
    }
    unsafe fn readAttributeRmsVoltageMaxPhaseBWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageMaxPhaseBWithParams : params)
    }
    unsafe fn readAttributeRmsCurrentPhaseBWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentPhaseBWithParams : params)
    }
    unsafe fn readAttributeRmsCurrentMinPhaseBWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentMinPhaseBWithParams : params)
    }
    unsafe fn readAttributeRmsCurrentMaxPhaseBWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentMaxPhaseBWithParams : params)
    }
    unsafe fn readAttributeActivePowerPhaseBWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerPhaseBWithParams : params)
    }
    unsafe fn readAttributeActivePowerMinPhaseBWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerMinPhaseBWithParams : params)
    }
    unsafe fn readAttributeActivePowerMaxPhaseBWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerMaxPhaseBWithParams : params)
    }
    unsafe fn readAttributeReactivePowerPhaseBWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReactivePowerPhaseBWithParams : params)
    }
    unsafe fn readAttributeApparentPowerPhaseBWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApparentPowerPhaseBWithParams : params)
    }
    unsafe fn readAttributePowerFactorPhaseBWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerFactorPhaseBWithParams : params)
    }
    unsafe fn readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithParams : params)
    }
    unsafe fn readAttributeAverageRmsOverVoltageCounterPhaseBWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsOverVoltageCounterPhaseBWithParams : params)
    }
    unsafe fn readAttributeAverageRmsUnderVoltageCounterPhaseBWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsUnderVoltageCounterPhaseBWithParams : params)
    }
    unsafe fn readAttributeRmsExtremeOverVoltagePeriodPhaseBWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeOverVoltagePeriodPhaseBWithParams : params)
    }
    unsafe fn readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithParams : params)
    }
    unsafe fn readAttributeRmsVoltageSagPeriodPhaseBWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSagPeriodPhaseBWithParams : params)
    }
    unsafe fn readAttributeRmsVoltageSwellPeriodPhaseBWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSwellPeriodPhaseBWithParams : params)
    }
    unsafe fn readAttributeLineCurrentPhaseCWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeLineCurrentPhaseCWithParams : params)
    }
    unsafe fn readAttributeActiveCurrentPhaseCWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActiveCurrentPhaseCWithParams : params)
    }
    unsafe fn readAttributeReactiveCurrentPhaseCWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReactiveCurrentPhaseCWithParams : params)
    }
    unsafe fn readAttributeRmsVoltagePhaseCWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltagePhaseCWithParams : params)
    }
    unsafe fn readAttributeRmsVoltageMinPhaseCWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageMinPhaseCWithParams : params)
    }
    unsafe fn readAttributeRmsVoltageMaxPhaseCWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageMaxPhaseCWithParams : params)
    }
    unsafe fn readAttributeRmsCurrentPhaseCWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentPhaseCWithParams : params)
    }
    unsafe fn readAttributeRmsCurrentMinPhaseCWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentMinPhaseCWithParams : params)
    }
    unsafe fn readAttributeRmsCurrentMaxPhaseCWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsCurrentMaxPhaseCWithParams : params)
    }
    unsafe fn readAttributeActivePowerPhaseCWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerPhaseCWithParams : params)
    }
    unsafe fn readAttributeActivePowerMinPhaseCWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerMinPhaseCWithParams : params)
    }
    unsafe fn readAttributeActivePowerMaxPhaseCWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeActivePowerMaxPhaseCWithParams : params)
    }
    unsafe fn readAttributeReactivePowerPhaseCWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeReactivePowerPhaseCWithParams : params)
    }
    unsafe fn readAttributeApparentPowerPhaseCWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeApparentPowerPhaseCWithParams : params)
    }
    unsafe fn readAttributePowerFactorPhaseCWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributePowerFactorPhaseCWithParams : params)
    }
    unsafe fn readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithParams : params)
    }
    unsafe fn readAttributeAverageRmsOverVoltageCounterPhaseCWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsOverVoltageCounterPhaseCWithParams : params)
    }
    unsafe fn readAttributeAverageRmsUnderVoltageCounterPhaseCWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAverageRmsUnderVoltageCounterPhaseCWithParams : params)
    }
    unsafe fn readAttributeRmsExtremeOverVoltagePeriodPhaseCWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeOverVoltagePeriodPhaseCWithParams : params)
    }
    unsafe fn readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithParams : params)
    }
    unsafe fn readAttributeRmsVoltageSagPeriodPhaseCWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSagPeriodPhaseCWithParams : params)
    }
    unsafe fn readAttributeRmsVoltageSwellPeriodPhaseCWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeRmsVoltageSwellPeriodPhaseCWithParams : params)
    }
    unsafe fn readAttributeGeneratedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeGeneratedCommandListWithParams : params)
    }
    unsafe fn readAttributeAcceptedCommandListWithParams_(
        &self,
        params: MTRReadParams,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAcceptedCommandListWithParams : params)
    }
    unsafe fn readAttributeAttributeListWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeAttributeListWithParams : params)
    }
    unsafe fn readAttributeFeatureMapWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeFeatureMapWithParams : params)
    }
    unsafe fn readAttributeClusterRevisionWithParams_(&self, params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeClusterRevisionWithParams : params)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRClusterElectricalMeasurement").unwrap(), new)
    }
}
impl MTRClusterElectricalMeasurement_Availability for MTRClusterElectricalMeasurement {}
pub trait MTRClusterElectricalMeasurement_Availability: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpointID_queue_(
        &self,
        device: MTRDevice,
        endpointID: NSNumber,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpointID : endpointID, queue : queue)
    }
}
impl MTRClusterElectricalMeasurement_Deprecated for MTRClusterElectricalMeasurement {}
pub trait MTRClusterElectricalMeasurement_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithDevice_endpoint_queue_(
        &self,
        device: MTRDevice,
        endpoint: u16,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDevice : device, endpoint : endpoint, queue : queue)
    }
    unsafe fn getProfileInfoCommandWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRElectricalMeasurementClusterGetProfileInfoCommandParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getProfileInfoCommandWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn getProfileInfoCommandWithExpectedValues_expectedValueInterval_completionHandler_(
        &self,
        expectedValues: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getProfileInfoCommandWithExpectedValues : expectedValues, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
    unsafe fn getMeasurementProfileCommandWithParams_expectedValues_expectedValueInterval_completionHandler_(
        &self,
        params: MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams,
        expectedDataValueDictionaries: NSArray,
        expectedValueIntervalMs: NSNumber,
        completionHandler: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getMeasurementProfileCommandWithParams : params, expectedValues : expectedDataValueDictionaries, expectedValueInterval : expectedValueIntervalMs, completionHandler : completionHandler)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCertificateInfo(pub id);
impl std::ops::Deref for MTRCertificateInfo {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCertificateInfo {}
impl MTRCertificateInfo {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCertificateInfo").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRCertificateInfo {}
impl INSObject for MTRCertificateInfo {}
impl PNSObject for MTRCertificateInfo {}
impl std::convert::TryFrom<NSObject> for MTRCertificateInfo {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRCertificateInfo, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCertificateInfo").unwrap()) };
        if is_kind_of {
            Ok(MTRCertificateInfo(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRCertificateInfo")
        }
    }
}
impl IMTRCertificateInfo for MTRCertificateInfo {}
pub trait IMTRCertificateInfo: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithTLVBytes_(&self, bytes: NSData) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithTLVBytes : bytes)
    }
    unsafe fn issuer(&self) -> MTRDistinguishedNameInfo
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, issuer)
    }
    unsafe fn subject(&self) -> MTRDistinguishedNameInfo
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, subject)
    }
    unsafe fn notBefore(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, notBefore)
    }
    unsafe fn notAfter(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, notAfter)
    }
    unsafe fn publicKeyData(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, publicKeyData)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCertificateInfo").unwrap(), new)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDistinguishedNameInfo(pub id);
impl std::ops::Deref for MTRDistinguishedNameInfo {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDistinguishedNameInfo {}
impl MTRDistinguishedNameInfo {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDistinguishedNameInfo").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDistinguishedNameInfo {}
impl INSObject for MTRDistinguishedNameInfo {}
impl PNSObject for MTRDistinguishedNameInfo {}
impl std::convert::TryFrom<NSObject> for MTRDistinguishedNameInfo {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDistinguishedNameInfo, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDistinguishedNameInfo").unwrap()) };
        if is_kind_of {
            Ok(MTRDistinguishedNameInfo(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDistinguishedNameInfo")
        }
    }
}
impl IMTRDistinguishedNameInfo for MTRDistinguishedNameInfo {}
pub trait IMTRDistinguishedNameInfo: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn fabricID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricID)
    }
    unsafe fn rootCACertificateID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rootCACertificateID)
    }
    unsafe fn intermediateCACertificateID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, intermediateCACertificateID)
    }
    unsafe fn caseAuthenticatedTags(&self) -> NSSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, caseAuthenticatedTags)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDistinguishedNameInfo").unwrap(), new)
    }
}
pub type MTRClusterIDType = u32;
pub type MTRAttributeIDType = u32;
pub type MTRCommandIDType = u32;
pub type MTREventIDType = u32;
pub type MTRDeviceTypeIDType = u32;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommissionableBrowserResult(pub id);
impl std::ops::Deref for MTRCommissionableBrowserResult {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommissionableBrowserResult {}
impl MTRCommissionableBrowserResult {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommissionableBrowserResult").unwrap(), alloc) })
    }
}
impl INSObject for MTRCommissionableBrowserResult {}
impl PNSObject for MTRCommissionableBrowserResult {}
impl std::convert::TryFrom<NSObject> for MTRCommissionableBrowserResult {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRCommissionableBrowserResult, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommissionableBrowserResult").unwrap())
        };
        if is_kind_of {
            Ok(MTRCommissionableBrowserResult(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRCommissionableBrowserResult")
        }
    }
}
impl IMTRCommissionableBrowserResult for MTRCommissionableBrowserResult {}
pub trait IMTRCommissionableBrowserResult: Sized + std::ops::Deref {
    unsafe fn instanceName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, instanceName)
    }
    unsafe fn vendorID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vendorID)
    }
    unsafe fn productID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, productID)
    }
    unsafe fn discriminator(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, discriminator)
    }
    unsafe fn commissioningMode(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, commissioningMode)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommissioneeInfo(pub id);
impl std::ops::Deref for MTRCommissioneeInfo {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommissioneeInfo {}
impl MTRCommissioneeInfo {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommissioneeInfo").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRCommissioneeInfo {}
impl PNSSecureCoding for MTRCommissioneeInfo {}
impl INSObject for MTRCommissioneeInfo {}
impl PNSObject for MTRCommissioneeInfo {}
impl std::convert::TryFrom<NSObject> for MTRCommissioneeInfo {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRCommissioneeInfo, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommissioneeInfo").unwrap()) };
        if is_kind_of {
            Ok(MTRCommissioneeInfo(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRCommissioneeInfo")
        }
    }
}
impl IMTRCommissioneeInfo for MTRCommissioneeInfo {}
pub trait IMTRCommissioneeInfo: Sized + std::ops::Deref {
    unsafe fn productIdentity(&self) -> MTRProductIdentity
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, productIdentity)
    }
    unsafe fn endpointsById(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpointsById)
    }
    unsafe fn rootEndpoint(&self) -> MTREndpointInfo
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rootEndpoint)
    }
    unsafe fn attributes(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attributes)
    }
    unsafe fn networkInterfaces(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkInterfaces)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceAttestationDeviceInfo(pub id);
impl std::ops::Deref for MTRDeviceAttestationDeviceInfo {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceAttestationDeviceInfo {}
impl MTRDeviceAttestationDeviceInfo {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceAttestationDeviceInfo").unwrap(), alloc) })
    }
}
impl INSObject for MTRDeviceAttestationDeviceInfo {}
impl PNSObject for MTRDeviceAttestationDeviceInfo {}
impl std::convert::TryFrom<NSObject> for MTRDeviceAttestationDeviceInfo {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDeviceAttestationDeviceInfo, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceAttestationDeviceInfo").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceAttestationDeviceInfo(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDeviceAttestationDeviceInfo")
        }
    }
}
impl IMTRDeviceAttestationDeviceInfo for MTRDeviceAttestationDeviceInfo {}
pub trait IMTRDeviceAttestationDeviceInfo: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn vendorID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vendorID)
    }
    unsafe fn productID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, productID)
    }
    unsafe fn basicInformationVendorID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, basicInformationVendorID)
    }
    unsafe fn basicInformationProductID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, basicInformationProductID)
    }
    unsafe fn dacCertificate(&self) -> MTRCertificateDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dacCertificate)
    }
    unsafe fn dacPAICertificate(&self) -> MTRCertificateDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dacPAICertificate)
    }
    unsafe fn certificateDeclaration(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, certificateDeclaration)
    }
    unsafe fn attestationChallenge(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attestationChallenge)
    }
    unsafe fn attestationNonce(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attestationNonce)
    }
    unsafe fn elementsTLV(&self) -> MTRTLVBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, elementsTLV)
    }
    unsafe fn certificationDeclaration(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, certificationDeclaration)
    }
    unsafe fn elementsSignature(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, elementsSignature)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceAttestationDeviceInfo").unwrap(), new)
    }
}
pub trait PMTRDeviceAttestationDelegate: Sized + std::ops::Deref {
    unsafe fn deviceAttestationCompletedForController_opaqueDeviceHandle_attestationDeviceInfo_error_(
        &self,
        controller: MTRDeviceController,
        opaqueDeviceHandle: *mut ::std::os::raw::c_void,
        attestationDeviceInfo: MTRDeviceAttestationDeviceInfo,
        error: NSError,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceAttestationCompletedForController : controller, opaqueDeviceHandle : opaqueDeviceHandle, attestationDeviceInfo : attestationDeviceInfo, error : error)
    }
    unsafe fn deviceAttestationFailedForController_opaqueDeviceHandle_error_(
        &self,
        controller: MTRDeviceController,
        opaqueDeviceHandle: *mut ::std::os::raw::c_void,
        error: NSError,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceAttestationFailedForController : controller, opaqueDeviceHandle : opaqueDeviceHandle, error : error)
    }
    unsafe fn deviceAttestation_completedForDevice_attestationDeviceInfo_error_(
        &self,
        controller: MTRDeviceController,
        device: *mut ::std::os::raw::c_void,
        attestationDeviceInfo: MTRDeviceAttestationDeviceInfo,
        error: NSError,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceAttestation : controller, completedForDevice : device, attestationDeviceInfo : attestationDeviceInfo, error : error)
    }
    unsafe fn deviceAttestation_failedForDevice_error_(
        &self,
        controller: MTRDeviceController,
        device: *mut ::std::os::raw::c_void,
        error: NSError,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceAttestation : controller, failedForDevice : device, error : error)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMetricData(pub id);
impl std::ops::Deref for MTRMetricData {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMetricData {}
impl MTRMetricData {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMetricData").unwrap(), alloc) })
    }
}
impl INSObject for MTRMetricData {}
impl PNSObject for MTRMetricData {}
impl std::convert::TryFrom<NSObject> for MTRMetricData {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMetricData, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMetricData").unwrap()) };
        if is_kind_of {
            Ok(MTRMetricData(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMetricData")
        }
    }
}
impl IMTRMetricData for MTRMetricData {}
pub trait IMTRMetricData: Sized + std::ops::Deref {
    unsafe fn value(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn errorCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, errorCode)
    }
    unsafe fn duration(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, duration)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRMetrics(pub id);
impl std::ops::Deref for MTRMetrics {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRMetrics {}
impl MTRMetrics {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMetrics").unwrap(), alloc) })
    }
}
impl INSObject for MTRMetrics {}
impl PNSObject for MTRMetrics {}
impl std::convert::TryFrom<NSObject> for MTRMetrics {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRMetrics, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRMetrics").unwrap()) };
        if is_kind_of {
            Ok(MTRMetrics(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRMetrics")
        }
    }
}
impl IMTRMetrics for MTRMetrics {}
pub trait IMTRMetrics: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn metricDataForKey_(&self, key: NSString) -> MTRMetricData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, metricDataForKey : key)
    }
    unsafe fn uniqueIdentifier(&self) -> NSUUID
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, uniqueIdentifier)
    }
    unsafe fn allKeys(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allKeys)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRMetrics").unwrap(), new)
    }
}
pub trait PMTRCommissioningDelegate: Sized + std::ops::Deref {
    unsafe fn commissioning_readCommissioneeInfo_(
        &self,
        commissioning: MTRCommissioningOperation,
        info: MTRCommissioneeInfo,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commissioning : commissioning, readCommissioneeInfo : info)
    }
    unsafe fn commissioning_completedDeviceAttestation_error_completion_(
        &self,
        commissioning: MTRCommissioningOperation,
        attestationDeviceInfo: MTRDeviceAttestationDeviceInfo,
        error: NSError,
        completion: dispatch_block_t,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commissioning : commissioning, completedDeviceAttestation : attestationDeviceInfo, error : error, completion : completion)
    }
    unsafe fn commissioning_needsWiFiCredentialsWithScanResults_error_completion_(
        &self,
        commissioning: MTRCommissioningOperation,
        networks: NSArray,
        error: NSError,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commissioning : commissioning, needsWiFiCredentialsWithScanResults : networks, error : error, completion : completion)
    }
    unsafe fn commissioning_needsThreadCredentialsWithScanResults_error_completion_(
        &self,
        commissioning: MTRCommissioningOperation,
        networks: NSArray,
        error: NSError,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commissioning : commissioning, needsThreadCredentialsWithScanResults : networks, error : error, completion : completion)
    }
    unsafe fn commissioningStartingNetworkScan_(&self, commissioning: MTRCommissioningOperation)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commissioningStartingNetworkScan : commissioning)
    }
    unsafe fn commissioningProvisionedNetworkCredentials_(
        &self,
        commissioning: MTRCommissioningOperation,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commissioningProvisionedNetworkCredentials : commissioning)
    }
    unsafe fn commissioning_failedWithError_metrics_(
        &self,
        commissioning: MTRCommissioningOperation,
        error: NSError,
        metrics: MTRMetrics,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commissioning : commissioning, failedWithError : error, metrics : metrics)
    }
    unsafe fn commissioning_succeededForNodeID_metrics_(
        &self,
        commissioning: MTRCommissioningOperation,
        nodeID: NSNumber,
        metrics: MTRMetrics,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commissioning : commissioning, succeededForNodeID : nodeID, metrics : metrics)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommissioningParameters(pub id);
impl std::ops::Deref for MTRCommissioningParameters {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommissioningParameters {}
impl MTRCommissioningParameters {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommissioningParameters").unwrap(), alloc) })
    }
}
impl INSObject for MTRCommissioningParameters {}
impl PNSObject for MTRCommissioningParameters {}
impl std::convert::TryFrom<NSObject> for MTRCommissioningParameters {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRCommissioningParameters, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommissioningParameters").unwrap()) };
        if is_kind_of {
            Ok(MTRCommissioningParameters(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRCommissioningParameters")
        }
    }
}
impl IMTRCommissioningParameters for MTRCommissioningParameters {}
pub trait IMTRCommissioningParameters: Sized + std::ops::Deref {
    unsafe fn csrNonce(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, csrNonce)
    }
    unsafe fn setCsrNonce_(&self, csrNonce: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCsrNonce : csrNonce)
    }
    unsafe fn attestationNonce(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attestationNonce)
    }
    unsafe fn setAttestationNonce_(&self, attestationNonce: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttestationNonce : attestationNonce)
    }
    unsafe fn wifiSSID(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, wifiSSID)
    }
    unsafe fn setWifiSSID_(&self, wifiSSID: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWifiSSID : wifiSSID)
    }
    unsafe fn wifiCredentials(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, wifiCredentials)
    }
    unsafe fn setWifiCredentials_(&self, wifiCredentials: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWifiCredentials : wifiCredentials)
    }
    unsafe fn threadOperationalDataset(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, threadOperationalDataset)
    }
    unsafe fn setThreadOperationalDataset_(&self, threadOperationalDataset: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setThreadOperationalDataset : threadOperationalDataset)
    }
    unsafe fn deviceAttestationDelegate(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deviceAttestationDelegate)
    }
    unsafe fn setDeviceAttestationDelegate_(&self, deviceAttestationDelegate: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDeviceAttestationDelegate : deviceAttestationDelegate)
    }
    unsafe fn failSafeTimeout(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, failSafeTimeout)
    }
    unsafe fn setFailSafeTimeout_(&self, failSafeTimeout: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFailSafeTimeout : failSafeTimeout)
    }
    unsafe fn skipCommissioningComplete(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, skipCommissioningComplete)
    }
    unsafe fn setSkipCommissioningComplete_(&self, skipCommissioningComplete: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSkipCommissioningComplete : skipCommissioningComplete)
    }
    unsafe fn countryCode(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, countryCode)
    }
    unsafe fn setCountryCode_(&self, countryCode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCountryCode : countryCode)
    }
    unsafe fn readEndpointInformation(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, readEndpointInformation)
    }
    unsafe fn setReadEndpointInformation_(&self, readEndpointInformation: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReadEndpointInformation : readEndpointInformation)
    }
    unsafe fn acceptedTermsAndConditions(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, acceptedTermsAndConditions)
    }
    unsafe fn setAcceptedTermsAndConditions_(&self, acceptedTermsAndConditions: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAcceptedTermsAndConditions : acceptedTermsAndConditions)
    }
    unsafe fn acceptedTermsAndConditionsVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, acceptedTermsAndConditionsVersion)
    }
    unsafe fn setAcceptedTermsAndConditionsVersion_(
        &self,
        acceptedTermsAndConditionsVersion: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAcceptedTermsAndConditionsVersion : acceptedTermsAndConditionsVersion)
    }
    unsafe fn extraAttributesToRead(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, extraAttributesToRead)
    }
    unsafe fn setExtraAttributesToRead_(&self, extraAttributesToRead: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExtraAttributesToRead : extraAttributesToRead)
    }
    unsafe fn forceWiFiScan(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, forceWiFiScan)
    }
    unsafe fn setForceWiFiScan_(&self, forceWiFiScan: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setForceWiFiScan : forceWiFiScan)
    }
    unsafe fn forceThreadScan(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, forceThreadScan)
    }
    unsafe fn setForceThreadScan_(&self, forceThreadScan: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setForceThreadScan : forceThreadScan)
    }
}
impl MTRCommissioningParameters_Deprecated for MTRCommissioningParameters {}
pub trait MTRCommissioningParameters_Deprecated: Sized + std::ops::Deref {
    unsafe fn CSRNonce(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, CSRNonce)
    }
    unsafe fn setCSRNonce_(&self, CSRNonce: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCSRNonce : CSRNonce)
    }
    unsafe fn failSafeExpiryTimeoutSecs(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, failSafeExpiryTimeoutSecs)
    }
    unsafe fn setFailSafeExpiryTimeoutSecs_(&self, failSafeExpiryTimeoutSecs: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFailSafeExpiryTimeoutSecs : failSafeExpiryTimeoutSecs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRCommissioningOperation(pub id);
impl std::ops::Deref for MTRCommissioningOperation {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRCommissioningOperation {}
impl MTRCommissioningOperation {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommissioningOperation").unwrap(), alloc) })
    }
}
impl INSObject for MTRCommissioningOperation {}
impl PNSObject for MTRCommissioningOperation {}
impl std::convert::TryFrom<NSObject> for MTRCommissioningOperation {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRCommissioningOperation, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRCommissioningOperation").unwrap()) };
        if is_kind_of {
            Ok(MTRCommissioningOperation(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRCommissioningOperation")
        }
    }
}
impl IMTRCommissioningOperation for MTRCommissioningOperation {}
pub trait IMTRCommissioningOperation: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithParameters_setupPayload_delegate_queue_(
        &self,
        parameters: MTRCommissioningParameters,
        payload: NSString,
        delegate: *mut u64,
        queue: NSObject,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithParameters : parameters, setupPayload : payload, delegate : delegate, queue : queue)
    }
    unsafe fn startWithController_(&self, controller: MTRDeviceController)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startWithController : controller)
    }
    unsafe fn stop(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stop)
    }
    unsafe fn matchedPayload(&self) -> MTRSetupPayload
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, matchedPayload)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRCommissioningOperation").unwrap(), new)
    }
}
pub type MTRXPCConnectBlock = *mut ::std::os::raw::c_void;
pub type MTRDeviceControllerGetterHandler = *mut ::std::os::raw::c_void;
pub type MTRValuesHandler = *mut ::std::os::raw::c_void;
impl MTRDeviceController_XPC for MTRDeviceController {}
pub trait MTRDeviceController_XPC: Sized + std::ops::Deref {
    unsafe fn sharedControllerWithID_xpcConnectBlock_(
        controllerID: *mut u64,
        xpcConnectBlock: MTRXPCConnectBlock,
    ) -> MTRDeviceController
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceController").unwrap(), sharedControllerWithID : controllerID, xpcConnectBlock : xpcConnectBlock)
    }
    unsafe fn encodeXPCResponseValues_(values: NSArray) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceController").unwrap(), encodeXPCResponseValues : values)
    }
    unsafe fn decodeXPCResponseValues_(values: NSArray) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceController").unwrap(), decodeXPCResponseValues : values)
    }
    unsafe fn encodeXPCReadParams_(params: MTRReadParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceController").unwrap(), encodeXPCReadParams : params)
    }
    unsafe fn decodeXPCReadParams_(params: NSDictionary) -> MTRReadParams
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceController").unwrap(), decodeXPCReadParams : params)
    }
    unsafe fn encodeXPCSubscribeParams_(params: MTRSubscribeParams) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceController").unwrap(), encodeXPCSubscribeParams : params)
    }
    unsafe fn decodeXPCSubscribeParams_(params: NSDictionary) -> MTRSubscribeParams
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceController").unwrap(), decodeXPCSubscribeParams : params)
    }
    unsafe fn xpcInterfaceForServerProtocol() -> NSXPCInterface
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceController").unwrap(), xpcInterfaceForServerProtocol)
    }
    unsafe fn xpcInterfaceForClientProtocol() -> NSXPCInterface
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceController").unwrap(), xpcInterfaceForClientProtocol)
    }
}
pub trait PMTRDeviceControllerServerProtocol: Sized + std::ops::Deref {
    unsafe fn getAnyDeviceControllerWithCompletion_(
        &self,
        completion: MTRDeviceControllerGetterHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getAnyDeviceControllerWithCompletion : completion)
    }
    unsafe fn readAttributeWithController_nodeId_endpointId_clusterId_attributeId_params_completion_(
        &self,
        controller: id,
        nodeId: u64,
        endpointId: NSNumber,
        clusterId: NSNumber,
        attributeId: NSNumber,
        params: NSDictionary,
        completion: MTRValuesHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeWithController : controller, nodeId : nodeId, endpointId : endpointId, clusterId : clusterId, attributeId : attributeId, params : params, completion : completion)
    }
    unsafe fn writeAttributeWithController_nodeId_endpointId_clusterId_attributeId_value_timedWriteTimeout_completion_(
        &self,
        controller: id,
        nodeId: u64,
        endpointId: NSNumber,
        clusterId: NSNumber,
        attributeId: NSNumber,
        value: id,
        timeoutMs: NSNumber,
        completion: MTRValuesHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeAttributeWithController : controller, nodeId : nodeId, endpointId : endpointId, clusterId : clusterId, attributeId : attributeId, value : value, timedWriteTimeout : timeoutMs, completion : completion)
    }
    unsafe fn invokeCommandWithController_nodeId_endpointId_clusterId_commandId_fields_timedInvokeTimeout_completion_(
        &self,
        controller: id,
        nodeId: u64,
        endpointId: NSNumber,
        clusterId: NSNumber,
        commandId: NSNumber,
        fields: id,
        timeoutMs: NSNumber,
        completion: MTRValuesHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, invokeCommandWithController : controller, nodeId : nodeId, endpointId : endpointId, clusterId : clusterId, commandId : commandId, fields : fields, timedInvokeTimeout : timeoutMs, completion : completion)
    }
    unsafe fn subscribeAttributeWithController_nodeId_endpointId_clusterId_attributeId_minInterval_maxInterval_params_establishedHandler_(
        &self,
        controller: id,
        nodeId: u64,
        endpointId: NSNumber,
        clusterId: NSNumber,
        attributeId: NSNumber,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: NSDictionary,
        establishedHandler: dispatch_block_t,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeAttributeWithController : controller, nodeId : nodeId, endpointId : endpointId, clusterId : clusterId, attributeId : attributeId, minInterval : minInterval, maxInterval : maxInterval, params : params, establishedHandler : establishedHandler)
    }
    unsafe fn stopReportsWithController_nodeId_completion_(
        &self,
        controller: id,
        nodeId: u64,
        completion: dispatch_block_t,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stopReportsWithController : controller, nodeId : nodeId, completion : completion)
    }
    unsafe fn subscribeWithController_nodeId_minInterval_maxInterval_params_shouldCache_completion_(
        &self,
        controller: id,
        nodeId: u64,
        minInterval: NSNumber,
        maxInterval: NSNumber,
        params: NSDictionary,
        shouldCache: BOOL,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subscribeWithController : controller, nodeId : nodeId, minInterval : minInterval, maxInterval : maxInterval, params : params, shouldCache : shouldCache, completion : completion)
    }
    unsafe fn readAttributeCacheWithController_nodeId_endpointId_clusterId_attributeId_completion_(
        &self,
        controller: id,
        nodeId: u64,
        endpointId: NSNumber,
        clusterId: NSNumber,
        attributeId: NSNumber,
        completion: MTRValuesHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readAttributeCacheWithController : controller, nodeId : nodeId, endpointId : endpointId, clusterId : clusterId, attributeId : attributeId, completion : completion)
    }
    unsafe fn getDeviceControllerWithFabricId_completion_(
        &self,
        fabricId: u64,
        completion: MTRDeviceControllerGetterHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getDeviceControllerWithFabricId : fabricId, completion : completion)
    }
    unsafe fn downloadLogWithController_nodeId_type_timeout_completion_(
        &self,
        controller: id,
        nodeId: NSNumber,
        type_: MTRDiagnosticLogType,
        timeout: NSTimeInterval,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, downloadLogWithController : controller, nodeId : nodeId, r#type : type_, timeout : timeout, completion : completion)
    }
}
pub trait PMTRDeviceControllerClientProtocol: Sized + std::ops::Deref {
    unsafe fn handleReportWithController_nodeId_values_error_(
        &self,
        controller: id,
        nodeId: u64,
        values: id,
        error: NSError,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, handleReportWithController : controller, nodeId : nodeId, values : values, error : error)
    }
}
impl MTRDeviceController_Deprecated_XPC for MTRDeviceController {}
pub trait MTRDeviceController_Deprecated_XPC: Sized + std::ops::Deref {
    unsafe fn sharedControllerWithId_xpcConnectBlock_(
        controllerID: *mut u64,
        xpcConnectBlock: MTRXPCConnectBlock,
    ) -> MTRDeviceController
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceController").unwrap(), sharedControllerWithId : controllerID, xpcConnectBlock : xpcConnectBlock)
    }
}
pub type MTRCommissioningStatus = NSInteger;
pub trait PMTRDeviceControllerDelegate: Sized + std::ops::Deref {
    unsafe fn controller_statusUpdate_(
        &self,
        controller: MTRDeviceController,
        status: MTRCommissioningStatus,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, controller : controller, statusUpdate : status)
    }
    unsafe fn controller_commissioningSessionEstablishmentDone_(
        &self,
        controller: MTRDeviceController,
        error: NSError,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, controller : controller, commissioningSessionEstablishmentDone : error)
    }
    unsafe fn controller_commissioningComplete_(
        &self,
        controller: MTRDeviceController,
        error: NSError,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, controller : controller, commissioningComplete : error)
    }
    unsafe fn controller_commissioningComplete_nodeID_(
        &self,
        controller: MTRDeviceController,
        error: NSError,
        nodeID: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, controller : controller, commissioningComplete : error, nodeID : nodeID)
    }
    unsafe fn controller_commissioningComplete_nodeID_metrics_(
        &self,
        controller: MTRDeviceController,
        error: NSError,
        nodeID: NSNumber,
        metrics: MTRMetrics,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, controller : controller, commissioningComplete : error, nodeID : nodeID, metrics : metrics)
    }
    unsafe fn controller_readCommissioneeInfo_(
        &self,
        controller: MTRDeviceController,
        info: MTRCommissioneeInfo,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, controller : controller, readCommissioneeInfo : info)
    }
    unsafe fn controller_readCommissioningInfo_(
        &self,
        controller: MTRDeviceController,
        info: MTRProductIdentity,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, controller : controller, readCommissioningInfo : info)
    }
    unsafe fn controller_suspendedChangedTo_(
        &self,
        controller: MTRDeviceController,
        suspended: BOOL,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, controller : controller, suspendedChangedTo : suspended)
    }
    unsafe fn devicesChangedForController_(&self, controller: MTRDeviceController)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, devicesChangedForController : controller)
    }
    unsafe fn controller_commissioneeHasReceivedNetworkCredentials_(
        &self,
        controller: MTRDeviceController,
        nodeID: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, controller : controller, commissioneeHasReceivedNetworkCredentials : nodeID)
    }
}
pub type MTRPairingStatus = NSUInteger;
pub trait PMTRDevicePairingDelegate: Sized + std::ops::Deref {
    unsafe fn onStatusUpdate_(&self, status: MTRPairingStatus)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onStatusUpdate : status)
    }
    unsafe fn onPairingComplete_(&self, error: NSError)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onPairingComplete : error)
    }
    unsafe fn onCommissioningComplete_(&self, error: NSError)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onCommissioningComplete : error)
    }
    unsafe fn onPairingDeleted_(&self, error: NSError)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, onPairingDeleted : error)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceControllerFactoryParams(pub id);
impl std::ops::Deref for MTRDeviceControllerFactoryParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceControllerFactoryParams {}
impl MTRDeviceControllerFactoryParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceControllerFactoryParams").unwrap(), alloc) })
    }
}
impl INSObject for MTRDeviceControllerFactoryParams {}
impl PNSObject for MTRDeviceControllerFactoryParams {}
impl std::convert::TryFrom<NSObject> for MTRDeviceControllerFactoryParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDeviceControllerFactoryParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceControllerFactoryParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceControllerFactoryParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDeviceControllerFactoryParams")
        }
    }
}
impl IMTRDeviceControllerFactoryParams for MTRDeviceControllerFactoryParams {}
pub trait IMTRDeviceControllerFactoryParams: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithStorage_(&self, storage: *mut u64) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithStorage : storage)
    }
    unsafe fn storage(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, storage)
    }
    unsafe fn otaProviderDelegate(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, otaProviderDelegate)
    }
    unsafe fn setOtaProviderDelegate_(&self, otaProviderDelegate: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOtaProviderDelegate : otaProviderDelegate)
    }
    unsafe fn productAttestationAuthorityCertificates(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, productAttestationAuthorityCertificates)
    }
    unsafe fn setProductAttestationAuthorityCertificates_(
        &self,
        productAttestationAuthorityCertificates: NSArray,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProductAttestationAuthorityCertificates : productAttestationAuthorityCertificates)
    }
    unsafe fn certificationDeclarationCertificates(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, certificationDeclarationCertificates)
    }
    unsafe fn setCertificationDeclarationCertificates_(
        &self,
        certificationDeclarationCertificates: NSArray,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCertificationDeclarationCertificates : certificationDeclarationCertificates)
    }
    unsafe fn port(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, port)
    }
    unsafe fn setPort_(&self, port: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPort : port)
    }
    unsafe fn shouldStartServer(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shouldStartServer)
    }
    unsafe fn setShouldStartServer_(&self, shouldStartServer: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setShouldStartServer : shouldStartServer)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceControllerFactory(pub id);
impl std::ops::Deref for MTRDeviceControllerFactory {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceControllerFactory {}
impl MTRDeviceControllerFactory {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceControllerFactory").unwrap(), alloc) })
    }
}
impl INSObject for MTRDeviceControllerFactory {}
impl PNSObject for MTRDeviceControllerFactory {}
impl std::convert::TryFrom<NSObject> for MTRDeviceControllerFactory {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDeviceControllerFactory, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceControllerFactory").unwrap()) };
        if is_kind_of {
            Ok(MTRDeviceControllerFactory(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDeviceControllerFactory")
        }
    }
}
impl IMTRDeviceControllerFactory for MTRDeviceControllerFactory {}
pub trait IMTRDeviceControllerFactory: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn startControllerFactory_error_(
        &self,
        startupParams: MTRDeviceControllerFactoryParams,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startControllerFactory : startupParams, error : error)
    }
    unsafe fn stopControllerFactory(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stopControllerFactory)
    }
    unsafe fn createControllerOnExistingFabric_error_(
        &self,
        startupParams: MTRDeviceControllerStartupParams,
        error: *mut NSError,
    ) -> MTRDeviceController
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, createControllerOnExistingFabric : startupParams, error : error)
    }
    unsafe fn createControllerOnNewFabric_error_(
        &self,
        startupParams: MTRDeviceControllerStartupParams,
        error: *mut NSError,
    ) -> MTRDeviceController
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, createControllerOnNewFabric : startupParams, error : error)
    }
    unsafe fn preWarmCommissioningSession(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, preWarmCommissioningSession)
    }
    unsafe fn isRunning(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isRunning)
    }
    unsafe fn knownFabrics(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, knownFabrics)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceControllerFactory").unwrap(), new)
    }
    unsafe fn sharedInstance() -> MTRDeviceControllerFactory
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceControllerFactory").unwrap(), sharedInstance)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRControllerFactoryParams(pub id);
impl std::ops::Deref for MTRControllerFactoryParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRControllerFactoryParams {}
impl MTRControllerFactoryParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRControllerFactoryParams").unwrap(), alloc) })
    }
}
impl IMTRDeviceControllerFactoryParams for MTRControllerFactoryParams {}
impl From<MTRControllerFactoryParams> for MTRDeviceControllerFactoryParams {
    fn from(child: MTRControllerFactoryParams) -> MTRDeviceControllerFactoryParams {
        MTRDeviceControllerFactoryParams(child.0)
    }
}
impl std::convert::TryFrom<MTRDeviceControllerFactoryParams> for MTRControllerFactoryParams {
    type Error = &'static str;
    fn try_from(
        parent: MTRDeviceControllerFactoryParams,
    ) -> Result<MTRControllerFactoryParams, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRControllerFactoryParams").unwrap()) };
        if is_kind_of {
            Ok(MTRControllerFactoryParams(parent.0))
        } else {
            Err ("This MTRDeviceControllerFactoryParams cannot be downcasted to MTRControllerFactoryParams" ,)
        }
    }
}
impl INSObject for MTRControllerFactoryParams {}
impl PNSObject for MTRControllerFactoryParams {}
impl IMTRControllerFactoryParams for MTRControllerFactoryParams {}
pub trait IMTRControllerFactoryParams: Sized + std::ops::Deref {
    unsafe fn storageDelegate(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, storageDelegate)
    }
    unsafe fn startServer(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startServer)
    }
    unsafe fn setStartServer_(&self, startServer: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartServer : startServer)
    }
    unsafe fn paaCerts(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, paaCerts)
    }
    unsafe fn setPaaCerts_(&self, paaCerts: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPaaCerts : paaCerts)
    }
    unsafe fn cdCerts(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cdCerts)
    }
    unsafe fn setCdCerts_(&self, cdCerts: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCdCerts : cdCerts)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRControllerFactory(pub id);
impl std::ops::Deref for MTRControllerFactory {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRControllerFactory {}
impl MTRControllerFactory {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRControllerFactory").unwrap(), alloc) })
    }
}
impl INSObject for MTRControllerFactory {}
impl PNSObject for MTRControllerFactory {}
impl std::convert::TryFrom<NSObject> for MTRControllerFactory {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRControllerFactory, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRControllerFactory").unwrap()) };
        if is_kind_of {
            Ok(MTRControllerFactory(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRControllerFactory")
        }
    }
}
impl IMTRControllerFactory for MTRControllerFactory {}
pub trait IMTRControllerFactory: Sized + std::ops::Deref {
    unsafe fn startup_(&self, startupParams: MTRControllerFactoryParams) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startup : startupParams)
    }
    unsafe fn shutdown(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shutdown)
    }
    unsafe fn startControllerOnExistingFabric_(
        &self,
        startupParams: MTRDeviceControllerStartupParams,
    ) -> MTRDeviceController
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startControllerOnExistingFabric : startupParams)
    }
    unsafe fn startControllerOnNewFabric_(
        &self,
        startupParams: MTRDeviceControllerStartupParams,
    ) -> MTRDeviceController
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startControllerOnNewFabric : startupParams)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn isRunning(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isRunning)
    }
    unsafe fn sharedInstance() -> MTRControllerFactory
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRControllerFactory").unwrap(), sharedInstance)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRControllerFactory").unwrap(), new)
    }
}
pub type MTRStorageSecurityLevel = NSUInteger;
pub type MTRStorageSharingType = NSUInteger;
pub trait PMTRDeviceControllerStorageDelegate: Sized + std::ops::Deref {
    unsafe fn controller_valueForKey_securityLevel_sharingType_(
        &self,
        controller: MTRDeviceController,
        key: NSString,
        securityLevel: MTRStorageSecurityLevel,
        sharingType: MTRStorageSharingType,
    ) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, controller : controller, valueForKey : key, securityLevel : securityLevel, sharingType : sharingType)
    }
    unsafe fn controller_storeValue_forKey_securityLevel_sharingType_(
        &self,
        controller: MTRDeviceController,
        value: *mut u64,
        key: NSString,
        securityLevel: MTRStorageSecurityLevel,
        sharingType: MTRStorageSharingType,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, controller : controller, storeValue : value, forKey : key, securityLevel : securityLevel, sharingType : sharingType)
    }
    unsafe fn controller_removeValueForKey_securityLevel_sharingType_(
        &self,
        controller: MTRDeviceController,
        key: NSString,
        securityLevel: MTRStorageSecurityLevel,
        sharingType: MTRStorageSharingType,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, controller : controller, removeValueForKey : key, securityLevel : securityLevel, sharingType : sharingType)
    }
    unsafe fn valuesForController_securityLevel_sharingType_(
        &self,
        controller: MTRDeviceController,
        securityLevel: MTRStorageSecurityLevel,
        sharingType: MTRStorageSharingType,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, valuesForController : controller, securityLevel : securityLevel, sharingType : sharingType)
    }
    unsafe fn controller_storeValues_securityLevel_sharingType_(
        &self,
        controller: MTRDeviceController,
        values: NSDictionary,
        securityLevel: MTRStorageSecurityLevel,
        sharingType: MTRStorageSharingType,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, controller : controller, storeValues : values, securityLevel : securityLevel, sharingType : sharingType)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceStorageBehaviorConfiguration(pub id);
impl std::ops::Deref for MTRDeviceStorageBehaviorConfiguration {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceStorageBehaviorConfiguration {}
impl MTRDeviceStorageBehaviorConfiguration {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceStorageBehaviorConfiguration").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDeviceStorageBehaviorConfiguration {}
impl INSObject for MTRDeviceStorageBehaviorConfiguration {}
impl PNSObject for MTRDeviceStorageBehaviorConfiguration {}
impl std::convert::TryFrom<NSObject> for MTRDeviceStorageBehaviorConfiguration {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDeviceStorageBehaviorConfiguration, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceStorageBehaviorConfiguration").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceStorageBehaviorConfiguration(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDeviceStorageBehaviorConfiguration")
        }
    }
}
impl IMTRDeviceStorageBehaviorConfiguration for MTRDeviceStorageBehaviorConfiguration {}
pub trait IMTRDeviceStorageBehaviorConfiguration: Sized + std::ops::Deref {
    unsafe fn disableStorageBehaviorOptimization(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, disableStorageBehaviorOptimization)
    }
    unsafe fn setDisableStorageBehaviorOptimization_(
        &self,
        disableStorageBehaviorOptimization: BOOL,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDisableStorageBehaviorOptimization : disableStorageBehaviorOptimization)
    }
    unsafe fn reportToPersistenceDelayTime(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reportToPersistenceDelayTime)
    }
    unsafe fn setReportToPersistenceDelayTime_(&self, reportToPersistenceDelayTime: NSTimeInterval)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReportToPersistenceDelayTime : reportToPersistenceDelayTime)
    }
    unsafe fn reportToPersistenceDelayTimeMax(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reportToPersistenceDelayTimeMax)
    }
    unsafe fn setReportToPersistenceDelayTimeMax_(
        &self,
        reportToPersistenceDelayTimeMax: NSTimeInterval,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReportToPersistenceDelayTimeMax : reportToPersistenceDelayTimeMax)
    }
    unsafe fn recentReportTimesMaxCount(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, recentReportTimesMaxCount)
    }
    unsafe fn setRecentReportTimesMaxCount_(&self, recentReportTimesMaxCount: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRecentReportTimesMaxCount : recentReportTimesMaxCount)
    }
    unsafe fn timeBetweenReportsTooShortThreshold(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeBetweenReportsTooShortThreshold)
    }
    unsafe fn setTimeBetweenReportsTooShortThreshold_(
        &self,
        timeBetweenReportsTooShortThreshold: NSTimeInterval,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeBetweenReportsTooShortThreshold : timeBetweenReportsTooShortThreshold)
    }
    unsafe fn timeBetweenReportsTooShortMinThreshold(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeBetweenReportsTooShortMinThreshold)
    }
    unsafe fn setTimeBetweenReportsTooShortMinThreshold_(
        &self,
        timeBetweenReportsTooShortMinThreshold: NSTimeInterval,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeBetweenReportsTooShortMinThreshold : timeBetweenReportsTooShortMinThreshold)
    }
    unsafe fn reportToPersistenceDelayMaxMultiplier(&self) -> f64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reportToPersistenceDelayMaxMultiplier)
    }
    unsafe fn setReportToPersistenceDelayMaxMultiplier_(
        &self,
        reportToPersistenceDelayMaxMultiplier: f64,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReportToPersistenceDelayMaxMultiplier : reportToPersistenceDelayMaxMultiplier)
    }
    unsafe fn deviceReportingExcessivelyIntervalThreshold(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deviceReportingExcessivelyIntervalThreshold)
    }
    unsafe fn setDeviceReportingExcessivelyIntervalThreshold_(
        &self,
        deviceReportingExcessivelyIntervalThreshold: NSTimeInterval,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDeviceReportingExcessivelyIntervalThreshold : deviceReportingExcessivelyIntervalThreshold)
    }
    unsafe fn configurationWithDefaultStorageBehavior() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceStorageBehaviorConfiguration").unwrap(), configurationWithDefaultStorageBehavior)
    }
    unsafe fn configurationWithStorageBehaviorOptimizationDisabled() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceStorageBehaviorConfiguration").unwrap(), configurationWithStorageBehaviorOptimizationDisabled)
    }
    unsafe fn configurationWithReportToPersistenceDelayTime_reportToPersistenceDelayTimeMax_recentReportTimesMaxCount_timeBetweenReportsTooShortThreshold_timeBetweenReportsTooShortMinThreshold_reportToPersistenceDelayMaxMultiplier_deviceReportingExcessivelyIntervalThreshold_(
        reportToPersistenceDelayTime: NSTimeInterval,
        reportToPersistenceDelayTimeMax: NSTimeInterval,
        recentReportTimesMaxCount: NSUInteger,
        timeBetweenReportsTooShortThreshold: NSTimeInterval,
        timeBetweenReportsTooShortMinThreshold: NSTimeInterval,
        reportToPersistenceDelayMaxMultiplier: f64,
        deviceReportingExcessivelyIntervalThreshold: NSTimeInterval,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceStorageBehaviorConfiguration").unwrap(), configurationWithReportToPersistenceDelayTime : reportToPersistenceDelayTime, reportToPersistenceDelayTimeMax : reportToPersistenceDelayTimeMax, recentReportTimesMaxCount : recentReportTimesMaxCount, timeBetweenReportsTooShortThreshold : timeBetweenReportsTooShortThreshold, timeBetweenReportsTooShortMinThreshold : timeBetweenReportsTooShortMinThreshold, reportToPersistenceDelayMaxMultiplier : reportToPersistenceDelayMaxMultiplier, deviceReportingExcessivelyIntervalThreshold : deviceReportingExcessivelyIntervalThreshold)
    }
}
pub trait PMTROTAProviderDelegate: Sized + std::ops::Deref {
    unsafe fn handleQueryImageForNodeID_controller_params_completion_(
        &self,
        nodeID: NSNumber,
        controller: MTRDeviceController,
        params: MTROTASoftwareUpdateProviderClusterQueryImageParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, handleQueryImageForNodeID : nodeID, controller : controller, params : params, completion : completion)
    }
    unsafe fn handleQueryImageForNodeID_controller_params_completionHandler_(
        &self,
        nodeID: NSNumber,
        controller: MTRDeviceController,
        params: MTROtaSoftwareUpdateProviderClusterQueryImageParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, handleQueryImageForNodeID : nodeID, controller : controller, params : params, completionHandler : completionHandler)
    }
    unsafe fn handleApplyUpdateRequestForNodeID_controller_params_completion_(
        &self,
        nodeID: NSNumber,
        controller: MTRDeviceController,
        params: MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, handleApplyUpdateRequestForNodeID : nodeID, controller : controller, params : params, completion : completion)
    }
    unsafe fn handleApplyUpdateRequestForNodeID_controller_params_completionHandler_(
        &self,
        nodeID: NSNumber,
        controller: MTRDeviceController,
        params: MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, handleApplyUpdateRequestForNodeID : nodeID, controller : controller, params : params, completionHandler : completionHandler)
    }
    unsafe fn handleNotifyUpdateAppliedForNodeID_controller_params_completion_(
        &self,
        nodeID: NSNumber,
        controller: MTRDeviceController,
        params: MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, handleNotifyUpdateAppliedForNodeID : nodeID, controller : controller, params : params, completion : completion)
    }
    unsafe fn handleNotifyUpdateAppliedForNodeID_controller_params_completionHandler_(
        &self,
        nodeID: NSNumber,
        controller: MTRDeviceController,
        params: MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams,
        completionHandler: StatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, handleNotifyUpdateAppliedForNodeID : nodeID, controller : controller, params : params, completionHandler : completionHandler)
    }
    unsafe fn handleBDXTransferSessionBeginForNodeID_controller_fileDesignator_offset_completion_(
        &self,
        nodeID: NSNumber,
        controller: MTRDeviceController,
        fileDesignator: NSString,
        offset: NSNumber,
        completion: MTRStatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, handleBDXTransferSessionBeginForNodeID : nodeID, controller : controller, fileDesignator : fileDesignator, offset : offset, completion : completion)
    }
    unsafe fn handleBDXTransferSessionBeginForNodeID_controller_fileDesignator_offset_completionHandler_(
        &self,
        nodeID: NSNumber,
        controller: MTRDeviceController,
        fileDesignator: NSString,
        offset: NSNumber,
        completionHandler: StatusCompletion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, handleBDXTransferSessionBeginForNodeID : nodeID, controller : controller, fileDesignator : fileDesignator, offset : offset, completionHandler : completionHandler)
    }
    unsafe fn handleBDXTransferSessionEndForNodeID_controller_metrics_error_(
        &self,
        nodeID: NSNumber,
        controller: MTRDeviceController,
        metrics: MTRMetrics,
        error: NSError,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, handleBDXTransferSessionEndForNodeID : nodeID, controller : controller, metrics : metrics, error : error)
    }
    unsafe fn handleBDXTransferSessionEndForNodeID_controller_error_(
        &self,
        nodeID: NSNumber,
        controller: MTRDeviceController,
        error: NSError,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, handleBDXTransferSessionEndForNodeID : nodeID, controller : controller, error : error)
    }
    unsafe fn handleBDXQueryForNodeID_controller_blockSize_blockIndex_bytesToSkip_completion_(
        &self,
        nodeID: NSNumber,
        controller: MTRDeviceController,
        blockSize: NSNumber,
        blockIndex: NSNumber,
        bytesToSkip: NSNumber,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, handleBDXQueryForNodeID : nodeID, controller : controller, blockSize : blockSize, blockIndex : blockIndex, bytesToSkip : bytesToSkip, completion : completion)
    }
    unsafe fn handleBDXQueryForNodeID_controller_blockSize_blockIndex_bytesToSkip_completionHandler_(
        &self,
        nodeID: NSNumber,
        controller: MTRDeviceController,
        blockSize: NSNumber,
        blockIndex: NSNumber,
        bytesToSkip: NSNumber,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, handleBDXQueryForNodeID : nodeID, controller : controller, blockSize : blockSize, blockIndex : blockIndex, bytesToSkip : bytesToSkip, completionHandler : completionHandler)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceControllerAbstractParameters(pub id);
impl std::ops::Deref for MTRDeviceControllerAbstractParameters {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceControllerAbstractParameters {}
impl MTRDeviceControllerAbstractParameters {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceControllerAbstractParameters").unwrap(), alloc) })
    }
}
impl INSObject for MTRDeviceControllerAbstractParameters {}
impl PNSObject for MTRDeviceControllerAbstractParameters {}
impl std::convert::TryFrom<NSObject> for MTRDeviceControllerAbstractParameters {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDeviceControllerAbstractParameters, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceControllerAbstractParameters").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceControllerAbstractParameters(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDeviceControllerAbstractParameters")
        }
    }
}
impl IMTRDeviceControllerAbstractParameters for MTRDeviceControllerAbstractParameters {}
pub trait IMTRDeviceControllerAbstractParameters: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn startSuspended(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startSuspended)
    }
    unsafe fn setStartSuspended_(&self, startSuspended: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartSuspended : startSuspended)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceControllerAbstractParameters").unwrap(), new)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceControllerParameters(pub id);
impl std::ops::Deref for MTRDeviceControllerParameters {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceControllerParameters {}
impl MTRDeviceControllerParameters {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceControllerParameters").unwrap(), alloc) })
    }
}
impl IMTRDeviceControllerAbstractParameters for MTRDeviceControllerParameters {}
impl From<MTRDeviceControllerParameters> for MTRDeviceControllerAbstractParameters {
    fn from(child: MTRDeviceControllerParameters) -> MTRDeviceControllerAbstractParameters {
        MTRDeviceControllerAbstractParameters(child.0)
    }
}
impl std::convert::TryFrom<MTRDeviceControllerAbstractParameters>
    for MTRDeviceControllerParameters
{
    type Error = &'static str;
    fn try_from(
        parent: MTRDeviceControllerAbstractParameters,
    ) -> Result<MTRDeviceControllerParameters, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceControllerParameters").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceControllerParameters(parent.0))
        } else {
            Err ("This MTRDeviceControllerAbstractParameters cannot be downcasted to MTRDeviceControllerParameters" ,)
        }
    }
}
impl INSObject for MTRDeviceControllerParameters {}
impl PNSObject for MTRDeviceControllerParameters {}
impl IMTRDeviceControllerParameters for MTRDeviceControllerParameters {}
pub trait IMTRDeviceControllerParameters: Sized + std::ops::Deref {
    unsafe fn setOperationalCertificateIssuer_queue_(
        &self,
        operationalCertificateIssuer: *mut u64,
        queue: NSObject,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationalCertificateIssuer : operationalCertificateIssuer, queue : queue)
    }
    unsafe fn setOTAProviderDelegate_queue_(&self, otaProviderDelegate: *mut u64, queue: NSObject)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOTAProviderDelegate : otaProviderDelegate, queue : queue)
    }
    unsafe fn productAttestationAuthorityCertificates(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, productAttestationAuthorityCertificates)
    }
    unsafe fn setProductAttestationAuthorityCertificates_(
        &self,
        productAttestationAuthorityCertificates: NSArray,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProductAttestationAuthorityCertificates : productAttestationAuthorityCertificates)
    }
    unsafe fn certificationDeclarationCertificates(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, certificationDeclarationCertificates)
    }
    unsafe fn setCertificationDeclarationCertificates_(
        &self,
        certificationDeclarationCertificates: NSArray,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCertificationDeclarationCertificates : certificationDeclarationCertificates)
    }
    unsafe fn shouldAdvertiseOperational(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shouldAdvertiseOperational)
    }
    unsafe fn setShouldAdvertiseOperational_(&self, shouldAdvertiseOperational: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setShouldAdvertiseOperational : shouldAdvertiseOperational)
    }
    unsafe fn concurrentSubscriptionEstablishmentsAllowedOnThread(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, concurrentSubscriptionEstablishmentsAllowedOnThread)
    }
    unsafe fn setConcurrentSubscriptionEstablishmentsAllowedOnThread_(
        &self,
        concurrentSubscriptionEstablishmentsAllowedOnThread: NSUInteger,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setConcurrentSubscriptionEstablishmentsAllowedOnThread : concurrentSubscriptionEstablishmentsAllowedOnThread)
    }
    unsafe fn storageBehaviorConfiguration(&self) -> MTRDeviceStorageBehaviorConfiguration
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, storageBehaviorConfiguration)
    }
    unsafe fn setStorageBehaviorConfiguration_(
        &self,
        storageBehaviorConfiguration: MTRDeviceStorageBehaviorConfiguration,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStorageBehaviorConfiguration : storageBehaviorConfiguration)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceControllerExternalCertificateParameters(pub id);
impl std::ops::Deref for MTRDeviceControllerExternalCertificateParameters {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceControllerExternalCertificateParameters {}
impl MTRDeviceControllerExternalCertificateParameters {
    pub fn alloc() -> Self {
        Self(unsafe {
            msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceControllerExternalCertificateParameters").unwrap(), alloc)
        })
    }
}
impl IMTRDeviceControllerParameters for MTRDeviceControllerExternalCertificateParameters {}
impl From<MTRDeviceControllerExternalCertificateParameters> for MTRDeviceControllerParameters {
    fn from(
        child: MTRDeviceControllerExternalCertificateParameters,
    ) -> MTRDeviceControllerParameters {
        MTRDeviceControllerParameters(child.0)
    }
}
impl std::convert::TryFrom<MTRDeviceControllerParameters>
    for MTRDeviceControllerExternalCertificateParameters
{
    type Error = &'static str;
    fn try_from(
        parent: MTRDeviceControllerParameters,
    ) -> Result<MTRDeviceControllerExternalCertificateParameters, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceControllerExternalCertificateParameters").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceControllerExternalCertificateParameters(parent.0))
        } else {
            Err ("This MTRDeviceControllerParameters cannot be downcasted to MTRDeviceControllerExternalCertificateParameters" ,)
        }
    }
}
impl IMTRDeviceControllerAbstractParameters for MTRDeviceControllerExternalCertificateParameters {}
impl INSObject for MTRDeviceControllerExternalCertificateParameters {}
impl PNSObject for MTRDeviceControllerExternalCertificateParameters {}
impl IMTRDeviceControllerExternalCertificateParameters
    for MTRDeviceControllerExternalCertificateParameters
{
}
pub trait IMTRDeviceControllerExternalCertificateParameters: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithStorageDelegate_storageDelegateQueue_uniqueIdentifier_ipk_vendorID_operationalKeypair_operationalCertificate_intermediateCertificate_rootCertificate_(
        &self,
        storageDelegate: *mut u64,
        storageDelegateQueue: NSObject,
        uniqueIdentifier: NSUUID,
        ipk: NSData,
        vendorID: NSNumber,
        operationalKeypair: *mut u64,
        operationalCertificate: NSData,
        intermediateCertificate: NSData,
        rootCertificate: NSData,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithStorageDelegate : storageDelegate, storageDelegateQueue : storageDelegateQueue, uniqueIdentifier : uniqueIdentifier, ipk : ipk, vendorID : vendorID, operationalKeypair : operationalKeypair, operationalCertificate : operationalCertificate, intermediateCertificate : intermediateCertificate, rootCertificate : rootCertificate)
    }
    unsafe fn rootCertificate(&self) -> MTRCertificateDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rootCertificate)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceControllerExternalCertificateParameters").unwrap(), new)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRXPCDeviceControllerParameters(pub id);
impl std::ops::Deref for MTRXPCDeviceControllerParameters {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRXPCDeviceControllerParameters {}
impl MTRXPCDeviceControllerParameters {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRXPCDeviceControllerParameters").unwrap(), alloc) })
    }
}
impl IMTRDeviceControllerAbstractParameters for MTRXPCDeviceControllerParameters {}
impl std::convert::TryFrom<MTRDeviceControllerAbstractParameters>
    for MTRXPCDeviceControllerParameters
{
    type Error = &'static str;
    fn try_from(
        parent: MTRDeviceControllerAbstractParameters,
    ) -> Result<MTRXPCDeviceControllerParameters, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRXPCDeviceControllerParameters").unwrap())
        };
        if is_kind_of {
            Ok(MTRXPCDeviceControllerParameters(parent.0))
        } else {
            Err ("This MTRDeviceControllerAbstractParameters cannot be downcasted to MTRXPCDeviceControllerParameters" ,)
        }
    }
}
impl INSObject for MTRXPCDeviceControllerParameters {}
impl PNSObject for MTRXPCDeviceControllerParameters {}
impl IMTRXPCDeviceControllerParameters for MTRXPCDeviceControllerParameters {}
pub trait IMTRXPCDeviceControllerParameters: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithXPCConnectionBlock_uniqueIdentifier_(
        &self,
        xpcConnectionBlock: *mut ::std::os::raw::c_void,
        uniqueIdentifier: NSUUID,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithXPCConnectionBlock : xpcConnectionBlock, uniqueIdentifier : uniqueIdentifier)
    }
    unsafe fn initWithXPConnectionBlock_uniqueIdentifier_(
        &self,
        xpcConnectionBlock: *mut ::std::os::raw::c_void,
        uniqueIdentifier: NSUUID,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithXPConnectionBlock : xpcConnectionBlock, uniqueIdentifier : uniqueIdentifier)
    }
    unsafe fn uniqueIdentifier(&self) -> NSUUID
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, uniqueIdentifier)
    }
    unsafe fn xpcConnectionBlock(&self) -> *mut ::std::os::raw::c_void
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, xpcConnectionBlock)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRXPCDeviceControllerParameters").unwrap(), new)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceControllerStartupParams(pub id);
impl std::ops::Deref for MTRDeviceControllerStartupParams {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceControllerStartupParams {}
impl MTRDeviceControllerStartupParams {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceControllerStartupParams").unwrap(), alloc) })
    }
}
impl INSObject for MTRDeviceControllerStartupParams {}
impl PNSObject for MTRDeviceControllerStartupParams {}
impl std::convert::TryFrom<NSObject> for MTRDeviceControllerStartupParams {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDeviceControllerStartupParams, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceControllerStartupParams").unwrap())
        };
        if is_kind_of {
            Ok(MTRDeviceControllerStartupParams(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDeviceControllerStartupParams")
        }
    }
}
impl IMTRDeviceControllerStartupParams for MTRDeviceControllerStartupParams {}
pub trait IMTRDeviceControllerStartupParams: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithIPK_fabricID_nocSigner_(
        &self,
        ipk: NSData,
        fabricID: NSNumber,
        nocSigner: *mut u64,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithIPK : ipk, fabricID : fabricID, nocSigner : nocSigner)
    }
    unsafe fn initWithIPK_operationalKeypair_operationalCertificate_intermediateCertificate_rootCertificate_(
        &self,
        ipk: NSData,
        operationalKeypair: *mut u64,
        operationalCertificate: NSData,
        intermediateCertificate: NSData,
        rootCertificate: NSData,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithIPK : ipk, operationalKeypair : operationalKeypair, operationalCertificate : operationalCertificate, intermediateCertificate : intermediateCertificate, rootCertificate : rootCertificate)
    }
    unsafe fn nocSigner(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nocSigner)
    }
    unsafe fn fabricID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricID)
    }
    unsafe fn ipk(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ipk)
    }
    unsafe fn vendorID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vendorID)
    }
    unsafe fn setVendorID_(&self, vendorID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVendorID : vendorID)
    }
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn setNodeID_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeID : nodeID)
    }
    unsafe fn caseAuthenticatedTags(&self) -> NSSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, caseAuthenticatedTags)
    }
    unsafe fn setCaseAuthenticatedTags_(&self, caseAuthenticatedTags: NSSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCaseAuthenticatedTags : caseAuthenticatedTags)
    }
    unsafe fn rootCertificate(&self) -> MTRCertificateDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rootCertificate)
    }
    unsafe fn setRootCertificate_(&self, rootCertificate: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRootCertificate : rootCertificate)
    }
    unsafe fn intermediateCertificate(&self) -> MTRCertificateDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, intermediateCertificate)
    }
    unsafe fn setIntermediateCertificate_(&self, intermediateCertificate: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIntermediateCertificate : intermediateCertificate)
    }
    unsafe fn operationalCertificate(&self) -> MTRCertificateDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationalCertificate)
    }
    unsafe fn operationalKeypair(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationalKeypair)
    }
    unsafe fn setOperationalKeypair_(&self, operationalKeypair: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationalKeypair : operationalKeypair)
    }
    unsafe fn operationalCertificateIssuer(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationalCertificateIssuer)
    }
    unsafe fn setOperationalCertificateIssuer_(&self, operationalCertificateIssuer: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationalCertificateIssuer : operationalCertificateIssuer)
    }
    unsafe fn operationalCertificateIssuerQueue(&self) -> dispatch_queue_t
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationalCertificateIssuerQueue)
    }
    unsafe fn setOperationalCertificateIssuerQueue_(
        &self,
        operationalCertificateIssuerQueue: NSObject,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationalCertificateIssuerQueue : operationalCertificateIssuerQueue)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceControllerStartupParams").unwrap(), new)
    }
}
impl MTRDeviceControllerStartupParams_Deprecated for MTRDeviceControllerStartupParams {}
pub trait MTRDeviceControllerStartupParams_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithSigningKeypair_fabricId_ipk_(
        &self,
        nocSigner: *mut u64,
        fabricId: u64,
        ipk: NSData,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithSigningKeypair : nocSigner, fabricId : fabricId, ipk : ipk)
    }
    unsafe fn initWithOperationalKeypair_operationalCertificate_intermediateCertificate_rootCertificate_ipk_(
        &self,
        operationalKeypair: *mut u64,
        operationalCertificate: NSData,
        intermediateCertificate: NSData,
        rootCertificate: NSData,
        ipk: NSData,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithOperationalKeypair : operationalKeypair, operationalCertificate : operationalCertificate, intermediateCertificate : intermediateCertificate, rootCertificate : rootCertificate, ipk : ipk)
    }
    unsafe fn fabricId(&self) -> u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricId)
    }
    unsafe fn vendorId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vendorId)
    }
    unsafe fn setVendorId_(&self, vendorId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVendorId : vendorId)
    }
    unsafe fn nodeId(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeId)
    }
    unsafe fn setNodeId_(&self, nodeId: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNodeId : nodeId)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceType(pub id);
impl std::ops::Deref for MTRDeviceType {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceType {}
impl MTRDeviceType {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceType").unwrap(), alloc) })
    }
}
impl INSObject for MTRDeviceType {}
impl PNSObject for MTRDeviceType {}
impl std::convert::TryFrom<NSObject> for MTRDeviceType {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDeviceType, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceType").unwrap()) };
        if is_kind_of {
            Ok(MTRDeviceType(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDeviceType")
        }
    }
}
impl IMTRDeviceType for MTRDeviceType {}
pub trait IMTRDeviceType: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn id(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, id)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn isUtility(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isUtility)
    }
    unsafe fn deviceTypeForID_(deviceTypeID: NSNumber) -> MTRDeviceType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceType").unwrap(), deviceTypeForID : deviceTypeID)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceType").unwrap(), new)
    }
}
impl MTRDeviceType_ for MTRDeviceType {}
pub trait MTRDeviceType_: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRDeviceTypeRevision(pub id);
impl std::ops::Deref for MTRDeviceTypeRevision {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRDeviceTypeRevision {}
impl MTRDeviceTypeRevision {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceTypeRevision").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRDeviceTypeRevision {}
impl INSObject for MTRDeviceTypeRevision {}
impl PNSObject for MTRDeviceTypeRevision {}
impl std::convert::TryFrom<NSObject> for MTRDeviceTypeRevision {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRDeviceTypeRevision, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRDeviceTypeRevision").unwrap()) };
        if is_kind_of {
            Ok(MTRDeviceTypeRevision(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRDeviceTypeRevision")
        }
    }
}
impl IMTRDeviceTypeRevision for MTRDeviceTypeRevision {}
pub trait IMTRDeviceTypeRevision: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithDeviceTypeID_revision_(
        &self,
        deviceTypeID: NSNumber,
        revision: NSNumber,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDeviceTypeID : deviceTypeID, revision : revision)
    }
    unsafe fn initWithDeviceTypeStruct_(
        &self,
        deviceTypeStruct: MTRDescriptorClusterDeviceTypeStruct,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDeviceTypeStruct : deviceTypeStruct)
    }
    unsafe fn deviceTypeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deviceTypeID)
    }
    unsafe fn deviceTypeRevision(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deviceTypeRevision)
    }
    unsafe fn typeInformation(&self) -> MTRDeviceType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, typeInformation)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRDeviceTypeRevision").unwrap(), new)
    }
}
impl MTRDeviceTypeRevision_ for MTRDeviceTypeRevision {}
pub trait MTRDeviceTypeRevision_: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTREndpointInfo(pub id);
impl std::ops::Deref for MTREndpointInfo {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTREndpointInfo {}
impl MTREndpointInfo {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTREndpointInfo").unwrap(), alloc) })
    }
}
impl PNSCopying for MTREndpointInfo {}
impl PNSSecureCoding for MTREndpointInfo {}
impl INSObject for MTREndpointInfo {}
impl PNSObject for MTREndpointInfo {}
impl std::convert::TryFrom<NSObject> for MTREndpointInfo {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTREndpointInfo, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTREndpointInfo").unwrap()) };
        if is_kind_of {
            Ok(MTREndpointInfo(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTREndpointInfo")
        }
    }
}
impl IMTREndpointInfo for MTREndpointInfo {}
pub trait IMTREndpointInfo: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn endpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpointID)
    }
    unsafe fn deviceTypes(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deviceTypes)
    }
    unsafe fn partsList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, partsList)
    }
    unsafe fn children(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, children)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTREndpointInfo").unwrap(), new)
    }
}
pub type MTRErrorCode = NSInteger;
pub type MTRInteractionErrorCode = NSInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRFabricInfo(pub id);
impl std::ops::Deref for MTRFabricInfo {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRFabricInfo {}
impl MTRFabricInfo {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRFabricInfo").unwrap(), alloc) })
    }
}
impl INSObject for MTRFabricInfo {}
impl PNSObject for MTRFabricInfo {}
impl std::convert::TryFrom<NSObject> for MTRFabricInfo {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRFabricInfo, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRFabricInfo").unwrap()) };
        if is_kind_of {
            Ok(MTRFabricInfo(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRFabricInfo")
        }
    }
}
impl IMTRFabricInfo for MTRFabricInfo {}
pub trait IMTRFabricInfo: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn rootPublicKey(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rootPublicKey)
    }
    unsafe fn vendorID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vendorID)
    }
    unsafe fn fabricID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricID)
    }
    unsafe fn nodeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nodeID)
    }
    unsafe fn label(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, label)
    }
    unsafe fn rootCertificate(&self) -> MTRCertificateDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rootCertificate)
    }
    unsafe fn rootCertificateTLV(&self) -> MTRCertificateTLVBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rootCertificateTLV)
    }
    unsafe fn intermediateCertificate(&self) -> MTRCertificateDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, intermediateCertificate)
    }
    unsafe fn intermediateCertificateTLV(&self) -> MTRCertificateTLVBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, intermediateCertificateTLV)
    }
    unsafe fn operationalCertificate(&self) -> MTRCertificateDERBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationalCertificate)
    }
    unsafe fn operationalCertificateTLV(&self) -> MTRCertificateTLVBytes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationalCertificateTLV)
    }
    unsafe fn fabricIndex(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fabricIndex)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRFabricInfo").unwrap(), new)
    }
}
pub trait PMTRKeypair: Sized + std::ops::Deref {
    unsafe fn copyPublicKey(&self) -> SecKeyRef
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, copyPublicKey)
    }
    unsafe fn publicKey(&self) -> SecKeyRef
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, publicKey)
    }
    unsafe fn signMessageECDSA_RAW_(&self, message: NSData) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, signMessageECDSA_RAW : message)
    }
    unsafe fn signMessageECDSA_DER_(&self, message: NSData) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, signMessageECDSA_DER : message)
    }
}
pub type MTRLogType = NSInteger;
pub type MTRLogCallback = *mut ::std::os::raw::c_void;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRManualSetupPayloadParser(pub id);
impl std::ops::Deref for MTRManualSetupPayloadParser {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRManualSetupPayloadParser {}
impl MTRManualSetupPayloadParser {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRManualSetupPayloadParser").unwrap(), alloc) })
    }
}
impl INSObject for MTRManualSetupPayloadParser {}
impl PNSObject for MTRManualSetupPayloadParser {}
impl std::convert::TryFrom<NSObject> for MTRManualSetupPayloadParser {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRManualSetupPayloadParser, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRManualSetupPayloadParser").unwrap()) };
        if is_kind_of {
            Ok(MTRManualSetupPayloadParser(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRManualSetupPayloadParser")
        }
    }
}
impl IMTRManualSetupPayloadParser for MTRManualSetupPayloadParser {}
pub trait IMTRManualSetupPayloadParser: Sized + std::ops::Deref {
    unsafe fn initWithDecimalStringRepresentation_(
        &self,
        decimalStringRepresentation: NSString,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDecimalStringRepresentation : decimalStringRepresentation)
    }
    unsafe fn populatePayload_(&self, error: *mut NSError) -> MTRSetupPayload
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, populatePayload : error)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRNetworkInterfaceInfo(pub id);
impl std::ops::Deref for MTRNetworkInterfaceInfo {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRNetworkInterfaceInfo {}
impl MTRNetworkInterfaceInfo {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRNetworkInterfaceInfo").unwrap(), alloc) })
    }
}
impl PNSCopying for MTRNetworkInterfaceInfo {}
impl PNSSecureCoding for MTRNetworkInterfaceInfo {}
impl INSObject for MTRNetworkInterfaceInfo {}
impl PNSObject for MTRNetworkInterfaceInfo {}
impl std::convert::TryFrom<NSObject> for MTRNetworkInterfaceInfo {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRNetworkInterfaceInfo, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRNetworkInterfaceInfo").unwrap()) };
        if is_kind_of {
            Ok(MTRNetworkInterfaceInfo(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRNetworkInterfaceInfo")
        }
    }
}
impl IMTRNetworkInterfaceInfo for MTRNetworkInterfaceInfo {}
pub trait IMTRNetworkInterfaceInfo: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn endpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpointID)
    }
    unsafe fn featureMap(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, featureMap)
    }
    unsafe fn type_(&self) -> MTRNetworkCommissioningFeature
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, type)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRNetworkInterfaceInfo").unwrap(), new)
    }
}
pub type MTROTAImageDigestType = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROTAHeader(pub id);
impl std::ops::Deref for MTROTAHeader {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROTAHeader {}
impl MTROTAHeader {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROTAHeader").unwrap(), alloc) })
    }
}
impl INSObject for MTROTAHeader {}
impl PNSObject for MTROTAHeader {}
impl std::convert::TryFrom<NSObject> for MTROTAHeader {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTROTAHeader, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROTAHeader").unwrap()) };
        if is_kind_of {
            Ok(MTROTAHeader(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTROTAHeader")
        }
    }
}
impl IMTROTAHeader for MTROTAHeader {}
pub trait IMTROTAHeader: Sized + std::ops::Deref {
    unsafe fn initWithData_(&self, data: NSData) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithData : data)
    }
    unsafe fn vendorID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vendorID)
    }
    unsafe fn setVendorID_(&self, vendorID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVendorID : vendorID)
    }
    unsafe fn productID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, productID)
    }
    unsafe fn setProductID_(&self, productID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProductID : productID)
    }
    unsafe fn payloadSize(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, payloadSize)
    }
    unsafe fn setPayloadSize_(&self, payloadSize: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPayloadSize : payloadSize)
    }
    unsafe fn softwareVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, softwareVersion)
    }
    unsafe fn setSoftwareVersion_(&self, softwareVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSoftwareVersion : softwareVersion)
    }
    unsafe fn softwareVersionString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, softwareVersionString)
    }
    unsafe fn setSoftwareVersionString_(&self, softwareVersionString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSoftwareVersionString : softwareVersionString)
    }
    unsafe fn releaseNotesURL(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, releaseNotesURL)
    }
    unsafe fn setReleaseNotesURL_(&self, releaseNotesURL: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReleaseNotesURL : releaseNotesURL)
    }
    unsafe fn imageDigest(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, imageDigest)
    }
    unsafe fn setImageDigest_(&self, imageDigest: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setImageDigest : imageDigest)
    }
    unsafe fn imageDigestType(&self) -> MTROTAImageDigestType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, imageDigestType)
    }
    unsafe fn setImageDigestType_(&self, imageDigestType: MTROTAImageDigestType)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setImageDigestType : imageDigestType)
    }
    unsafe fn minApplicableVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minApplicableVersion)
    }
    unsafe fn setMinApplicableVersion_(&self, minApplicableVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinApplicableVersion : minApplicableVersion)
    }
    unsafe fn maxApplicableVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxApplicableVersion)
    }
    unsafe fn setMaxApplicableVersion_(&self, maxApplicableVersion: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxApplicableVersion : maxApplicableVersion)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROTAHeaderParser(pub id);
impl std::ops::Deref for MTROTAHeaderParser {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROTAHeaderParser {}
impl MTROTAHeaderParser {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROTAHeaderParser").unwrap(), alloc) })
    }
}
impl INSObject for MTROTAHeaderParser {}
impl PNSObject for MTROTAHeaderParser {}
impl std::convert::TryFrom<NSObject> for MTROTAHeaderParser {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTROTAHeaderParser, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROTAHeaderParser").unwrap()) };
        if is_kind_of {
            Ok(MTROTAHeaderParser(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTROTAHeaderParser")
        }
    }
}
impl IMTROTAHeaderParser for MTROTAHeaderParser {}
pub trait IMTROTAHeaderParser: Sized + std::ops::Deref {
    unsafe fn headerFromData_error_(data: NSData, error: *mut NSError) -> MTROTAHeader
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTROTAHeaderParser").unwrap(), headerFromData : data, error : error)
    }
}
pub type MTROnboardingPayloadType = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROnboardingPayloadParser(pub id);
impl std::ops::Deref for MTROnboardingPayloadParser {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROnboardingPayloadParser {}
impl MTROnboardingPayloadParser {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROnboardingPayloadParser").unwrap(), alloc) })
    }
}
impl INSObject for MTROnboardingPayloadParser {}
impl PNSObject for MTROnboardingPayloadParser {}
impl std::convert::TryFrom<NSObject> for MTROnboardingPayloadParser {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTROnboardingPayloadParser, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROnboardingPayloadParser").unwrap()) };
        if is_kind_of {
            Ok(MTROnboardingPayloadParser(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTROnboardingPayloadParser")
        }
    }
}
impl IMTROnboardingPayloadParser for MTROnboardingPayloadParser {}
pub trait IMTROnboardingPayloadParser: Sized + std::ops::Deref {
    unsafe fn setupPayloadForOnboardingPayload_error_(
        onboardingPayload: NSString,
        error: *mut NSError,
    ) -> MTRSetupPayload
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTROnboardingPayloadParser").unwrap(), setupPayloadForOnboardingPayload : onboardingPayload, error : error)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRProductIdentity(pub id);
impl std::ops::Deref for MTRProductIdentity {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRProductIdentity {}
impl MTRProductIdentity {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRProductIdentity").unwrap(), alloc) })
    }
}
impl INSObject for MTRProductIdentity {}
impl PNSObject for MTRProductIdentity {}
impl std::convert::TryFrom<NSObject> for MTRProductIdentity {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRProductIdentity, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRProductIdentity").unwrap()) };
        if is_kind_of {
            Ok(MTRProductIdentity(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRProductIdentity")
        }
    }
}
impl IMTRProductIdentity for MTRProductIdentity {}
pub trait IMTRProductIdentity: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithVendorID_productID_(
        &self,
        vendorID: NSNumber,
        productID: NSNumber,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithVendorID : vendorID, productID : productID)
    }
    unsafe fn vendorID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vendorID)
    }
    unsafe fn productID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, productID)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRProductIdentity").unwrap(), new)
    }
}
impl MTRProductIdentity_ for MTRProductIdentity {}
pub trait MTRProductIdentity_: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRQRCodeSetupPayloadParser(pub id);
impl std::ops::Deref for MTRQRCodeSetupPayloadParser {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRQRCodeSetupPayloadParser {}
impl MTRQRCodeSetupPayloadParser {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRQRCodeSetupPayloadParser").unwrap(), alloc) })
    }
}
impl INSObject for MTRQRCodeSetupPayloadParser {}
impl PNSObject for MTRQRCodeSetupPayloadParser {}
impl std::convert::TryFrom<NSObject> for MTRQRCodeSetupPayloadParser {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRQRCodeSetupPayloadParser, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRQRCodeSetupPayloadParser").unwrap()) };
        if is_kind_of {
            Ok(MTRQRCodeSetupPayloadParser(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRQRCodeSetupPayloadParser")
        }
    }
}
impl IMTRQRCodeSetupPayloadParser for MTRQRCodeSetupPayloadParser {}
pub trait IMTRQRCodeSetupPayloadParser: Sized + std::ops::Deref {
    unsafe fn initWithBase38Representation_(&self, base38Representation: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithBase38Representation : base38Representation)
    }
    unsafe fn populatePayload_(&self, error: *mut NSError) -> MTRSetupPayload
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, populatePayload : error)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRServerAttribute(pub id);
impl std::ops::Deref for MTRServerAttribute {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRServerAttribute {}
impl MTRServerAttribute {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRServerAttribute").unwrap(), alloc) })
    }
}
impl INSObject for MTRServerAttribute {}
impl PNSObject for MTRServerAttribute {}
impl std::convert::TryFrom<NSObject> for MTRServerAttribute {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRServerAttribute, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRServerAttribute").unwrap()) };
        if is_kind_of {
            Ok(MTRServerAttribute(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRServerAttribute")
        }
    }
}
impl IMTRServerAttribute for MTRServerAttribute {}
pub trait IMTRServerAttribute: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initReadonlyAttributeWithID_initialValue_requiredPrivilege_(
        &self,
        attributeID: NSNumber,
        value: NSDictionary,
        requiredPrivilege: MTRAccessControlEntryPrivilege,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initReadonlyAttributeWithID : attributeID, initialValue : value, requiredPrivilege : requiredPrivilege)
    }
    unsafe fn setValue_(&self, value: NSDictionary) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value)
    }
    unsafe fn attributeID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attributeID)
    }
    unsafe fn value(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn requiredReadPrivilege(&self) -> MTRAccessControlEntryPrivilege
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requiredReadPrivilege)
    }
    unsafe fn isWritable(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isWritable)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRServerAttribute").unwrap(), new)
    }
    unsafe fn newFeatureMapAttributeWithInitialValue_(value: NSNumber) -> MTRServerAttribute
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRServerAttribute").unwrap(), newFeatureMapAttributeWithInitialValue : value)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRServerCluster(pub id);
impl std::ops::Deref for MTRServerCluster {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRServerCluster {}
impl MTRServerCluster {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRServerCluster").unwrap(), alloc) })
    }
}
impl INSObject for MTRServerCluster {}
impl PNSObject for MTRServerCluster {}
impl std::convert::TryFrom<NSObject> for MTRServerCluster {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRServerCluster, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRServerCluster").unwrap()) };
        if is_kind_of {
            Ok(MTRServerCluster(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRServerCluster")
        }
    }
}
impl IMTRServerCluster for MTRServerCluster {}
pub trait IMTRServerCluster: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithClusterID_revision_(
        &self,
        clusterID: NSNumber,
        revision: NSNumber,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithClusterID : clusterID, revision : revision)
    }
    unsafe fn addAccessGrant_(&self, accessGrant: MTRAccessGrant)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addAccessGrant : accessGrant)
    }
    unsafe fn removeAccessGrant_(&self, accessGrant: MTRAccessGrant)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeAccessGrant : accessGrant)
    }
    unsafe fn addAttribute_(&self, attribute: MTRServerAttribute) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addAttribute : attribute)
    }
    unsafe fn clusterID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, clusterID)
    }
    unsafe fn clusterRevision(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, clusterRevision)
    }
    unsafe fn accessGrants(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, accessGrants)
    }
    unsafe fn attributes(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attributes)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRServerCluster").unwrap(), new)
    }
    unsafe fn newDescriptorCluster() -> MTRServerCluster
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRServerCluster").unwrap(), newDescriptorCluster)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRServerEndpoint(pub id);
impl std::ops::Deref for MTRServerEndpoint {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRServerEndpoint {}
impl MTRServerEndpoint {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRServerEndpoint").unwrap(), alloc) })
    }
}
impl INSObject for MTRServerEndpoint {}
impl PNSObject for MTRServerEndpoint {}
impl std::convert::TryFrom<NSObject> for MTRServerEndpoint {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRServerEndpoint, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRServerEndpoint").unwrap()) };
        if is_kind_of {
            Ok(MTRServerEndpoint(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRServerEndpoint")
        }
    }
}
impl IMTRServerEndpoint for MTRServerEndpoint {}
pub trait IMTRServerEndpoint: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithEndpointID_deviceTypes_(
        &self,
        endpointID: NSNumber,
        deviceTypes: NSArray,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithEndpointID : endpointID, deviceTypes : deviceTypes)
    }
    unsafe fn addAccessGrant_(&self, accessGrant: MTRAccessGrant)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addAccessGrant : accessGrant)
    }
    unsafe fn removeAccessGrant_(&self, accessGrant: MTRAccessGrant)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeAccessGrant : accessGrant)
    }
    unsafe fn addServerCluster_(&self, serverCluster: MTRServerCluster) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addServerCluster : serverCluster)
    }
    unsafe fn endpointID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpointID)
    }
    unsafe fn deviceTypes(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deviceTypes)
    }
    unsafe fn accessGrants(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, accessGrants)
    }
    unsafe fn serverClusters(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverClusters)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRServerEndpoint").unwrap(), new)
    }
}
pub type MTRDiscoveryCapabilities = NSUInteger;
pub type MTRCommissioningFlow = NSUInteger;
pub type MTROptionalQRCodeInfoType = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTROptionalQRCodeInfo(pub id);
impl std::ops::Deref for MTROptionalQRCodeInfo {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTROptionalQRCodeInfo {}
impl MTROptionalQRCodeInfo {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTROptionalQRCodeInfo").unwrap(), alloc) })
    }
}
impl INSObject for MTROptionalQRCodeInfo {}
impl PNSObject for MTROptionalQRCodeInfo {}
impl std::convert::TryFrom<NSObject> for MTROptionalQRCodeInfo {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTROptionalQRCodeInfo, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTROptionalQRCodeInfo").unwrap()) };
        if is_kind_of {
            Ok(MTROptionalQRCodeInfo(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTROptionalQRCodeInfo")
        }
    }
}
impl IMTROptionalQRCodeInfo for MTROptionalQRCodeInfo {}
pub trait IMTROptionalQRCodeInfo: Sized + std::ops::Deref {
    unsafe fn initWithTag_stringValue_(&self, tag: NSNumber, value: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithTag : tag, stringValue : value)
    }
    unsafe fn initWithTag_int32Value_(&self, tag: NSNumber, value: i32) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithTag : tag, int32Value : value)
    }
    unsafe fn type_(&self) -> MTROptionalQRCodeInfoType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, type)
    }
    unsafe fn tag(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tag)
    }
    unsafe fn integerValue(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, integerValue)
    }
    unsafe fn stringValue(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stringValue)
    }
}
impl MTROptionalQRCodeInfo_ for MTROptionalQRCodeInfo {}
pub trait MTROptionalQRCodeInfo_: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRSetupPayload(pub id);
impl std::ops::Deref for MTRSetupPayload {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRSetupPayload {}
impl MTRSetupPayload {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSetupPayload").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for MTRSetupPayload {}
impl INSObject for MTRSetupPayload {}
impl PNSObject for MTRSetupPayload {}
impl std::convert::TryFrom<NSObject> for MTRSetupPayload {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRSetupPayload, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRSetupPayload").unwrap()) };
        if is_kind_of {
            Ok(MTRSetupPayload(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRSetupPayload")
        }
    }
}
impl IMTRSetupPayload for MTRSetupPayload {}
pub trait IMTRSetupPayload: Sized + std::ops::Deref {
    unsafe fn initWithPayload_(&self, payload: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithPayload : payload)
    }
    unsafe fn vendorElementWithTag_(&self, tag: NSNumber) -> MTROptionalQRCodeInfo
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, vendorElementWithTag : tag)
    }
    unsafe fn removeVendorElementWithTag_(&self, tag: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeVendorElementWithTag : tag)
    }
    unsafe fn addOrReplaceVendorElement_(&self, element: MTROptionalQRCodeInfo)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addOrReplaceVendorElement : element)
    }
    unsafe fn initWithSetupPasscode_discriminator_(
        &self,
        setupPasscode: NSNumber,
        discriminator: NSNumber,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithSetupPasscode : setupPasscode, discriminator : discriminator)
    }
    unsafe fn manualEntryCode(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, manualEntryCode)
    }
    unsafe fn qrCodeString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, qrCodeString)
    }
    unsafe fn isConcatenated(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isConcatenated)
    }
    unsafe fn subPayloads(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, subPayloads)
    }
    unsafe fn setSubPayloads_(&self, subPayloads: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSubPayloads : subPayloads)
    }
    unsafe fn version(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, version)
    }
    unsafe fn setVersion_(&self, version: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVersion : version)
    }
    unsafe fn vendorID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vendorID)
    }
    unsafe fn setVendorID_(&self, vendorID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVendorID : vendorID)
    }
    unsafe fn productID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, productID)
    }
    unsafe fn setProductID_(&self, productID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProductID : productID)
    }
    unsafe fn commissioningFlow(&self) -> MTRCommissioningFlow
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, commissioningFlow)
    }
    unsafe fn setCommissioningFlow_(&self, commissioningFlow: MTRCommissioningFlow)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCommissioningFlow : commissioningFlow)
    }
    unsafe fn discoveryCapabilities(&self) -> MTRDiscoveryCapabilities
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, discoveryCapabilities)
    }
    unsafe fn setDiscoveryCapabilities_(&self, discoveryCapabilities: MTRDiscoveryCapabilities)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDiscoveryCapabilities : discoveryCapabilities)
    }
    unsafe fn discriminator(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, discriminator)
    }
    unsafe fn setDiscriminator_(&self, discriminator: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDiscriminator : discriminator)
    }
    unsafe fn hasShortDiscriminator(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hasShortDiscriminator)
    }
    unsafe fn setHasShortDiscriminator_(&self, hasShortDiscriminator: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHasShortDiscriminator : hasShortDiscriminator)
    }
    unsafe fn setupPasscode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, setupPasscode)
    }
    unsafe fn setSetupPasscode_(&self, setupPasscode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSetupPasscode : setupPasscode)
    }
    unsafe fn serialNumber(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serialNumber)
    }
    unsafe fn setSerialNumber_(&self, serialNumber: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSerialNumber : serialNumber)
    }
    unsafe fn vendorElements(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, vendorElements)
    }
    unsafe fn generateRandomPIN() -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSetupPayload").unwrap(), generateRandomPIN)
    }
    unsafe fn generateRandomSetupPasscode() -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSetupPayload").unwrap(), generateRandomSetupPasscode)
    }
    unsafe fn isValidSetupPasscode_(setupPasscode: NSNumber) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSetupPayload").unwrap(), isValidSetupPasscode : setupPasscode)
    }
}
impl MTRSetupPayload_ for MTRSetupPayload {}
pub trait MTRSetupPayload_: Sized + std::ops::Deref {}
impl MTROptionalQRCodeInfo_Deprecated for MTROptionalQRCodeInfo {}
pub trait MTROptionalQRCodeInfo_Deprecated: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn setType_(&self, type_: MTROptionalQRCodeInfoType)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setType : type_)
    }
    unsafe fn setTag_(&self, tag: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTag : tag)
    }
    unsafe fn setIntegerValue_(&self, integerValue: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIntegerValue : integerValue)
    }
    unsafe fn setStringValue_(&self, stringValue: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStringValue : stringValue)
    }
    unsafe fn infoType(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, infoType)
    }
    unsafe fn setInfoType_(&self, infoType: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInfoType : infoType)
    }
}
impl MTRSetupPayload_Deprecated for MTRSetupPayload {}
pub trait MTRSetupPayload_Deprecated: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn qrCodeString_(&self, error: *mut NSError) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, qrCodeString : error)
    }
    unsafe fn getAllOptionalVendorData_(&self, error: *mut NSError) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getAllOptionalVendorData : error)
    }
    unsafe fn rendezvousInformation(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rendezvousInformation)
    }
    unsafe fn setRendezvousInformation_(&self, rendezvousInformation: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRendezvousInformation : rendezvousInformation)
    }
    unsafe fn setUpPINCode(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, setUpPINCode)
    }
    unsafe fn setSetUpPINCode_(&self, setUpPINCode: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSetUpPINCode : setUpPINCode)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSetupPayload").unwrap(), new)
    }
    unsafe fn setupPayloadWithOnboardingPayload_error_(
        onboardingPayload: NSString,
        error: *mut NSError,
    ) -> MTRSetupPayload
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRSetupPayload").unwrap(), setupPayloadWithOnboardingPayload : onboardingPayload, error : error)
    }
}
pub trait PMTRStorage: Sized + std::ops::Deref {
    unsafe fn storageDataForKey_(&self, key: NSString) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, storageDataForKey : key)
    }
    unsafe fn setStorageData_forKey_(&self, value: NSData, key: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStorageData : value, forKey : key)
    }
    unsafe fn removeStorageDataForKey_(&self, key: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeStorageDataForKey : key)
    }
}
pub trait PMTRPersistentStorageDelegate: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct MTRThreadOperationalDataset(pub id);
impl std::ops::Deref for MTRThreadOperationalDataset {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for MTRThreadOperationalDataset {}
impl MTRThreadOperationalDataset {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThreadOperationalDataset").unwrap(), alloc) })
    }
}
impl INSObject for MTRThreadOperationalDataset {}
impl PNSObject for MTRThreadOperationalDataset {}
impl std::convert::TryFrom<NSObject> for MTRThreadOperationalDataset {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<MTRThreadOperationalDataset, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"MTRThreadOperationalDataset").unwrap()) };
        if is_kind_of {
            Ok(MTRThreadOperationalDataset(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to MTRThreadOperationalDataset")
        }
    }
}
impl IMTRThreadOperationalDataset for MTRThreadOperationalDataset {}
pub trait IMTRThreadOperationalDataset: Sized + std::ops::Deref {
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithNetworkName_extendedPANID_masterKey_PSKc_channelNumber_panID_(
        &self,
        networkName: NSString,
        extendedPANID: NSData,
        masterKey: NSData,
        PSKc: NSData,
        channelNumber: NSNumber,
        panID: NSData,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithNetworkName : networkName, extendedPANID : extendedPANID, masterKey : masterKey, PSKc : PSKc, channelNumber : channelNumber, panID : panID)
    }
    unsafe fn initWithData_(&self, data: NSData) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithData : data)
    }
    unsafe fn data(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn networkName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkName)
    }
    unsafe fn extendedPANID(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, extendedPANID)
    }
    unsafe fn masterKey(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, masterKey)
    }
    unsafe fn PSKc(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, PSKc)
    }
    unsafe fn channelNumber(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, channelNumber)
    }
    unsafe fn panID(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, panID)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"MTRThreadOperationalDataset").unwrap(), new)
    }
}
impl MTRThreadOperationalDataset_Deprecated for MTRThreadOperationalDataset {}
pub trait MTRThreadOperationalDataset_Deprecated: Sized + std::ops::Deref {
    unsafe fn initWithNetworkName_extendedPANID_masterKey_PSKc_channel_panID_(
        &self,
        networkName: NSString,
        extendedPANID: NSData,
        masterKey: NSData,
        PSKc: NSData,
        channel: u16,
        panID: NSData,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithNetworkName : networkName, extendedPANID : extendedPANID, masterKey : masterKey, PSKc : PSKc, channel : channel, panID : panID)
    }
    unsafe fn channel(&self) -> u16
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, channel)
    }
    unsafe fn setChannel_(&self, channel: u16)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChannel : channel)
    }
}
pub trait PMTRXPCClientProtocol_MTRDevice: Sized + std::ops::Deref {
    unsafe fn device_stateChanged_(&self, nodeID: NSNumber, state: MTRDeviceState)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, device : nodeID, stateChanged : state)
    }
    unsafe fn device_receivedAttributeReport_(&self, nodeID: NSNumber, attributeReport: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, device : nodeID, receivedAttributeReport : attributeReport)
    }
    unsafe fn device_receivedEventReport_(&self, nodeID: NSNumber, eventReport: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, device : nodeID, receivedEventReport : eventReport)
    }
    unsafe fn deviceBecameActive_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceBecameActive : nodeID)
    }
    unsafe fn deviceCachePrimed_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceCachePrimed : nodeID)
    }
    unsafe fn deviceConfigurationChanged_(&self, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceConfigurationChanged : nodeID)
    }
    unsafe fn device_internalStateUpdated_(&self, nodeID: NSNumber, dictionary: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, device : nodeID, internalStateUpdated : dictionary)
    }
}
pub trait PMTRXPCClientProtocol_MTRDeviceController: Sized + std::ops::Deref {
    unsafe fn controller_controllerConfigurationUpdated_(
        &self,
        controller: NSUUID,
        configuration: NSDictionary,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, controller : controller, controllerConfigurationUpdated : configuration)
    }
}
pub trait PMTRXPCClientProtocol: Sized + std::ops::Deref {}
pub trait PMTRXPCServerProtocol_MTRDevice: Sized + std::ops::Deref {
    unsafe fn deviceController_nodeID_getStateWithReply_(
        &self,
        controller: NSUUID,
        nodeID: NSNumber,
        reply: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceController : controller, nodeID : nodeID, getStateWithReply : reply)
    }
    unsafe fn deviceController_nodeID_getDeviceCachePrimedWithReply_(
        &self,
        controller: NSUUID,
        nodeID: NSNumber,
        reply: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceController : controller, nodeID : nodeID, getDeviceCachePrimedWithReply : reply)
    }
    unsafe fn deviceController_nodeID_getEstimatedStartTimeWithReply_(
        &self,
        controller: NSUUID,
        nodeID: NSNumber,
        reply: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceController : controller, nodeID : nodeID, getEstimatedStartTimeWithReply : reply)
    }
    unsafe fn deviceController_nodeID_getEstimatedSubscriptionLatencyWithReply_(
        &self,
        controller: NSUUID,
        nodeID: NSNumber,
        reply: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceController : controller, nodeID : nodeID, getEstimatedSubscriptionLatencyWithReply : reply)
    }
    unsafe fn deviceController_nodeID_readAttributeWithEndpointID_clusterID_attributeID_params_withReply_(
        &self,
        controller: NSUUID,
        nodeID: NSNumber,
        endpointID: NSNumber,
        clusterID: NSNumber,
        attributeID: NSNumber,
        params: MTRReadParams,
        reply: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceController : controller, nodeID : nodeID, readAttributeWithEndpointID : endpointID, clusterID : clusterID, attributeID : attributeID, params : params, withReply : reply)
    }
    unsafe fn deviceController_nodeID_writeAttributeWithEndpointID_clusterID_attributeID_value_expectedValueInterval_timedWriteTimeout_(
        &self,
        controller: NSUUID,
        nodeID: NSNumber,
        endpointID: NSNumber,
        clusterID: NSNumber,
        attributeID: NSNumber,
        value: id,
        expectedValueInterval: NSNumber,
        timeout: NSNumber,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceController : controller, nodeID : nodeID, writeAttributeWithEndpointID : endpointID, clusterID : clusterID, attributeID : attributeID, value : value, expectedValueInterval : expectedValueInterval, timedWriteTimeout : timeout)
    }
    unsafe fn deviceController_nodeID_readAttributePaths_withReply_(
        &self,
        controller: NSUUID,
        nodeID: NSNumber,
        attributePaths: NSArray,
        reply: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceController : controller, nodeID : nodeID, readAttributePaths : attributePaths, withReply : reply)
    }
    unsafe fn deviceController_nodeID_invokeCommandWithEndpointID_clusterID_commandID_commandFields_expectedValues_expectedValueInterval_timedInvokeTimeout_serverSideProcessingTimeout_completion_(
        &self,
        controller: NSUUID,
        nodeID: NSNumber,
        endpointID: NSNumber,
        clusterID: NSNumber,
        commandID: NSNumber,
        commandFields: id,
        expectedValues: NSArray,
        expectedValueInterval: NSNumber,
        timeout: NSNumber,
        serverSideProcessingTimeout: NSNumber,
        completion: MTRDeviceResponseHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceController : controller, nodeID : nodeID, invokeCommandWithEndpointID : endpointID, clusterID : clusterID, commandID : commandID, commandFields : commandFields, expectedValues : expectedValues, expectedValueInterval : expectedValueInterval, timedInvokeTimeout : timeout, serverSideProcessingTimeout : serverSideProcessingTimeout, completion : completion)
    }
    unsafe fn deviceController_nodeID_openCommissioningWindowWithSetupPasscode_discriminator_duration_completion_(
        &self,
        controller: NSUUID,
        nodeID: NSNumber,
        setupPasscode: NSNumber,
        discriminator: NSNumber,
        duration: NSNumber,
        completion: MTRDeviceOpenCommissioningWindowHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceController : controller, nodeID : nodeID, openCommissioningWindowWithSetupPasscode : setupPasscode, discriminator : discriminator, duration : duration, completion : completion)
    }
    unsafe fn downloadLogOfType_nodeID_timeout_completion_(
        &self,
        type_: MTRDiagnosticLogType,
        nodeID: NSNumber,
        timeout: NSTimeInterval,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, downloadLogOfType : type_, nodeID : nodeID, timeout : timeout, completion : completion)
    }
    unsafe fn deviceController_nodeID_downloadLogOfType_timeout_completion_(
        &self,
        controller: NSUUID,
        nodeID: NSNumber,
        type_: MTRDiagnosticLogType,
        timeout: NSTimeInterval,
        completion: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceController : controller, nodeID : nodeID, downloadLogOfType : type_, timeout : timeout, completion : completion)
    }
    unsafe fn deviceController_nodeID_invokeCommands_completion_(
        &self,
        controller: NSUUID,
        nodeID: NSNumber,
        commands: NSArray,
        completion: MTRDeviceResponseHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceController : controller, nodeID : nodeID, invokeCommands : commands, completion : completion)
    }
}
pub trait PMTRXPCServerProtocol_MTRDeviceController: Sized + std::ops::Deref {
    unsafe fn deviceController_deleteNodeID_(&self, controller: NSUUID, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceController : controller, deleteNodeID : nodeID)
    }
    unsafe fn deviceController_registerNodeID_(&self, controller: NSUUID, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceController : controller, registerNodeID : nodeID)
    }
    unsafe fn deviceController_unregisterNodeID_(&self, controller: NSUUID, nodeID: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceController : controller, unregisterNodeID : nodeID)
    }
    unsafe fn deviceController_updateControllerConfiguration_(
        &self,
        controller: NSUUID,
        controllerState: NSDictionary,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceController : controller, updateControllerConfiguration : controllerState)
    }
    unsafe fn deviceController_getNodesWithStoredDataWithReply_(
        &self,
        controller: NSUUID,
        reply: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceController : controller, getNodesWithStoredDataWithReply : reply)
    }
}
pub trait PMTRXPCServerProtocol: Sized + std::ops::Deref {
    unsafe fn deviceController_checkInWithContext_(&self, controller: NSUUID, context: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deviceController : controller, checkInWithContext : context)
    }
}
unsafe extern "C" {
    pub static MTRAttributePathKey: NSString;
}
unsafe extern "C" {
    pub static MTRCommandPathKey: NSString;
}
unsafe extern "C" {
    pub static MTREventPathKey: NSString;
}
unsafe extern "C" {
    pub static MTRDataKey: NSString;
}
unsafe extern "C" {
    pub static MTRErrorKey: NSString;
}
unsafe extern "C" {
    pub static MTRTypeKey: NSString;
}
unsafe extern "C" {
    pub static MTRValueKey: NSString;
}
unsafe extern "C" {
    pub static MTRContextTagKey: NSString;
}
unsafe extern "C" {
    pub static MTRSignedIntegerValueType: NSString;
}
unsafe extern "C" {
    pub static MTRUnsignedIntegerValueType: NSString;
}
unsafe extern "C" {
    pub static MTRBooleanValueType: NSString;
}
unsafe extern "C" {
    pub static MTRUTF8StringValueType: NSString;
}
unsafe extern "C" {
    pub static MTROctetStringValueType: NSString;
}
unsafe extern "C" {
    pub static MTRFloatValueType: NSString;
}
unsafe extern "C" {
    pub static MTRDoubleValueType: NSString;
}
unsafe extern "C" {
    pub static MTRNullValueType: NSString;
}
unsafe extern "C" {
    pub static MTRStructureValueType: NSString;
}
unsafe extern "C" {
    pub static MTRArrayValueType: NSString;
}
unsafe extern "C" {
    pub static MTREventNumberKey: NSString;
}
unsafe extern "C" {
    pub static MTREventPriorityKey: NSString;
}
unsafe extern "C" {
    pub static MTREventTimeTypeKey: NSString;
}
unsafe extern "C" {
    pub static MTREventSystemUpTimeKey: NSString;
}
unsafe extern "C" {
    pub static MTREventTimestampDateKey: NSString;
}
unsafe extern "C" {
    pub static MTREventIsHistoricalKey: NSString;
}
unsafe extern "C" {
    pub static MTRPreviousDataKey: NSString;
}
unsafe extern "C" {
    pub static MTRDataVersionKey: NSString;
}
unsafe extern "C" {
    pub fn MTRClusterNameForID(clusterID: MTRClusterIDType) -> NSString;
}
unsafe extern "C" {
    pub fn MTRAttributeNameForID(
        clusterID: MTRClusterIDType,
        attributeID: MTRAttributeIDType,
    ) -> NSString;
}
unsafe extern "C" {
    pub fn MTRRequestCommandNameForID(
        clusterID: MTRClusterIDType,
        commandID: MTRCommandIDType,
    ) -> NSString;
}
unsafe extern "C" {
    pub fn MTRResponseCommandNameForID(
        clusterID: MTRClusterIDType,
        commandID: MTRCommandIDType,
    ) -> NSString;
}
unsafe extern "C" {
    pub fn MTREventNameForID(clusterID: MTRClusterIDType, eventID: MTREventIDType) -> NSString;
}
unsafe extern "C" {
    pub fn MTRSetMessageReliabilityParameters(
        idleRetransmitMs: NSNumber,
        activeRetransmitMs: NSNumber,
        activeThresholdMs: NSNumber,
        additionalRetransmitDelayMs: NSNumber,
    );
}
unsafe extern "C" {
    pub fn MTRDeviceControllerStorageClasses() -> NSSet;
}
unsafe extern "C" {
    pub static MTRErrorDomain: NSErrorDomain;
}
unsafe extern "C" {
    pub static MTRInteractionErrorDomain: NSErrorDomain;
}
unsafe extern "C" {
    pub fn MTRSetLogCallback(logTypeThreshold: MTRLogType, callback: MTRLogCallback);
}
unsafe extern "C" {
    pub static MTRSizeThreadNetworkName: usize;
}
unsafe extern "C" {
    pub static MTRSizeThreadExtendedPanId: usize;
}
unsafe extern "C" {
    pub static MTRSizeThreadExtendedPANID: usize;
}
unsafe extern "C" {
    pub static MTRSizeThreadMasterKey: usize;
}
unsafe extern "C" {
    pub static MTRSizeThreadPSKc: usize;
}
unsafe extern "C" {
    pub static MTRSizeThreadPANID: usize;
}
unsafe extern "C" {
    pub static MTRDeviceControllerRegistrationNodeIDsKey: NSString;
}
unsafe extern "C" {
    pub static MTRDeviceControllerRegistrationNodeIDKey: NSString;
}
unsafe extern "C" {
    pub static MTRDeviceControllerRegistrationControllerContextKey: NSString;
}
unsafe extern "C" {
    pub static MTRDeviceControllerRegistrationControllerNodeIDKey: NSString;
}
unsafe extern "C" {
    pub static MTRDeviceControllerRegistrationControllerIsRunningKey: NSString;
}
unsafe extern "C" {
    pub static MTRDeviceControllerRegistrationDeviceInternalStateKey: NSString;
}
unsafe extern "C" {
    pub static MTRDeviceControllerRegistrationControllerCompressedFabricIDKey: NSString;
}

unsafe impl objc2::encode::RefEncode for MTRCluster {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCluster {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGenericBaseCluster {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGenericBaseCluster {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGenericCluster {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGenericCluster {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWriteParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWriteParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRReadParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRReadParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSubscribeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSubscribeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAttributeRequestPath {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAttributeRequestPath {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREventRequestPath {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREventRequestPath {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseDevice {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseDevice {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterPath {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterPath {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAttributePath {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAttributePath {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREventPath {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREventPath {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommandPath {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommandPath {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAttributeReport {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAttributeReport {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREventReport {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREventReport {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDataTypeCurrencyStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDataTypeCurrencyStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDataTypePriceStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDataTypePriceStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDataTypeMeasurementAccuracyRangeStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDataTypeMeasurementAccuracyRangeStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDataTypeMeasurementAccuracyStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDataTypeMeasurementAccuracyStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDataTypeAtomicAttributeStatusStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDataTypeAtomicAttributeStatusStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDataTypeICECandidateStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDataTypeICECandidateStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDataTypeICEServerStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDataTypeICEServerStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDataTypeLocationDescriptorStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDataTypeLocationDescriptorStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDataTypePowerThresholdStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDataTypePowerThresholdStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDataTypeSemanticTagStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDataTypeSemanticTagStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDataTypeTestGlobalStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDataTypeTestGlobalStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDataTypeViewportStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDataTypeViewportStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDataTypeWebRTCSessionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDataTypeWebRTCSessionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDescriptorClusterDeviceTypeStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDescriptorClusterDeviceTypeStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDescriptorClusterDeviceType {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDescriptorClusterDeviceType {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBindingClusterTargetStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBindingClusterTargetStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAccessControlClusterAccessRestrictionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAccessControlClusterAccessRestrictionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAccessControlClusterCommissioningAccessRestrictionEntryStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAccessControlClusterCommissioningAccessRestrictionEntryStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAccessControlClusterAccessRestrictionEntryStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAccessControlClusterAccessRestrictionEntryStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAccessControlClusterAccessControlTargetStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAccessControlClusterAccessControlTargetStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAccessControlClusterTarget {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAccessControlClusterTarget {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAccessControlClusterAccessControlEntryStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAccessControlClusterAccessControlEntryStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAccessControlClusterAccessControlEntry {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAccessControlClusterAccessControlEntry {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAccessControlClusterAccessControlExtensionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAccessControlClusterAccessControlExtensionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAccessControlClusterExtensionEntry {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAccessControlClusterExtensionEntry {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAccessControlClusterAccessControlEntryChangedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAccessControlClusterAccessControlEntryChangedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAccessControlClusterAccessControlExtensionChangedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAccessControlClusterAccessControlExtensionChangedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAccessControlClusterFabricRestrictionReviewUpdateEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAccessControlClusterFabricRestrictionReviewUpdateEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRActionsClusterActionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRActionsClusterActionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRActionsClusterEndpointListStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRActionsClusterEndpointListStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRActionsClusterStateChangedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRActionsClusterStateChangedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRActionsClusterActionFailedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRActionsClusterActionFailedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBasicInformationClusterCapabilityMinimaStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBasicInformationClusterCapabilityMinimaStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBasicClusterCapabilityMinimaStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBasicClusterCapabilityMinimaStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBasicInformationClusterProductAppearanceStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBasicInformationClusterProductAppearanceStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBasicInformationClusterStartUpEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBasicInformationClusterStartUpEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBasicClusterStartUpEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBasicClusterStartUpEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBasicInformationClusterShutDownEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBasicInformationClusterShutDownEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBasicClusterShutDownEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBasicClusterShutDownEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBasicInformationClusterLeaveEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBasicInformationClusterLeaveEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBasicClusterLeaveEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBasicClusterLeaveEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBasicInformationClusterReachableChangedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBasicInformationClusterReachableChangedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBasicClusterReachableChangedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBasicClusterReachableChangedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROTASoftwareUpdateRequestorClusterProviderLocation {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROTASoftwareUpdateRequestorClusterProviderLocation {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROtaSoftwareUpdateRequestorClusterProviderLocation {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROtaSoftwareUpdateRequestorClusterProviderLocation {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROTASoftwareUpdateRequestorClusterStateTransitionEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROTASoftwareUpdateRequestorClusterStateTransitionEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROtaSoftwareUpdateRequestorClusterStateTransitionEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROtaSoftwareUpdateRequestorClusterStateTransitionEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROTASoftwareUpdateRequestorClusterVersionAppliedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROtaSoftwareUpdateRequestorClusterVersionAppliedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROTASoftwareUpdateRequestorClusterDownloadErrorEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROtaSoftwareUpdateRequestorClusterDownloadErrorEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPowerSourceClusterBatChargeFaultChangeType {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPowerSourceClusterBatChargeFaultChangeType {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPowerSourceClusterBatFaultChangeType {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPowerSourceClusterBatFaultChangeType {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPowerSourceClusterWiredFaultChangeType {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPowerSourceClusterWiredFaultChangeType {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPowerSourceClusterWiredFaultChangeEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPowerSourceClusterWiredFaultChangeEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPowerSourceClusterBatFaultChangeEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPowerSourceClusterBatFaultChangeEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPowerSourceClusterBatChargeFaultChangeEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPowerSourceClusterBatChargeFaultChangeEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGeneralCommissioningClusterBasicCommissioningInfo {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGeneralCommissioningClusterBasicCommissioningInfo {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRNetworkCommissioningClusterNetworkInfoStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRNetworkCommissioningClusterNetworkInfoStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRNetworkCommissioningClusterNetworkInfo {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRNetworkCommissioningClusterNetworkInfo {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRNetworkCommissioningClusterThreadInterfaceScanResultStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRNetworkCommissioningClusterThreadInterfaceScanResult {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRNetworkCommissioningClusterThreadInterfaceScanResult {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRNetworkCommissioningClusterWiFiInterfaceScanResultStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRNetworkCommissioningClusterWiFiInterfaceScanResult {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRNetworkCommissioningClusterWiFiInterfaceScanResult {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGeneralDiagnosticsClusterNetworkInterface {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGeneralDiagnosticsClusterNetworkInterface {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGeneralDiagnosticsClusterNetworkInterfaceType {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGeneralDiagnosticsClusterNetworkInterfaceType {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGeneralDiagnosticsClusterHardwareFaultChangeEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGeneralDiagnosticsClusterHardwareFaultChangeEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGeneralDiagnosticsClusterRadioFaultChangeEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGeneralDiagnosticsClusterRadioFaultChangeEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGeneralDiagnosticsClusterNetworkFaultChangeEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGeneralDiagnosticsClusterNetworkFaultChangeEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGeneralDiagnosticsClusterBootReasonEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGeneralDiagnosticsClusterBootReasonEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSoftwareDiagnosticsClusterThreadMetricsStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSoftwareDiagnosticsClusterThreadMetricsStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSoftwareDiagnosticsClusterThreadMetrics {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSoftwareDiagnosticsClusterThreadMetrics {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSoftwareDiagnosticsClusterSoftwareFaultEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSoftwareDiagnosticsClusterSoftwareFaultEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThreadNetworkDiagnosticsClusterNeighborTableStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThreadNetworkDiagnosticsClusterNeighborTableStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThreadNetworkDiagnosticsClusterNeighborTable {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThreadNetworkDiagnosticsClusterNeighborTable {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThreadNetworkDiagnosticsClusterRouteTableStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThreadNetworkDiagnosticsClusterRouteTableStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThreadNetworkDiagnosticsClusterRouteTable {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThreadNetworkDiagnosticsClusterRouteTable {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThreadNetworkDiagnosticsClusterSecurityPolicy {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThreadNetworkDiagnosticsClusterSecurityPolicy {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThreadNetworkDiagnosticsClusterConnectionStatusEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThreadNetworkDiagnosticsClusterConnectionStatusEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThreadNetworkDiagnosticsClusterNetworkFaultChangeEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThreadNetworkDiagnosticsClusterNetworkFaultChangeEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWiFiNetworkDiagnosticsClusterDisconnectionEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWiFiNetworkDiagnosticsClusterDisconnectionEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWiFiNetworkDiagnosticsClusterAssociationFailureEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWiFiNetworkDiagnosticsClusterAssociationFailureEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWiFiNetworkDiagnosticsClusterConnectionStatusEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWiFiNetworkDiagnosticsClusterConnectionStatusEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimeSynchronizationClusterDSTOffsetStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimeSynchronizationClusterDSTOffsetStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimeSynchronizationClusterDstOffsetType {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimeSynchronizationClusterDstOffsetType {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimeSynchronizationClusterTimeZoneStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimeSynchronizationClusterTimeZoneStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimeSynchronizationClusterTimeZoneType {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimeSynchronizationClusterTimeZoneType {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimeSynchronizationClusterTrustedTimeSourceStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimeSynchronizationClusterTrustedTimeSourceStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimeSynchronizationClusterDSTTableEmptyEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimeSynchronizationClusterDSTTableEmptyEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimeSynchronizationClusterDSTStatusEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimeSynchronizationClusterDSTStatusEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimeSynchronizationClusterTimeZoneStatusEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimeSynchronizationClusterTimeZoneStatusEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimeSynchronizationClusterTimeFailureEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimeSynchronizationClusterTimeFailureEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimeSynchronizationClusterMissingTrustedTimeSourceEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimeSynchronizationClusterMissingTrustedTimeSourceEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBridgedDeviceBasicInformationClusterProductAppearanceStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBridgedDeviceBasicInformationClusterProductAppearanceStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBridgedDeviceBasicInformationClusterStartUpEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBridgedDeviceBasicInformationClusterStartUpEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBridgedDeviceBasicClusterStartUpEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBridgedDeviceBasicClusterStartUpEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBridgedDeviceBasicInformationClusterShutDownEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBridgedDeviceBasicInformationClusterShutDownEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBridgedDeviceBasicClusterShutDownEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBridgedDeviceBasicClusterShutDownEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBridgedDeviceBasicInformationClusterLeaveEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBridgedDeviceBasicInformationClusterLeaveEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBridgedDeviceBasicClusterLeaveEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBridgedDeviceBasicClusterLeaveEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBridgedDeviceBasicInformationClusterReachableChangedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBridgedDeviceBasicInformationClusterReachableChangedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBridgedDeviceBasicClusterReachableChangedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBridgedDeviceBasicClusterReachableChangedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBridgedDeviceBasicInformationClusterActiveChangedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBridgedDeviceBasicInformationClusterActiveChangedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSwitchClusterSwitchLatchedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSwitchClusterSwitchLatchedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSwitchClusterInitialPressEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSwitchClusterInitialPressEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSwitchClusterLongPressEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSwitchClusterLongPressEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSwitchClusterShortReleaseEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSwitchClusterShortReleaseEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSwitchClusterLongReleaseEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSwitchClusterLongReleaseEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSwitchClusterMultiPressOngoingEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSwitchClusterMultiPressOngoingEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSwitchClusterMultiPressCompleteEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSwitchClusterMultiPressCompleteEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalCredentialsClusterFabricDescriptorStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalCredentialsClusterFabricDescriptorStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalCredentialsClusterFabricDescriptor {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalCredentialsClusterFabricDescriptor {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalCredentialsClusterNOCStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalCredentialsClusterNOCStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupKeyManagementClusterGroupInfoMapStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupKeyManagementClusterGroupInfoMapStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupKeyManagementClusterGroupKeyMapStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupKeyManagementClusterGroupKeyMapStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupKeyManagementClusterGroupKeySetStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupKeyManagementClusterGroupKeySetStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRFixedLabelClusterLabelStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRFixedLabelClusterLabelStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUserLabelClusterLabelStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUserLabelClusterLabelStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBooleanStateClusterStateChangeEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBooleanStateClusterStateChangeEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRICDManagementClusterMonitoringRegistrationStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRICDManagementClusterMonitoringRegistrationStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROvenCavityOperationalStateClusterErrorStateStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROvenCavityOperationalStateClusterErrorStateStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROvenCavityOperationalStateClusterOperationalStateStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROvenCavityOperationalStateClusterOperationalStateStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROvenCavityOperationalStateClusterOperationalErrorEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROvenCavityOperationalStateClusterOperationalErrorEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROvenCavityOperationalStateClusterOperationCompletionEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROvenCavityOperationalStateClusterOperationCompletionEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROvenModeClusterModeTagStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROvenModeClusterModeTagStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROvenModeClusterModeOptionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROvenModeClusterModeOptionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRModeSelectClusterSemanticTagStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRModeSelectClusterSemanticTagStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRModeSelectClusterSemanticTag {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRModeSelectClusterSemanticTag {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRModeSelectClusterModeOptionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRModeSelectClusterModeOptionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRLaundryWasherModeClusterModeTagStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRLaundryWasherModeClusterModeTagStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRLaundryWasherModeClusterModeOptionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRLaundryWasherModeClusterModeOptionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeTagStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeTagStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeOptionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterModeOptionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRRVCRunModeClusterModeTagStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRRVCRunModeClusterModeTagStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRRVCRunModeClusterModeOptionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRRVCRunModeClusterModeOptionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRRVCCleanModeClusterModeTagStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRRVCCleanModeClusterModeTagStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRRVCCleanModeClusterModeOptionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRRVCCleanModeClusterModeOptionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRRefrigeratorAlarmClusterNotifyEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRRefrigeratorAlarmClusterNotifyEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDishwasherModeClusterModeTagStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDishwasherModeClusterModeTagStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDishwasherModeClusterModeOptionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDishwasherModeClusterModeOptionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSmokeCOAlarmClusterSmokeAlarmEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSmokeCOAlarmClusterSmokeAlarmEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSmokeCOAlarmClusterCOAlarmEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSmokeCOAlarmClusterCOAlarmEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSmokeCOAlarmClusterLowBatteryEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSmokeCOAlarmClusterLowBatteryEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSmokeCOAlarmClusterHardwareFaultEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSmokeCOAlarmClusterHardwareFaultEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSmokeCOAlarmClusterEndOfServiceEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSmokeCOAlarmClusterEndOfServiceEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSmokeCOAlarmClusterSelfTestCompleteEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSmokeCOAlarmClusterSelfTestCompleteEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSmokeCOAlarmClusterAlarmMutedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSmokeCOAlarmClusterAlarmMutedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSmokeCOAlarmClusterMuteEndedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSmokeCOAlarmClusterMuteEndedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSmokeCOAlarmClusterInterconnectSmokeAlarmEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSmokeCOAlarmClusterInterconnectSmokeAlarmEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSmokeCOAlarmClusterInterconnectCOAlarmEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSmokeCOAlarmClusterInterconnectCOAlarmEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSmokeCOAlarmClusterAllClearEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSmokeCOAlarmClusterAllClearEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDishwasherAlarmClusterNotifyEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDishwasherAlarmClusterNotifyEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMicrowaveOvenModeClusterModeTagStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMicrowaveOvenModeClusterModeTagStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMicrowaveOvenModeClusterModeOptionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMicrowaveOvenModeClusterModeOptionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalStateClusterErrorStateStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalStateClusterErrorStateStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalStateClusterOperationalStateStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalStateClusterOperationalStateStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalStateClusterOperationalErrorEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalStateClusterOperationalErrorEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalStateClusterOperationCompletionEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalStateClusterOperationCompletionEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRRVCOperationalStateClusterErrorStateStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRRVCOperationalStateClusterErrorStateStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRRVCOperationalStateClusterOperationalStateStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRRVCOperationalStateClusterOperationalStateStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRRVCOperationalStateClusterOperationalErrorEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRRVCOperationalStateClusterOperationalErrorEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRRVCOperationalStateClusterOperationCompletionEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRRVCOperationalStateClusterOperationCompletionEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRScenesManagementClusterAttributeValuePairStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRScenesManagementClusterAttributeValuePairStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRScenesManagementClusterExtensionFieldSetStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRScenesManagementClusterExtensionFieldSetStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRScenesManagementClusterSceneInfoStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRScenesManagementClusterSceneInfoStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupcastClusterMembershipStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupcastClusterMembershipStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRHEPAFilterMonitoringClusterReplacementProductStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRHEPAFilterMonitoringClusterReplacementProductStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRActivatedCarbonFilterMonitoringClusterReplacementProductStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRActivatedCarbonFilterMonitoringClusterReplacementProductStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBooleanStateConfigurationClusterAlarmsStateChangedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBooleanStateConfigurationClusterAlarmsStateChangedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBooleanStateConfigurationClusterSensorFaultEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBooleanStateConfigurationClusterSensorFaultEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRValveConfigurationAndControlClusterValveStateChangedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRValveConfigurationAndControlClusterValveStateChangedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRValveConfigurationAndControlClusterValveFaultEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRValveConfigurationAndControlClusterValveFaultEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRElectricalPowerMeasurementClusterMeasurementAccuracyRangeStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRElectricalPowerMeasurementClusterMeasurementAccuracyRangeStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRElectricalPowerMeasurementClusterMeasurementAccuracyStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRElectricalPowerMeasurementClusterMeasurementAccuracyStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRElectricalPowerMeasurementClusterHarmonicMeasurementStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRElectricalPowerMeasurementClusterHarmonicMeasurementStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRElectricalPowerMeasurementClusterMeasurementRangeStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRElectricalPowerMeasurementClusterMeasurementRangeStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRElectricalPowerMeasurementClusterMeasurementPeriodRangesEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRElectricalPowerMeasurementClusterMeasurementPeriodRangesEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRElectricalEnergyMeasurementClusterMeasurementAccuracyRangeStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRElectricalEnergyMeasurementClusterMeasurementAccuracyRangeStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRElectricalEnergyMeasurementClusterMeasurementAccuracyStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRElectricalEnergyMeasurementClusterMeasurementAccuracyStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRElectricalEnergyMeasurementClusterCumulativeEnergyResetStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRElectricalEnergyMeasurementClusterCumulativeEnergyResetStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRElectricalEnergyMeasurementClusterEnergyMeasurementStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRElectricalEnergyMeasurementClusterCumulativeEnergyMeasuredEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRElectricalEnergyMeasurementClusterCumulativeEnergyMeasuredEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRElectricalEnergyMeasurementClusterPeriodicEnergyMeasuredEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRElectricalEnergyMeasurementClusterPeriodicEnergyMeasuredEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWaterHeaterManagementClusterWaterHeaterBoostInfoStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWaterHeaterManagementClusterBoostStartedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWaterHeaterManagementClusterBoostStartedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWaterHeaterManagementClusterBoostEndedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWaterHeaterManagementClusterBoostEndedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityPriceClusterCommodityPriceComponentStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityPriceClusterCommodityPriceComponentStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityPriceClusterCommodityPriceStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityPriceClusterCommodityPriceStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityPriceClusterPriceChangeEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityPriceClusterPriceChangeEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMessagesClusterMessageResponseOptionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMessagesClusterMessageResponseOptionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMessagesClusterMessageStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMessagesClusterMessageStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMessagesClusterMessageQueuedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMessagesClusterMessageQueuedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMessagesClusterMessagePresentedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMessagesClusterMessagePresentedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMessagesClusterMessageCompleteEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMessagesClusterMessageCompleteEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementClusterCostStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementClusterCostStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementClusterPowerAdjustStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementClusterPowerAdjustStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementClusterPowerAdjustCapabilityStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementClusterPowerAdjustCapabilityStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementClusterSlotStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementClusterSlotStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementClusterForecastStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementClusterForecastStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementClusterConstraintsStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementClusterConstraintsStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementClusterSlotAdjustmentStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementClusterSlotAdjustmentStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementClusterPowerAdjustStartEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementClusterPowerAdjustStartEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementClusterPowerAdjustEndEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementClusterPowerAdjustEndEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementClusterPausedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementClusterPausedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementClusterResumedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementClusterResumedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREnergyEVSEClusterChargingTargetStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREnergyEVSEClusterChargingTargetStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREnergyEVSEClusterChargingTargetScheduleStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREnergyEVSEClusterChargingTargetScheduleStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREnergyEVSEClusterEVConnectedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREnergyEVSEClusterEVConnectedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREnergyEVSEClusterEVNotDetectedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREnergyEVSEClusterEVNotDetectedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREnergyEVSEClusterEnergyTransferStartedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREnergyEVSEClusterEnergyTransferStartedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREnergyEVSEClusterEnergyTransferStoppedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREnergyEVSEClusterEnergyTransferStoppedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREnergyEVSEClusterFaultEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREnergyEVSEClusterFaultEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREnergyEVSEClusterRFIDEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREnergyEVSEClusterRFIDEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREnergyPreferenceClusterBalanceStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREnergyPreferenceClusterBalanceStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPowerTopologyClusterCircuitNodeStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPowerTopologyClusterCircuitNodeStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREnergyEVSEModeClusterModeTagStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREnergyEVSEModeClusterModeTagStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREnergyEVSEModeClusterModeOptionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREnergyEVSEModeClusterModeOptionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWaterHeaterModeClusterModeTagStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWaterHeaterModeClusterModeTagStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWaterHeaterModeClusterModeOptionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWaterHeaterModeClusterModeOptionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementModeClusterModeTagStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementModeClusterModeTagStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementModeClusterModeOptionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementModeClusterModeOptionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRElectricalGridConditionsClusterElectricalGridConditionsStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRElectricalGridConditionsClusterElectricalGridConditionsStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRElectricalGridConditionsClusterCurrentConditionsChangedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRElectricalGridConditionsClusterCurrentConditionsChangedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterAppleAliroCredentialStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterAppleAliroCredentialStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterCredentialStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterCredentialStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterDlCredential {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterDlCredential {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterDoorLockAlarmEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterDoorLockAlarmEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterDoorStateChangeEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterDoorStateChangeEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterLockOperationEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterLockOperationEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterLockOperationErrorEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterLockOperationErrorEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterLockUserChangeEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterLockUserChangeEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterAppleAliroLockOperationEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterAppleAliroLockOperationEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterAppleAliroLockOperationErrorEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterAppleAliroLockOperationErrorEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterAppleAliroLockUserChangeEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterAppleAliroLockUserChangeEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClosureControlClusterOverallCurrentStateStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClosureControlClusterOverallCurrentStateStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClosureControlClusterOverallTargetStateStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClosureControlClusterOverallTargetStateStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClosureControlClusterOperationalErrorEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClosureControlClusterOperationalErrorEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClosureControlClusterMovementCompletedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClosureControlClusterMovementCompletedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClosureControlClusterEngageStateChangedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClosureControlClusterEngageStateChangedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClosureControlClusterSecureStateChangedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClosureControlClusterSecureStateChangedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClosureDimensionClusterDimensionStateStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClosureDimensionClusterDimensionStateStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClosureDimensionClusterRangePercent100thsStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClosureDimensionClusterRangePercent100thsStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClosureDimensionClusterUnitRangeStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClosureDimensionClusterUnitRangeStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRServiceAreaClusterLandmarkInfoStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRServiceAreaClusterLandmarkInfoStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRServiceAreaClusterAreaInfoStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRServiceAreaClusterAreaInfoStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRServiceAreaClusterAreaStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRServiceAreaClusterAreaStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRServiceAreaClusterMapStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRServiceAreaClusterMapStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRServiceAreaClusterProgressStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRServiceAreaClusterProgressStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPumpConfigurationAndControlClusterSupplyVoltageLowEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPumpConfigurationAndControlClusterSupplyVoltageLowEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPumpConfigurationAndControlClusterSupplyVoltageHighEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPumpConfigurationAndControlClusterSupplyVoltageHighEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPumpConfigurationAndControlClusterPowerMissingPhaseEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPumpConfigurationAndControlClusterPowerMissingPhaseEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPumpConfigurationAndControlClusterSystemPressureLowEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPumpConfigurationAndControlClusterSystemPressureLowEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPumpConfigurationAndControlClusterSystemPressureHighEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPumpConfigurationAndControlClusterSystemPressureHighEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPumpConfigurationAndControlClusterDryRunningEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPumpConfigurationAndControlClusterDryRunningEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPumpConfigurationAndControlClusterMotorTemperatureHighEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPumpConfigurationAndControlClusterMotorTemperatureHighEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPumpConfigurationAndControlClusterPumpMotorFatalFailureEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPumpConfigurationAndControlClusterPumpMotorFatalFailureEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPumpConfigurationAndControlClusterElectronicTemperatureHighEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPumpConfigurationAndControlClusterElectronicTemperatureHighEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPumpConfigurationAndControlClusterPumpBlockedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPumpConfigurationAndControlClusterPumpBlockedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPumpConfigurationAndControlClusterSensorFailureEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPumpConfigurationAndControlClusterSensorFailureEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPumpConfigurationAndControlClusterElectronicNonFatalFailureEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPumpConfigurationAndControlClusterElectronicNonFatalFailureEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPumpConfigurationAndControlClusterElectronicFatalFailureEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPumpConfigurationAndControlClusterElectronicFatalFailureEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPumpConfigurationAndControlClusterGeneralFaultEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPumpConfigurationAndControlClusterGeneralFaultEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPumpConfigurationAndControlClusterLeakageEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPumpConfigurationAndControlClusterLeakageEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPumpConfigurationAndControlClusterAirDetectionEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPumpConfigurationAndControlClusterAirDetectionEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPumpConfigurationAndControlClusterTurbineOperationEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPumpConfigurationAndControlClusterTurbineOperationEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterScheduleTransitionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterScheduleTransitionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterScheduleStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterScheduleStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterPresetStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterPresetStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterPresetTypeStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterPresetTypeStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterScheduleTypeStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterScheduleTypeStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterThermostatSuggestionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterThermostatSuggestionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterWeeklyScheduleTransitionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterWeeklyScheduleTransitionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterThermostatScheduleTransition {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterThermostatScheduleTransition {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterSystemModeChangeEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterSystemModeChangeEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterLocalTemperatureChangeEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterLocalTemperatureChangeEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterOccupancyChangeEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterOccupancyChangeEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterSetpointChangeEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterSetpointChangeEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterRunningStateChangeEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterRunningStateChangeEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterRunningModeChangeEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterRunningModeChangeEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterActiveScheduleChangeEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterActiveScheduleChangeEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterActivePresetChangeEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterActivePresetChangeEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROccupancySensingClusterHoldTimeLimitsStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROccupancySensingClusterHoldTimeLimitsStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROccupancySensingClusterOccupancyChangedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROccupancySensingClusterOccupancyChangedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThreadNetworkDirectoryClusterThreadNetworkStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThreadNetworkDirectoryClusterThreadNetworkStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRChannelClusterProgramCastStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRChannelClusterProgramCastStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRChannelClusterProgramCategoryStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRChannelClusterProgramCategoryStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRChannelClusterSeriesInfoStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRChannelClusterSeriesInfoStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRChannelClusterChannelInfoStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRChannelClusterChannelInfoStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRChannelClusterChannelInfo {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRChannelClusterChannelInfo {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRChannelClusterProgramStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRChannelClusterProgramStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRChannelClusterPageTokenStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRChannelClusterPageTokenStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRChannelClusterChannelPagingStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRChannelClusterChannelPagingStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRChannelClusterAdditionalInfoStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRChannelClusterAdditionalInfoStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRChannelClusterLineupInfoStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRChannelClusterLineupInfoStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRChannelClusterLineupInfo {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRChannelClusterLineupInfo {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTargetNavigatorClusterTargetInfoStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTargetNavigatorClusterTargetInfoStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTargetNavigatorClusterTargetInfo {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTargetNavigatorClusterTargetInfo {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTargetNavigatorClusterTargetUpdatedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTargetNavigatorClusterTargetUpdatedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaPlaybackClusterTrackAttributesStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaPlaybackClusterTrackAttributesStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaPlaybackClusterTrackStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaPlaybackClusterTrackStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaPlaybackClusterPlaybackPositionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaPlaybackClusterPlaybackPositionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaPlaybackClusterPlaybackPosition {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaPlaybackClusterPlaybackPosition {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaPlaybackClusterStateChangedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaPlaybackClusterStateChangedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaInputClusterInputInfoStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaInputClusterInputInfoStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaInputClusterInputInfo {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaInputClusterInputInfo {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentLauncherClusterDimensionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentLauncherClusterDimensionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentLauncherClusterDimension {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentLauncherClusterDimension {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentLauncherClusterTrackPreferenceStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentLauncherClusterTrackPreferenceStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentLauncherClusterPlaybackPreferencesStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentLauncherClusterPlaybackPreferencesStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentLauncherClusterAdditionalInfoStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentLauncherClusterAdditionalInfoStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentLauncherClusterAdditionalInfo {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentLauncherClusterAdditionalInfo {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentLauncherClusterParameterStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentLauncherClusterParameterStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentLauncherClusterParameter {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentLauncherClusterParameter {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentLauncherClusterContentSearchStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentLauncherClusterContentSearchStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentLauncherClusterContentSearch {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentLauncherClusterContentSearch {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentLauncherClusterStyleInformationStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentLauncherClusterStyleInformationStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentLauncherClusterStyleInformation {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentLauncherClusterStyleInformation {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentLauncherClusterBrandingInformationStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentLauncherClusterBrandingInformationStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentLauncherClusterBrandingInformation {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentLauncherClusterBrandingInformation {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAudioOutputClusterOutputInfoStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAudioOutputClusterOutputInfoStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAudioOutputClusterOutputInfo {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAudioOutputClusterOutputInfo {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRApplicationLauncherClusterApplicationStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRApplicationLauncherClusterApplicationStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRApplicationLauncherClusterApplication {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRApplicationLauncherClusterApplication {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRApplicationLauncherClusterApplicationEPStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRApplicationLauncherClusterApplicationEPStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRApplicationLauncherClusterApplicationEP {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRApplicationLauncherClusterApplicationEP {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRApplicationBasicClusterApplicationStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRApplicationBasicClusterApplicationStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRApplicationBasicClusterApplicationBasicApplication {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRApplicationBasicClusterApplicationBasicApplication {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAccountLoginClusterLoggedOutEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAccountLoginClusterLoggedOutEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentControlClusterRatingNameStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentControlClusterRatingNameStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentControlClusterRemainingScreenTimeExpiredEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentControlClusterRemainingScreenTimeExpiredEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRZoneManagementClusterTwoDCartesianVertexStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRZoneManagementClusterTwoDCartesianVertexStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRZoneManagementClusterTwoDCartesianZoneStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRZoneManagementClusterTwoDCartesianZoneStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRZoneManagementClusterZoneInformationStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRZoneManagementClusterZoneInformationStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRZoneManagementClusterZoneTriggerControlStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRZoneManagementClusterZoneTriggerControlStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRZoneManagementClusterZoneTriggeredEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRZoneManagementClusterZoneTriggeredEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRZoneManagementClusterZoneStoppedEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRZoneManagementClusterZoneStoppedEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterVideoResolutionStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterVideoResolutionStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterVideoStreamStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterVideoStreamStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterSnapshotStreamStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterSnapshotStreamStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterSnapshotCapabilitiesStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterSnapshotCapabilitiesStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterRateDistortionTradeOffPointsStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterRateDistortionTradeOffPointsStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterAudioCapabilitiesStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterAudioCapabilitiesStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterAudioStreamStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterAudioStreamStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterVideoSensorParamsStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterVideoSensorParamsStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVSettingsUserLevelManagementClusterMPTZStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVSettingsUserLevelManagementClusterMPTZStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVSettingsUserLevelManagementClusterMPTZPresetStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVSettingsUserLevelManagementClusterMPTZPresetStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVSettingsUserLevelManagementClusterDPTZStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVSettingsUserLevelManagementClusterDPTZStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWebRTCTransportProviderClusterSFrameStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWebRTCTransportProviderClusterSFrameStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPushAVStreamTransportClusterTransportMotionTriggerTimeControlStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPushAVStreamTransportClusterTransportZoneOptionsStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPushAVStreamTransportClusterTransportZoneOptionsStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPushAVStreamTransportClusterTransportTriggerOptionsStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPushAVStreamTransportClusterTransportTriggerOptionsStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPushAVStreamTransportClusterCMAFContainerOptionsStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPushAVStreamTransportClusterCMAFContainerOptionsStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPushAVStreamTransportClusterContainerOptionsStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPushAVStreamTransportClusterContainerOptionsStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPushAVStreamTransportClusterTransportOptionsStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPushAVStreamTransportClusterTransportOptionsStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPushAVStreamTransportClusterTransportConfigurationStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPushAVStreamTransportClusterTransportConfigurationStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPushAVStreamTransportClusterSupportedFormatStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPushAVStreamTransportClusterSupportedFormatStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPushAVStreamTransportClusterPushTransportBeginEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPushAVStreamTransportClusterPushTransportBeginEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPushAVStreamTransportClusterPushTransportEndEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPushAVStreamTransportClusterPushTransportEndEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRChimeClusterChimeSoundStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRChimeClusterChimeSoundStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityTariffClusterPeakPeriodStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityTariffClusterPeakPeriodStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityTariffClusterAuxiliaryLoadSwitchSettingsStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityTariffClusterAuxiliaryLoadSwitchSettingsStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityTariffClusterTariffPriceStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityTariffClusterTariffPriceStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityTariffClusterTariffComponentStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityTariffClusterTariffComponentStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityTariffClusterCalendarPeriodStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityTariffClusterCalendarPeriodStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityTariffClusterDayEntryStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityTariffClusterDayEntryStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityTariffClusterDayPatternStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityTariffClusterDayPatternStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityTariffClusterDayStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityTariffClusterDayStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityTariffClusterTariffInformationStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityTariffClusterTariffInformationStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityTariffClusterTariffPeriodStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityTariffClusterTariffPeriodStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREcosystemInformationClusterDeviceTypeStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREcosystemInformationClusterDeviceTypeStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREcosystemInformationClusterEcosystemDeviceStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREcosystemInformationClusterEcosystemDeviceStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREcosystemInformationClusterEcosystemLocationStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREcosystemInformationClusterEcosystemLocationStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommissionerControlClusterCommissioningRequestResultEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommissionerControlClusterCommissioningRequestResultEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterDatastoreStatusEntryStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterDatastoreNodeKeySetEntryStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterDatastoreNodeKeySetEntryStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterDatastoreNodeInformationEntryStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterDatastoreNodeInformationEntryStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterDatastoreEndpointGroupIDEntryStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterDatastoreEndpointGroupIDEntryStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterDatastoreEndpointEntryStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterDatastoreEndpointEntryStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterDatastoreBindingTargetStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterDatastoreBindingTargetStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterDatastoreEndpointBindingEntryStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterDatastoreEndpointBindingEntryStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterDatastoreAccessControlTargetStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterDatastoreAccessControlTargetStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterDatastoreAccessControlEntryStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterDatastoreACLEntryStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterDatastoreACLEntryStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterDatastoreAdministratorInformationEntryStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterDatastoreAdministratorInformationEntryStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterDatastoreGroupInformationEntryStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterDatastoreGroupInformationEntryStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterDatastoreGroupKeySetStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSCertificateManagementClusterTLSCertStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSCertificateManagementClusterTLSCertStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSCertificateManagementClusterTLSClientCertificateDetailStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSCertificateManagementClusterTLSClientCertificateDetailStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSClientManagementClusterTLSEndpointStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSClientManagementClusterTLSEndpointStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityMeteringClusterMeteredQuantityStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityMeteringClusterMeteredQuantityStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterSimpleStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterSimpleStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterSimpleStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterSimpleStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestFabricScoped {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestFabricScoped {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestFabricScoped {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestFabricScoped {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterNullablesAndOptionalsStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterNullablesAndOptionalsStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterNullablesAndOptionalsStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterNullablesAndOptionalsStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterNestedStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterNestedStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterNestedStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterNestedStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterNestedStructList {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterNestedStructList {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterNestedStructList {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterNestedStructList {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterDoubleNestedStructList {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterDoubleNestedStructList {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterDoubleNestedStructList {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterDoubleNestedStructList {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestListStructOctet {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestListStructOctet {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestListStructOctet {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestListStructOctet {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestEventEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestEventEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestEventEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestEventEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestFabricScopedEventEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestFabricScopedEventEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestFabricScopedEventEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestFabricScopedEventEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestDifferentVendorMeiEventEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestDifferentVendorMeiEventEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSampleMEIClusterPingCountEventEvent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSampleMEIClusterPingCountEventEvent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRIdentifyClusterIdentifyParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRIdentifyClusterIdentifyParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRIdentifyClusterTriggerEffectParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRIdentifyClusterTriggerEffectParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupsClusterAddGroupParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupsClusterAddGroupParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupsClusterAddGroupResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupsClusterAddGroupResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupsClusterViewGroupParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupsClusterViewGroupParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupsClusterViewGroupResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupsClusterViewGroupResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupsClusterGetGroupMembershipParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupsClusterGetGroupMembershipParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupsClusterGetGroupMembershipResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupsClusterGetGroupMembershipResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupsClusterRemoveGroupParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupsClusterRemoveGroupParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupsClusterRemoveGroupResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupsClusterRemoveGroupResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupsClusterRemoveAllGroupsParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupsClusterRemoveAllGroupsParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupsClusterAddGroupIfIdentifyingParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupsClusterAddGroupIfIdentifyingParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROnOffClusterOffParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROnOffClusterOffParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROnOffClusterOnParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROnOffClusterOnParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROnOffClusterToggleParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROnOffClusterToggleParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROnOffClusterOffWithEffectParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROnOffClusterOffWithEffectParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROnOffClusterOnWithRecallGlobalSceneParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROnOffClusterOnWithRecallGlobalSceneParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROnOffClusterOnWithTimedOffParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROnOffClusterOnWithTimedOffParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRLevelControlClusterMoveToLevelParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRLevelControlClusterMoveToLevelParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRLevelControlClusterMoveParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRLevelControlClusterMoveParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRLevelControlClusterStepParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRLevelControlClusterStepParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRLevelControlClusterStopParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRLevelControlClusterStopParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRLevelControlClusterMoveToLevelWithOnOffParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRLevelControlClusterMoveToLevelWithOnOffParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRLevelControlClusterMoveWithOnOffParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRLevelControlClusterMoveWithOnOffParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRLevelControlClusterStepWithOnOffParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRLevelControlClusterStepWithOnOffParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRLevelControlClusterStopWithOnOffParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRLevelControlClusterStopWithOnOffParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRLevelControlClusterMoveToClosestFrequencyParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRLevelControlClusterMoveToClosestFrequencyParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAccessControlClusterReviewFabricRestrictionsParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAccessControlClusterReviewFabricRestrictionsParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAccessControlClusterReviewFabricRestrictionsResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAccessControlClusterReviewFabricRestrictionsResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRActionsClusterInstantActionParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRActionsClusterInstantActionParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRActionsClusterInstantActionWithTransitionParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRActionsClusterInstantActionWithTransitionParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRActionsClusterStartActionParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRActionsClusterStartActionParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRActionsClusterStartActionWithDurationParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRActionsClusterStartActionWithDurationParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRActionsClusterStopActionParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRActionsClusterStopActionParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRActionsClusterPauseActionParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRActionsClusterPauseActionParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRActionsClusterPauseActionWithDurationParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRActionsClusterPauseActionWithDurationParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRActionsClusterResumeActionParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRActionsClusterResumeActionParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRActionsClusterEnableActionParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRActionsClusterEnableActionParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRActionsClusterEnableActionWithDurationParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRActionsClusterEnableActionWithDurationParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRActionsClusterDisableActionParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRActionsClusterDisableActionParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRActionsClusterDisableActionWithDurationParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRActionsClusterDisableActionWithDurationParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBasicClusterMfgSpecificPingParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBasicClusterMfgSpecificPingParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROTASoftwareUpdateProviderClusterQueryImageParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROTASoftwareUpdateProviderClusterQueryImageParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROtaSoftwareUpdateProviderClusterQueryImageParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROtaSoftwareUpdateProviderClusterQueryImageParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROTASoftwareUpdateProviderClusterQueryImageResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROTASoftwareUpdateProviderClusterQueryImageResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROTASoftwareUpdateRequestorClusterAnnounceOTAProviderParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROtaSoftwareUpdateRequestorClusterAnnounceOtaProviderParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGeneralCommissioningClusterArmFailSafeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGeneralCommissioningClusterArmFailSafeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGeneralCommissioningClusterArmFailSafeResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGeneralCommissioningClusterArmFailSafeResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGeneralCommissioningClusterSetRegulatoryConfigParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGeneralCommissioningClusterSetRegulatoryConfigParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGeneralCommissioningClusterSetRegulatoryConfigResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGeneralCommissioningClusterSetRegulatoryConfigResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGeneralCommissioningClusterCommissioningCompleteParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGeneralCommissioningClusterCommissioningCompleteParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGeneralCommissioningClusterCommissioningCompleteResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGeneralCommissioningClusterCommissioningCompleteResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGeneralCommissioningClusterSetTCAcknowledgementsParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGeneralCommissioningClusterSetTCAcknowledgementsParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGeneralCommissioningClusterSetTCAcknowledgementsResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGeneralCommissioningClusterSetTCAcknowledgementsResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRNetworkCommissioningClusterScanNetworksParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRNetworkCommissioningClusterScanNetworksParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRNetworkCommissioningClusterScanNetworksResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRNetworkCommissioningClusterScanNetworksResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRNetworkCommissioningClusterRemoveNetworkParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRNetworkCommissioningClusterRemoveNetworkParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRNetworkCommissioningClusterNetworkConfigResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRNetworkCommissioningClusterNetworkConfigResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRNetworkCommissioningClusterConnectNetworkParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRNetworkCommissioningClusterConnectNetworkParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRNetworkCommissioningClusterConnectNetworkResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRNetworkCommissioningClusterConnectNetworkResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRNetworkCommissioningClusterReorderNetworkParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRNetworkCommissioningClusterReorderNetworkParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRNetworkCommissioningClusterQueryIdentityParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRNetworkCommissioningClusterQueryIdentityParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRNetworkCommissioningClusterQueryIdentityResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRNetworkCommissioningClusterQueryIdentityResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDiagnosticLogsClusterRetrieveLogsRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDiagnosticLogsClusterRetrieveLogsRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDiagnosticLogsClusterRetrieveLogsResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDiagnosticLogsClusterRetrieveLogsResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGeneralDiagnosticsClusterTestEventTriggerParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGeneralDiagnosticsClusterTestEventTriggerParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGeneralDiagnosticsClusterTimeSnapshotParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGeneralDiagnosticsClusterTimeSnapshotParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGeneralDiagnosticsClusterTimeSnapshotResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGeneralDiagnosticsClusterTimeSnapshotResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGeneralDiagnosticsClusterPayloadTestRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGeneralDiagnosticsClusterPayloadTestRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGeneralDiagnosticsClusterPayloadTestResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGeneralDiagnosticsClusterPayloadTestResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSoftwareDiagnosticsClusterResetWatermarksParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSoftwareDiagnosticsClusterResetWatermarksParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThreadNetworkDiagnosticsClusterResetCountsParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThreadNetworkDiagnosticsClusterResetCountsParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWiFiNetworkDiagnosticsClusterResetCountsParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWiFiNetworkDiagnosticsClusterResetCountsParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREthernetNetworkDiagnosticsClusterResetCountsParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREthernetNetworkDiagnosticsClusterResetCountsParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimeSynchronizationClusterSetUTCTimeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimeSynchronizationClusterSetUTCTimeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimeSynchronizationClusterSetUtcTimeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimeSynchronizationClusterSetUtcTimeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimeSynchronizationClusterSetTrustedTimeSourceParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimeSynchronizationClusterSetTrustedTimeSourceParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimeSynchronizationClusterSetTimeZoneParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimeSynchronizationClusterSetTimeZoneParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimeSynchronizationClusterSetTimeZoneResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimeSynchronizationClusterSetTimeZoneResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimeSynchronizationClusterSetDSTOffsetParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimeSynchronizationClusterSetDSTOffsetParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimeSynchronizationClusterSetDefaultNTPParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimeSynchronizationClusterSetDefaultNTPParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBridgedDeviceBasicInformationClusterKeepActiveParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBridgedDeviceBasicInformationClusterKeepActiveParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAdministratorCommissioningClusterOpenCommissioningWindowParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAdministratorCommissioningClusterOpenCommissioningWindowParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAdministratorCommissioningClusterRevokeCommissioningParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAdministratorCommissioningClusterRevokeCommissioningParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalCredentialsClusterAttestationRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalCredentialsClusterAttestationRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalCredentialsClusterAttestationResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalCredentialsClusterAttestationResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalCredentialsClusterCertificateChainRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalCredentialsClusterCertificateChainRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalCredentialsClusterCertificateChainResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalCredentialsClusterCertificateChainResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalCredentialsClusterCSRRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalCredentialsClusterCSRRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalCredentialsClusterCSRResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalCredentialsClusterCSRResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalCredentialsClusterAddNOCParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalCredentialsClusterAddNOCParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalCredentialsClusterUpdateNOCParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalCredentialsClusterUpdateNOCParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalCredentialsClusterNOCResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalCredentialsClusterNOCResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalCredentialsClusterUpdateFabricLabelParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalCredentialsClusterUpdateFabricLabelParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalCredentialsClusterRemoveFabricParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalCredentialsClusterRemoveFabricParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalCredentialsClusterAddTrustedRootCertificateParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalCredentialsClusterAddTrustedRootCertificateParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalCredentialsClusterSetVIDVerificationStatementParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalCredentialsClusterSetVIDVerificationStatementParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalCredentialsClusterSignVIDVerificationRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalCredentialsClusterSignVIDVerificationRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalCredentialsClusterSignVIDVerificationResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalCredentialsClusterSignVIDVerificationResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupKeyManagementClusterKeySetWriteParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupKeyManagementClusterKeySetWriteParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupKeyManagementClusterKeySetReadParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupKeyManagementClusterKeySetReadParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupKeyManagementClusterKeySetReadResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupKeyManagementClusterKeySetReadResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupKeyManagementClusterKeySetRemoveParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupKeyManagementClusterKeySetRemoveParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupKeyManagementClusterKeySetReadAllIndicesParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupKeyManagementClusterKeySetReadAllIndicesParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRICDManagementClusterRegisterClientParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRICDManagementClusterRegisterClientParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRICDManagementClusterRegisterClientResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRICDManagementClusterRegisterClientResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRICDManagementClusterUnregisterClientParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRICDManagementClusterUnregisterClientParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRICDManagementClusterStayActiveRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRICDManagementClusterStayActiveRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRICDManagementClusterStayActiveResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRICDManagementClusterStayActiveResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimerClusterSetTimerParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimerClusterSetTimerParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimerClusterResetTimerParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimerClusterResetTimerParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimerClusterAddTimeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimerClusterAddTimeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTimerClusterReduceTimeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTimerClusterReduceTimeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROvenCavityOperationalStateClusterStopParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROvenCavityOperationalStateClusterStopParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROvenCavityOperationalStateClusterStartParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROvenCavityOperationalStateClusterStartParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROvenCavityOperationalStateClusterOperationalCommandResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROvenCavityOperationalStateClusterOperationalCommandResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROvenModeClusterChangeToModeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROvenModeClusterChangeToModeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROvenModeClusterChangeToModeResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROvenModeClusterChangeToModeResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRModeSelectClusterChangeToModeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRModeSelectClusterChangeToModeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRLaundryWasherModeClusterChangeToModeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRLaundryWasherModeClusterChangeToModeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRLaundryWasherModeClusterChangeToModeResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRLaundryWasherModeClusterChangeToModeResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Struct("MTRRefrigeratorAndTemperatureControlledCabinetModeClusterChangeToModeResponseParams", &[]);
}
unsafe impl objc2::encode::RefEncode for MTRRVCRunModeClusterChangeToModeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRRVCRunModeClusterChangeToModeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRRVCRunModeClusterChangeToModeResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRRVCRunModeClusterChangeToModeResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRRVCCleanModeClusterChangeToModeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRRVCCleanModeClusterChangeToModeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRRVCCleanModeClusterChangeToModeResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRRVCCleanModeClusterChangeToModeResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTemperatureControlClusterSetTemperatureParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTemperatureControlClusterSetTemperatureParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDishwasherModeClusterChangeToModeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDishwasherModeClusterChangeToModeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDishwasherModeClusterChangeToModeResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDishwasherModeClusterChangeToModeResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSmokeCOAlarmClusterSelfTestRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSmokeCOAlarmClusterSelfTestRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDishwasherAlarmClusterResetParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDishwasherAlarmClusterResetParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDishwasherAlarmClusterModifyEnabledAlarmsParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDishwasherAlarmClusterModifyEnabledAlarmsParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMicrowaveOvenControlClusterSetCookingParametersParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMicrowaveOvenControlClusterSetCookingParametersParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMicrowaveOvenControlClusterAddMoreTimeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMicrowaveOvenControlClusterAddMoreTimeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalStateClusterPauseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalStateClusterPauseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalStateClusterStopParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalStateClusterStopParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalStateClusterStartParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalStateClusterStartParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalStateClusterResumeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalStateClusterResumeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalStateClusterOperationalCommandResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalStateClusterOperationalCommandResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRRVCOperationalStateClusterPauseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRRVCOperationalStateClusterPauseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRRVCOperationalStateClusterResumeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRRVCOperationalStateClusterResumeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRRVCOperationalStateClusterOperationalCommandResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRRVCOperationalStateClusterOperationalCommandResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRRVCOperationalStateClusterGoHomeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRRVCOperationalStateClusterGoHomeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRScenesManagementClusterAddSceneParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRScenesManagementClusterAddSceneParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRScenesManagementClusterAddSceneResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRScenesManagementClusterAddSceneResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRScenesManagementClusterViewSceneParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRScenesManagementClusterViewSceneParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRScenesManagementClusterViewSceneResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRScenesManagementClusterViewSceneResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRScenesManagementClusterRemoveSceneParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRScenesManagementClusterRemoveSceneParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRScenesManagementClusterRemoveSceneResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRScenesManagementClusterRemoveSceneResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRScenesManagementClusterRemoveAllScenesParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRScenesManagementClusterRemoveAllScenesParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRScenesManagementClusterRemoveAllScenesResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRScenesManagementClusterRemoveAllScenesResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRScenesManagementClusterStoreSceneParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRScenesManagementClusterStoreSceneParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRScenesManagementClusterStoreSceneResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRScenesManagementClusterStoreSceneResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRScenesManagementClusterRecallSceneParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRScenesManagementClusterRecallSceneParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRScenesManagementClusterGetSceneMembershipParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRScenesManagementClusterGetSceneMembershipParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRScenesManagementClusterGetSceneMembershipResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRScenesManagementClusterGetSceneMembershipResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRScenesManagementClusterCopySceneParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRScenesManagementClusterCopySceneParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRScenesManagementClusterCopySceneResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRScenesManagementClusterCopySceneResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupcastClusterJoinGroupParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupcastClusterJoinGroupParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupcastClusterLeaveGroupParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupcastClusterLeaveGroupParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupcastClusterLeaveGroupResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupcastClusterLeaveGroupResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupcastClusterUpdateGroupKeyParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupcastClusterUpdateGroupKeyParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupcastClusterExpireGracePeriodParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupcastClusterExpireGracePeriodParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRGroupcastClusterConfigureAuxiliaryACLParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRGroupcastClusterConfigureAuxiliaryACLParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRHEPAFilterMonitoringClusterResetConditionParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRHEPAFilterMonitoringClusterResetConditionParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRActivatedCarbonFilterMonitoringClusterResetConditionParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRActivatedCarbonFilterMonitoringClusterResetConditionParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBooleanStateConfigurationClusterSuppressAlarmParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBooleanStateConfigurationClusterSuppressAlarmParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBooleanStateConfigurationClusterEnableDisableAlarmParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBooleanStateConfigurationClusterEnableDisableAlarmParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRValveConfigurationAndControlClusterOpenParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRValveConfigurationAndControlClusterOpenParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRValveConfigurationAndControlClusterCloseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRValveConfigurationAndControlClusterCloseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWaterHeaterManagementClusterBoostParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWaterHeaterManagementClusterBoostParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWaterHeaterManagementClusterCancelBoostParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWaterHeaterManagementClusterCancelBoostParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityPriceClusterGetDetailedPriceRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityPriceClusterGetDetailedPriceRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityPriceClusterGetDetailedPriceResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityPriceClusterGetDetailedPriceResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityPriceClusterGetDetailedForecastRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityPriceClusterGetDetailedForecastRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityPriceClusterGetDetailedForecastResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityPriceClusterGetDetailedForecastResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMessagesClusterPresentMessagesRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMessagesClusterPresentMessagesRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMessagesClusterCancelMessagesRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMessagesClusterCancelMessagesRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementClusterPowerAdjustRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementClusterPowerAdjustRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementClusterCancelPowerAdjustRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementClusterCancelPowerAdjustRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementClusterStartTimeAdjustRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementClusterStartTimeAdjustRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementClusterPauseRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementClusterPauseRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementClusterResumeRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementClusterResumeRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementClusterModifyForecastRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementClusterModifyForecastRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementClusterRequestConstraintBasedForecastParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementClusterRequestConstraintBasedForecastParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementClusterCancelRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementClusterCancelRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREnergyEVSEClusterGetTargetsResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREnergyEVSEClusterGetTargetsResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREnergyEVSEClusterDisableParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREnergyEVSEClusterDisableParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREnergyEVSEClusterEnableChargingParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREnergyEVSEClusterEnableChargingParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREnergyEVSEClusterEnableDischargingParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREnergyEVSEClusterEnableDischargingParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREnergyEVSEClusterStartDiagnosticsParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREnergyEVSEClusterStartDiagnosticsParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREnergyEVSEClusterSetTargetsParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREnergyEVSEClusterSetTargetsParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREnergyEVSEClusterGetTargetsParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREnergyEVSEClusterGetTargetsParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREnergyEVSEClusterClearTargetsParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREnergyEVSEClusterClearTargetsParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREnergyEVSEModeClusterChangeToModeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREnergyEVSEModeClusterChangeToModeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREnergyEVSEModeClusterChangeToModeResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREnergyEVSEModeClusterChangeToModeResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWaterHeaterModeClusterChangeToModeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWaterHeaterModeClusterChangeToModeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWaterHeaterModeClusterChangeToModeResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWaterHeaterModeClusterChangeToModeResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementModeClusterChangeToModeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementModeClusterChangeToModeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceEnergyManagementModeClusterChangeToModeResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceEnergyManagementModeClusterChangeToModeResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterLockDoorParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterLockDoorParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterUnlockDoorParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterUnlockDoorParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterUnlockWithTimeoutParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterUnlockWithTimeoutParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterSetWeekDayScheduleParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterSetWeekDayScheduleParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterGetWeekDayScheduleParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterGetWeekDayScheduleParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterGetWeekDayScheduleResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterGetWeekDayScheduleResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterClearWeekDayScheduleParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterClearWeekDayScheduleParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterSetYearDayScheduleParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterSetYearDayScheduleParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterGetYearDayScheduleParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterGetYearDayScheduleParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterGetYearDayScheduleResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterGetYearDayScheduleResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterClearYearDayScheduleParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterClearYearDayScheduleParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterSetHolidayScheduleParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterSetHolidayScheduleParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterGetHolidayScheduleParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterGetHolidayScheduleParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterGetHolidayScheduleResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterGetHolidayScheduleResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterClearHolidayScheduleParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterClearHolidayScheduleParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterSetUserParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterSetUserParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterGetUserParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterGetUserParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterGetUserResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterGetUserResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterClearUserParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterClearUserParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterSetCredentialParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterSetCredentialParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterSetCredentialResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterSetCredentialResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterGetCredentialStatusParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterGetCredentialStatusParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterGetCredentialStatusResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterGetCredentialStatusResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterClearCredentialParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterClearCredentialParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterUnboltDoorParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterUnboltDoorParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterSetAliroReaderConfigParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterSetAliroReaderConfigParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterClearAliroReaderConfigParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterClearAliroReaderConfigParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterAppleSetAliroCredentialParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterAppleSetAliroCredentialParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterAppleGetAliroCredentialStatusParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterAppleGetAliroCredentialStatusParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterAppleClearAliroCredentialParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterAppleClearAliroCredentialParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterAppleSetAliroReaderConfigParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterAppleSetAliroReaderConfigParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDoorLockClusterAppleClearAliroReaderConfigParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDoorLockClusterAppleClearAliroReaderConfigParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWindowCoveringClusterUpOrOpenParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWindowCoveringClusterUpOrOpenParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWindowCoveringClusterDownOrCloseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWindowCoveringClusterDownOrCloseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWindowCoveringClusterStopMotionParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWindowCoveringClusterStopMotionParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWindowCoveringClusterGoToLiftValueParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWindowCoveringClusterGoToLiftValueParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWindowCoveringClusterGoToLiftPercentageParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWindowCoveringClusterGoToLiftPercentageParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWindowCoveringClusterGoToTiltValueParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWindowCoveringClusterGoToTiltValueParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWindowCoveringClusterGoToTiltPercentageParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWindowCoveringClusterGoToTiltPercentageParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClosureControlClusterStopParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClosureControlClusterStopParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClosureControlClusterMoveToParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClosureControlClusterMoveToParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClosureControlClusterCalibrateParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClosureControlClusterCalibrateParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClosureDimensionClusterSetTargetParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClosureDimensionClusterSetTargetParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClosureDimensionClusterStepParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClosureDimensionClusterStepParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRServiceAreaClusterSelectAreasParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRServiceAreaClusterSelectAreasParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRServiceAreaClusterSelectAreasResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRServiceAreaClusterSelectAreasResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRServiceAreaClusterSkipAreaParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRServiceAreaClusterSkipAreaParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRServiceAreaClusterSkipAreaResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRServiceAreaClusterSkipAreaResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterSetpointRaiseLowerParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterSetpointRaiseLowerParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterGetWeeklyScheduleResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterGetWeeklyScheduleResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterSetWeeklyScheduleParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterSetWeeklyScheduleParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterGetWeeklyScheduleParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterGetWeeklyScheduleParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterAddThermostatSuggestionResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterAddThermostatSuggestionResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterClearWeeklyScheduleParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterClearWeeklyScheduleParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterSetActiveScheduleRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterSetActiveScheduleRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterSetActivePresetRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterSetActivePresetRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterAddThermostatSuggestionParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterAddThermostatSuggestionParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterRemoveThermostatSuggestionParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterRemoveThermostatSuggestionParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterAtomicResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterAtomicResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThermostatClusterAtomicRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThermostatClusterAtomicRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRFanControlClusterStepParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRFanControlClusterStepParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRColorControlClusterMoveToHueParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRColorControlClusterMoveToHueParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRColorControlClusterMoveHueParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRColorControlClusterMoveHueParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRColorControlClusterStepHueParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRColorControlClusterStepHueParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRColorControlClusterMoveToSaturationParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRColorControlClusterMoveToSaturationParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRColorControlClusterMoveSaturationParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRColorControlClusterMoveSaturationParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRColorControlClusterStepSaturationParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRColorControlClusterStepSaturationParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRColorControlClusterMoveToHueAndSaturationParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRColorControlClusterMoveToHueAndSaturationParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRColorControlClusterMoveToColorParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRColorControlClusterMoveToColorParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRColorControlClusterMoveColorParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRColorControlClusterMoveColorParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRColorControlClusterStepColorParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRColorControlClusterStepColorParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRColorControlClusterMoveToColorTemperatureParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRColorControlClusterMoveToColorTemperatureParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRColorControlClusterEnhancedMoveToHueParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRColorControlClusterEnhancedMoveToHueParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRColorControlClusterEnhancedMoveHueParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRColorControlClusterEnhancedMoveHueParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRColorControlClusterEnhancedStepHueParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRColorControlClusterEnhancedStepHueParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRColorControlClusterEnhancedMoveToHueAndSaturationParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRColorControlClusterEnhancedMoveToHueAndSaturationParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRColorControlClusterColorLoopSetParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRColorControlClusterColorLoopSetParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRColorControlClusterStopMoveStepParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRColorControlClusterStopMoveStepParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRColorControlClusterMoveColorTemperatureParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRColorControlClusterMoveColorTemperatureParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRColorControlClusterStepColorTemperatureParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRColorControlClusterStepColorTemperatureParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWiFiNetworkManagementClusterNetworkPassphraseRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWiFiNetworkManagementClusterNetworkPassphraseRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWiFiNetworkManagementClusterNetworkPassphraseResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWiFiNetworkManagementClusterNetworkPassphraseResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThreadBorderRouterManagementClusterGetActiveDatasetRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThreadBorderRouterManagementClusterGetActiveDatasetRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThreadBorderRouterManagementClusterGetPendingDatasetRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThreadBorderRouterManagementClusterGetPendingDatasetRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThreadBorderRouterManagementClusterDatasetResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThreadBorderRouterManagementClusterDatasetResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThreadBorderRouterManagementClusterSetActiveDatasetRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThreadBorderRouterManagementClusterSetActiveDatasetRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThreadBorderRouterManagementClusterSetPendingDatasetRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThreadBorderRouterManagementClusterSetPendingDatasetRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThreadNetworkDirectoryClusterAddNetworkParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThreadNetworkDirectoryClusterAddNetworkParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThreadNetworkDirectoryClusterRemoveNetworkParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThreadNetworkDirectoryClusterRemoveNetworkParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThreadNetworkDirectoryClusterGetOperationalDatasetParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThreadNetworkDirectoryClusterGetOperationalDatasetParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThreadNetworkDirectoryClusterOperationalDatasetResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThreadNetworkDirectoryClusterOperationalDatasetResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRChannelClusterChangeChannelParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRChannelClusterChangeChannelParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRChannelClusterChangeChannelResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRChannelClusterChangeChannelResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRChannelClusterChangeChannelByNumberParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRChannelClusterChangeChannelByNumberParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRChannelClusterSkipChannelParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRChannelClusterSkipChannelParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRChannelClusterGetProgramGuideParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRChannelClusterGetProgramGuideParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRChannelClusterProgramGuideResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRChannelClusterProgramGuideResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRChannelClusterRecordProgramParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRChannelClusterRecordProgramParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRChannelClusterCancelRecordProgramParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRChannelClusterCancelRecordProgramParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTargetNavigatorClusterNavigateTargetParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTargetNavigatorClusterNavigateTargetParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTargetNavigatorClusterNavigateTargetResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTargetNavigatorClusterNavigateTargetResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaPlaybackClusterPlayParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaPlaybackClusterPlayParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaPlaybackClusterPauseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaPlaybackClusterPauseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaPlaybackClusterStopParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaPlaybackClusterStopParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaPlaybackClusterStopPlaybackParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaPlaybackClusterStopPlaybackParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaPlaybackClusterStartOverParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaPlaybackClusterStartOverParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaPlaybackClusterPreviousParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaPlaybackClusterPreviousParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaPlaybackClusterNextParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaPlaybackClusterNextParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaPlaybackClusterRewindParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaPlaybackClusterRewindParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaPlaybackClusterFastForwardParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaPlaybackClusterFastForwardParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaPlaybackClusterSkipForwardParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaPlaybackClusterSkipForwardParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaPlaybackClusterSkipBackwardParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaPlaybackClusterSkipBackwardParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaPlaybackClusterPlaybackResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaPlaybackClusterPlaybackResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaPlaybackClusterSeekParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaPlaybackClusterSeekParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaPlaybackClusterActivateAudioTrackParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaPlaybackClusterActivateAudioTrackParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaPlaybackClusterActivateTextTrackParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaPlaybackClusterActivateTextTrackParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaPlaybackClusterDeactivateTextTrackParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaPlaybackClusterDeactivateTextTrackParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaInputClusterSelectInputParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaInputClusterSelectInputParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaInputClusterShowInputStatusParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaInputClusterShowInputStatusParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaInputClusterHideInputStatusParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaInputClusterHideInputStatusParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMediaInputClusterRenameInputParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMediaInputClusterRenameInputParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRLowPowerClusterSleepParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRLowPowerClusterSleepParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRKeypadInputClusterSendKeyParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRKeypadInputClusterSendKeyParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRKeypadInputClusterSendKeyResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRKeypadInputClusterSendKeyResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentLauncherClusterLaunchContentParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentLauncherClusterLaunchContentParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentLauncherClusterLaunchURLParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentLauncherClusterLaunchURLParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentLauncherClusterLauncherResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentLauncherClusterLauncherResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentLauncherClusterLaunchResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentLauncherClusterLaunchResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAudioOutputClusterSelectOutputParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAudioOutputClusterSelectOutputParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAudioOutputClusterRenameOutputParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAudioOutputClusterRenameOutputParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRApplicationLauncherClusterLaunchAppParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRApplicationLauncherClusterLaunchAppParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRApplicationLauncherClusterStopAppParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRApplicationLauncherClusterStopAppParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRApplicationLauncherClusterHideAppParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRApplicationLauncherClusterHideAppParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRApplicationLauncherClusterLauncherResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRApplicationLauncherClusterLauncherResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAccountLoginClusterGetSetupPINParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAccountLoginClusterGetSetupPINParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAccountLoginClusterGetSetupPINResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAccountLoginClusterGetSetupPINResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAccountLoginClusterLoginParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAccountLoginClusterLoginParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAccountLoginClusterLogoutParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAccountLoginClusterLogoutParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentControlClusterUpdatePINParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentControlClusterUpdatePINParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentControlClusterResetPINParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentControlClusterResetPINParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentControlClusterResetPINResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentControlClusterResetPINResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentControlClusterEnableParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentControlClusterEnableParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentControlClusterDisableParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentControlClusterDisableParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentControlClusterAddBonusTimeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentControlClusterAddBonusTimeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentControlClusterSetScreenDailyTimeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentControlClusterSetScreenDailyTimeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentControlClusterBlockUnratedContentParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentControlClusterBlockUnratedContentParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentControlClusterUnblockUnratedContentParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentControlClusterUnblockUnratedContentParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentControlClusterSetOnDemandRatingThresholdParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentControlClusterSetOnDemandRatingThresholdParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentControlClusterSetScheduledContentRatingThresholdParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentControlClusterSetScheduledContentRatingThresholdParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentAppObserverClusterContentAppMessageParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentAppObserverClusterContentAppMessageParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRContentAppObserverClusterContentAppMessageResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRContentAppObserverClusterContentAppMessageResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRZoneManagementClusterCreateTwoDCartesianZoneParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRZoneManagementClusterCreateTwoDCartesianZoneParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRZoneManagementClusterCreateTwoDCartesianZoneResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRZoneManagementClusterCreateTwoDCartesianZoneResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRZoneManagementClusterUpdateTwoDCartesianZoneParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRZoneManagementClusterUpdateTwoDCartesianZoneParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRZoneManagementClusterRemoveZoneParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRZoneManagementClusterRemoveZoneParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRZoneManagementClusterCreateOrUpdateTriggerParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRZoneManagementClusterCreateOrUpdateTriggerParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRZoneManagementClusterRemoveTriggerParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRZoneManagementClusterRemoveTriggerParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterAudioStreamAllocateParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterAudioStreamAllocateParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterAudioStreamAllocateResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterAudioStreamAllocateResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterAudioStreamDeallocateParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterAudioStreamDeallocateParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterVideoStreamAllocateParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterVideoStreamAllocateParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterVideoStreamAllocateResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterVideoStreamAllocateResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterVideoStreamModifyParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterVideoStreamModifyParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterVideoStreamDeallocateParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterVideoStreamDeallocateParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterSnapshotStreamAllocateParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterSnapshotStreamAllocateParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterSnapshotStreamAllocateResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterSnapshotStreamAllocateResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterSnapshotStreamModifyParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterSnapshotStreamModifyParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterSnapshotStreamDeallocateParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterSnapshotStreamDeallocateParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterSetStreamPrioritiesParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterSetStreamPrioritiesParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterCaptureSnapshotParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterCaptureSnapshotParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVStreamManagementClusterCaptureSnapshotResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVStreamManagementClusterCaptureSnapshotResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVSettingsUserLevelManagementClusterMPTZSetPositionParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVSettingsUserLevelManagementClusterMPTZSetPositionParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVSettingsUserLevelManagementClusterMPTZRelativeMoveParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVSettingsUserLevelManagementClusterMPTZRelativeMoveParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVSettingsUserLevelManagementClusterMPTZMoveToPresetParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVSettingsUserLevelManagementClusterMPTZMoveToPresetParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVSettingsUserLevelManagementClusterMPTZSavePresetParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVSettingsUserLevelManagementClusterMPTZSavePresetParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVSettingsUserLevelManagementClusterMPTZRemovePresetParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVSettingsUserLevelManagementClusterMPTZRemovePresetParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVSettingsUserLevelManagementClusterDPTZSetViewportParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVSettingsUserLevelManagementClusterDPTZSetViewportParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCameraAVSettingsUserLevelManagementClusterDPTZRelativeMoveParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCameraAVSettingsUserLevelManagementClusterDPTZRelativeMoveParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWebRTCTransportProviderClusterSolicitOfferParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWebRTCTransportProviderClusterSolicitOfferParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWebRTCTransportProviderClusterSolicitOfferResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWebRTCTransportProviderClusterSolicitOfferResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWebRTCTransportProviderClusterProvideOfferParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWebRTCTransportProviderClusterProvideOfferParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWebRTCTransportProviderClusterProvideOfferResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWebRTCTransportProviderClusterProvideOfferResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWebRTCTransportProviderClusterProvideAnswerParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWebRTCTransportProviderClusterProvideAnswerParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWebRTCTransportProviderClusterProvideICECandidatesParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWebRTCTransportProviderClusterProvideICECandidatesParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWebRTCTransportProviderClusterEndSessionParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWebRTCTransportProviderClusterEndSessionParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWebRTCTransportRequestorClusterOfferParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWebRTCTransportRequestorClusterOfferParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWebRTCTransportRequestorClusterAnswerParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWebRTCTransportRequestorClusterAnswerParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWebRTCTransportRequestorClusterICECandidatesParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWebRTCTransportRequestorClusterICECandidatesParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRWebRTCTransportRequestorClusterEndParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRWebRTCTransportRequestorClusterEndParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPushAVStreamTransportClusterAllocatePushTransportParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPushAVStreamTransportClusterAllocatePushTransportParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPushAVStreamTransportClusterAllocatePushTransportResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPushAVStreamTransportClusterAllocatePushTransportResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPushAVStreamTransportClusterDeallocatePushTransportParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPushAVStreamTransportClusterDeallocatePushTransportParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPushAVStreamTransportClusterModifyPushTransportParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPushAVStreamTransportClusterModifyPushTransportParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPushAVStreamTransportClusterSetTransportStatusParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPushAVStreamTransportClusterSetTransportStatusParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPushAVStreamTransportClusterManuallyTriggerTransportParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPushAVStreamTransportClusterManuallyTriggerTransportParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPushAVStreamTransportClusterFindTransportParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPushAVStreamTransportClusterFindTransportParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRPushAVStreamTransportClusterFindTransportResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRPushAVStreamTransportClusterFindTransportResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRChimeClusterPlayChimeSoundParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRChimeClusterPlayChimeSoundParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityTariffClusterGetTariffComponentParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityTariffClusterGetTariffComponentParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityTariffClusterGetTariffComponentResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityTariffClusterGetTariffComponentResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityTariffClusterGetDayEntryParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityTariffClusterGetDayEntryParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommodityTariffClusterGetDayEntryResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommodityTariffClusterGetDayEntryResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommissionerControlClusterRequestCommissioningApprovalParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommissionerControlClusterRequestCommissioningApprovalParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommissionerControlClusterCommissionNodeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommissionerControlClusterCommissionNodeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommissionerControlClusterReverseOpenCommissioningWindowParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommissionerControlClusterReverseOpenCommissioningWindowParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterAddKeySetParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterAddKeySetParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterUpdateKeySetParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterUpdateKeySetParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterRemoveKeySetParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterRemoveKeySetParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterAddGroupParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterAddGroupParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterUpdateGroupParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterUpdateGroupParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterRemoveGroupParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterRemoveGroupParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterAddAdminParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterAddAdminParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterUpdateAdminParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterUpdateAdminParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterRemoveAdminParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterRemoveAdminParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterAddPendingNodeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterAddPendingNodeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterRefreshNodeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterRefreshNodeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterUpdateNodeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterUpdateNodeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterRemoveNodeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterRemoveNodeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterUpdateEndpointForNodeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterUpdateEndpointForNodeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterAddGroupIDToEndpointForNodeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterAddGroupIDToEndpointForNodeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterRemoveGroupIDFromEndpointForNodeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterRemoveGroupIDFromEndpointForNodeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterAddBindingToEndpointForNodeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterAddBindingToEndpointForNodeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterRemoveBindingFromEndpointForNodeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterRemoveBindingFromEndpointForNodeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterAddACLToNodeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterAddACLToNodeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricDatastoreClusterRemoveACLFromNodeParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricDatastoreClusterRemoveACLFromNodeParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricAdministratorClusterICACCSRRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricAdministratorClusterICACCSRRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricAdministratorClusterICACCSRResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricAdministratorClusterICACCSRResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricAdministratorClusterAddICACParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricAdministratorClusterAddICACParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricAdministratorClusterICACResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricAdministratorClusterICACResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricAdministratorClusterOpenJointCommissioningWindowParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricAdministratorClusterOpenJointCommissioningWindowParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricAdministratorClusterTransferAnchorRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricAdministratorClusterTransferAnchorRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricAdministratorClusterTransferAnchorResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricAdministratorClusterTransferAnchorResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricAdministratorClusterTransferAnchorCompleteParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricAdministratorClusterTransferAnchorCompleteParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRJointFabricAdministratorClusterAnnounceJointFabricAdministratorParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRJointFabricAdministratorClusterAnnounceJointFabricAdministratorParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSCertificateManagementClusterProvisionRootCertificateParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSCertificateManagementClusterProvisionRootCertificateParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSCertificateManagementClusterProvisionRootCertificateResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSCertificateManagementClusterProvisionRootCertificateResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSCertificateManagementClusterFindRootCertificateParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSCertificateManagementClusterFindRootCertificateParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSCertificateManagementClusterFindRootCertificateResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSCertificateManagementClusterFindRootCertificateResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSCertificateManagementClusterLookupRootCertificateParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSCertificateManagementClusterLookupRootCertificateParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSCertificateManagementClusterLookupRootCertificateResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSCertificateManagementClusterLookupRootCertificateResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSCertificateManagementClusterRemoveRootCertificateParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSCertificateManagementClusterRemoveRootCertificateParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSCertificateManagementClusterClientCSRParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSCertificateManagementClusterClientCSRParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSCertificateManagementClusterClientCSRResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSCertificateManagementClusterClientCSRResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSCertificateManagementClusterProvisionClientCertificateParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSCertificateManagementClusterProvisionClientCertificateParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSCertificateManagementClusterFindClientCertificateParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSCertificateManagementClusterFindClientCertificateParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSCertificateManagementClusterFindClientCertificateResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSCertificateManagementClusterFindClientCertificateResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSCertificateManagementClusterLookupClientCertificateParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSCertificateManagementClusterLookupClientCertificateParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSCertificateManagementClusterLookupClientCertificateResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSCertificateManagementClusterLookupClientCertificateResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSCertificateManagementClusterRemoveClientCertificateParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSCertificateManagementClusterRemoveClientCertificateParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSClientManagementClusterProvisionEndpointParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSClientManagementClusterProvisionEndpointParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSClientManagementClusterProvisionEndpointResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSClientManagementClusterProvisionEndpointResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSClientManagementClusterFindEndpointParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSClientManagementClusterFindEndpointParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSClientManagementClusterFindEndpointResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSClientManagementClusterFindEndpointResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTLSClientManagementClusterRemoveEndpointParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTLSClientManagementClusterRemoveEndpointParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestSpecificResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestSpecificResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestSpecificResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestSpecificResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestNotHandledParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestNotHandledParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestNotHandledParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestNotHandledParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestAddArgumentsResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestAddArgumentsResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestAddArgumentsResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestAddArgumentsResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestSpecificParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestSpecificParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestSpecificParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestSpecificParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestSimpleArgumentResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestSimpleArgumentResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestSimpleArgumentResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestSimpleArgumentResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestUnknownCommandParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestUnknownCommandParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestUnknownCommandParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestUnknownCommandParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestStructArrayArgumentResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestStructArrayArgumentResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestStructArrayArgumentResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestStructArrayArgumentResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestAddArgumentsParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestAddArgumentsParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestAddArgumentsParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestAddArgumentsParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestListInt8UReverseResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestListInt8UReverseResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestListInt8UReverseResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestListInt8UReverseResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestSimpleArgumentRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestSimpleArgumentRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestSimpleArgumentRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestSimpleArgumentRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestEnumsResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestEnumsResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestEnumsResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestEnumsResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestStructArrayArgumentRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestStructArrayArgumentRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestStructArrayArgumentRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestStructArrayArgumentRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestNullableOptionalResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestNullableOptionalResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestNullableOptionalResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestNullableOptionalResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestStructArgumentRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestStructArgumentRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestStructArgumentRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestStructArgumentRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestComplexNullableOptionalResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestComplexNullableOptionalResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestComplexNullableOptionalResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestComplexNullableOptionalResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestNestedStructArgumentRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestNestedStructArgumentRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestNestedStructArgumentRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestNestedStructArgumentRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterBooleanResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterBooleanResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterBooleanResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterBooleanResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestListStructArgumentRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestListStructArgumentRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestListStructArgumentRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestListStructArgumentRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterSimpleStructResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterSimpleStructResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterSimpleStructResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterSimpleStructResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestListInt8UArgumentRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestListInt8UArgumentRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestListInt8UArgumentRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestListInt8UArgumentRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestEmitTestEventResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestEmitTestEventResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestEmitTestEventResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestEmitTestEventResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestNestedStructListArgumentRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestNestedStructListArgumentRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestNestedStructListArgumentRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestNestedStructListArgumentRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestListNestedStructListArgumentRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestListNestedStructListArgumentRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestBatchHelperResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestBatchHelperResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestListInt8UReverseRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestListInt8UReverseRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestListInt8UReverseRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestListInt8UReverseRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterStringEchoResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterStringEchoResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestEnumsRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestEnumsRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestEnumsRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestEnumsRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterGlobalEchoResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterGlobalEchoResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestNullableOptionalRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestNullableOptionalRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestNullableOptionalRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestNullableOptionalRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestComplexNullableOptionalRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestComplexNullableOptionalRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestComplexNullableOptionalRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestComplexNullableOptionalRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterSimpleStructEchoRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterSimpleStructEchoRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterSimpleStructEchoRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterSimpleStructEchoRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTimedInvokeRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTimedInvokeRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTimedInvokeRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTimedInvokeRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestEmitTestEventRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestEmitTestEventRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestEmitTestEventRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestEmitTestEventRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestBatchHelperRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestBatchHelperRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestSecondBatchHelperRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestSecondBatchHelperRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterStringEchoRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterStringEchoRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterGlobalEchoRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterGlobalEchoRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestCheckCommandFlagsParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestCheckCommandFlagsParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestDifferentVendorMeiRequestParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestDifferentVendorMeiRequestParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRUnitTestingClusterTestDifferentVendorMeiResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRUnitTestingClusterTestDifferentVendorMeiResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSampleMEIClusterPingParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSampleMEIClusterPingParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSampleMEIClusterAddArgumentsResponseParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSampleMEIClusterAddArgumentsResponseParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSampleMEIClusterAddArgumentsParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSampleMEIClusterAddArgumentsParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalCSRInfo {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalCSRInfo {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for CSRInfo {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for CSRInfo {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCertificates {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCertificates {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceAttestationInfo {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceAttestationInfo {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for AttestationInfo {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for AttestationInfo {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROperationalCertificateChain {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROperationalCertificateChain {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceController {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceController {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterStateCacheContainer {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterStateCacheContainer {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAttributeCacheContainer {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAttributeCacheContainer {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterIdentify {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterIdentify {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterGroups {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterGroups {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterOnOff {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterOnOff {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterLevelControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterLevelControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterPulseWidthModulation {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterPulseWidthModulation {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterDescriptor {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterDescriptor {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterBinding {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterBinding {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterAccessControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterAccessControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterActions {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterActions {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterBasicInformation {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterBasicInformation {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterOTASoftwareUpdateProvider {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterOTASoftwareUpdateProvider {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterOTASoftwareUpdateRequestor {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterOTASoftwareUpdateRequestor {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterLocalizationConfiguration {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterLocalizationConfiguration {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterTimeFormatLocalization {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterTimeFormatLocalization {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterUnitLocalization {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterUnitLocalization {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterPowerSourceConfiguration {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterPowerSourceConfiguration {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterPowerSource {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterPowerSource {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterGeneralCommissioning {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterGeneralCommissioning {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterNetworkCommissioning {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterNetworkCommissioning {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterDiagnosticLogs {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterDiagnosticLogs {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterGeneralDiagnostics {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterGeneralDiagnostics {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterSoftwareDiagnostics {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterSoftwareDiagnostics {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterThreadNetworkDiagnostics {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterThreadNetworkDiagnostics {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterWiFiNetworkDiagnostics {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterWiFiNetworkDiagnostics {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterEthernetNetworkDiagnostics {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterEthernetNetworkDiagnostics {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterTimeSynchronization {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterTimeSynchronization {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterBridgedDeviceBasicInformation {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterBridgedDeviceBasicInformation {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterSwitch {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterSwitch {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterAdministratorCommissioning {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterAdministratorCommissioning {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterOperationalCredentials {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterOperationalCredentials {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterGroupKeyManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterGroupKeyManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterFixedLabel {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterFixedLabel {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterUserLabel {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterUserLabel {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterBooleanState {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterBooleanState {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterICDManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterICDManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterTimer {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterTimer {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterOvenCavityOperationalState {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterOvenCavityOperationalState {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterOvenMode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterOvenMode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterLaundryDryerControls {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterLaundryDryerControls {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterModeSelect {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterModeSelect {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterLaundryWasherMode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterLaundryWasherMode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterRefrigeratorAndTemperatureControlledCabinetMode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterLaundryWasherControls {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterLaundryWasherControls {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterRVCRunMode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterRVCRunMode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterRVCCleanMode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterRVCCleanMode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterTemperatureControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterTemperatureControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterRefrigeratorAlarm {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterRefrigeratorAlarm {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterDishwasherMode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterDishwasherMode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterAirQuality {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterAirQuality {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterSmokeCOAlarm {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterSmokeCOAlarm {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterDishwasherAlarm {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterDishwasherAlarm {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterMicrowaveOvenMode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterMicrowaveOvenMode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterMicrowaveOvenControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterMicrowaveOvenControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterOperationalState {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterOperationalState {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterRVCOperationalState {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterRVCOperationalState {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterScenesManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterScenesManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterGroupcast {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterGroupcast {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterHEPAFilterMonitoring {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterHEPAFilterMonitoring {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterActivatedCarbonFilterMonitoring {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterActivatedCarbonFilterMonitoring {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterBooleanStateConfiguration {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterBooleanStateConfiguration {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterValveConfigurationAndControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterValveConfigurationAndControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterElectricalPowerMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterElectricalPowerMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterElectricalEnergyMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterElectricalEnergyMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterWaterHeaterManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterWaterHeaterManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterCommodityPrice {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterCommodityPrice {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterMessages {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterMessages {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterDeviceEnergyManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterDeviceEnergyManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterEnergyEVSE {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterEnergyEVSE {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterEnergyPreference {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterEnergyPreference {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterPowerTopology {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterPowerTopology {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterEnergyEVSEMode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterEnergyEVSEMode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterWaterHeaterMode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterWaterHeaterMode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterDeviceEnergyManagementMode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterDeviceEnergyManagementMode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterElectricalGridConditions {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterElectricalGridConditions {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterDoorLock {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterDoorLock {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterWindowCovering {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterWindowCovering {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterClosureControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterClosureControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterClosureDimension {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterClosureDimension {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterServiceArea {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterServiceArea {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterPumpConfigurationAndControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterPumpConfigurationAndControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterThermostat {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterThermostat {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterFanControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterFanControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterThermostatUserInterfaceConfiguration {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterThermostatUserInterfaceConfiguration {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterColorControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterColorControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterBallastConfiguration {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterBallastConfiguration {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterIlluminanceMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterIlluminanceMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterTemperatureMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterTemperatureMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterPressureMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterPressureMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterFlowMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterFlowMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterRelativeHumidityMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterRelativeHumidityMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterOccupancySensing {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterOccupancySensing {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterCarbonMonoxideConcentrationMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterCarbonMonoxideConcentrationMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterCarbonDioxideConcentrationMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterCarbonDioxideConcentrationMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterNitrogenDioxideConcentrationMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterNitrogenDioxideConcentrationMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterOzoneConcentrationMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterOzoneConcentrationMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterPM25ConcentrationMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterPM25ConcentrationMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterFormaldehydeConcentrationMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterFormaldehydeConcentrationMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterPM1ConcentrationMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterPM1ConcentrationMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterPM10ConcentrationMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterPM10ConcentrationMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterTotalVolatileOrganicCompoundsConcentrationMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterRadonConcentrationMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterRadonConcentrationMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterSoilMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterSoilMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterWiFiNetworkManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterWiFiNetworkManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterThreadBorderRouterManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterThreadBorderRouterManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterThreadNetworkDirectory {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterThreadNetworkDirectory {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterWakeOnLAN {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterWakeOnLAN {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterChannel {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterChannel {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterTargetNavigator {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterTargetNavigator {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterMediaPlayback {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterMediaPlayback {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterMediaInput {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterMediaInput {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterLowPower {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterLowPower {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterKeypadInput {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterKeypadInput {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterContentLauncher {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterContentLauncher {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterAudioOutput {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterAudioOutput {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterApplicationLauncher {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterApplicationLauncher {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterApplicationBasic {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterApplicationBasic {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterAccountLogin {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterAccountLogin {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterContentControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterContentControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterContentAppObserver {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterContentAppObserver {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterZoneManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterZoneManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterCameraAVStreamManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterCameraAVStreamManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterCameraAVSettingsUserLevelManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterCameraAVSettingsUserLevelManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterWebRTCTransportProvider {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterWebRTCTransportProvider {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterWebRTCTransportRequestor {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterWebRTCTransportRequestor {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterPushAVStreamTransport {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterPushAVStreamTransport {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterChime {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterChime {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterCommodityTariff {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterCommodityTariff {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterEcosystemInformation {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterEcosystemInformation {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterCommissionerControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterCommissionerControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterJointFabricDatastore {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterJointFabricDatastore {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterJointFabricAdministrator {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterJointFabricAdministrator {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterTLSCertificateManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterTLSCertificateManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterTLSClientManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterTLSClientManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterMeterIdentification {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterMeterIdentification {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterCommodityMetering {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterCommodityMetering {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterAppleDeviceInformation {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterAppleDeviceInformation {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterAppleLockCluster {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterAppleLockCluster {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterUnitTesting {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterUnitTesting {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterSampleMEI {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterSampleMEI {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterBasic {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterBasic {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterOtaSoftwareUpdateProvider {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterOtaSoftwareUpdateProvider {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterOtaSoftwareUpdateRequestor {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterOtaSoftwareUpdateRequestor {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterBridgedDeviceBasic {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterBridgedDeviceBasic {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterWakeOnLan {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterWakeOnLan {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterTestCluster {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterTestCluster {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAccessGrant {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAccessGrant {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAsyncCallbackWorkQueue {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAsyncCallbackWorkQueue {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAsyncCallbackQueueWorkItem {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAsyncCallbackQueueWorkItem {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRAttributeValueWaiter {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRAttributeValueWaiter {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommandWithRequiredResponse {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommandWithRequiredResponse {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDevice {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDevice {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterIdentify {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterIdentify {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterGroups {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterGroups {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterOnOff {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterOnOff {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterLevelControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterLevelControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterPulseWidthModulation {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterPulseWidthModulation {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterDescriptor {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterDescriptor {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterBinding {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterBinding {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterAccessControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterAccessControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterActions {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterActions {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterBasicInformation {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterBasicInformation {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterOTASoftwareUpdateProvider {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterOTASoftwareUpdateProvider {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterOTASoftwareUpdateRequestor {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterOTASoftwareUpdateRequestor {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterLocalizationConfiguration {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterLocalizationConfiguration {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterTimeFormatLocalization {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterTimeFormatLocalization {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterUnitLocalization {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterUnitLocalization {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterPowerSourceConfiguration {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterPowerSourceConfiguration {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterPowerSource {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterPowerSource {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterGeneralCommissioning {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterGeneralCommissioning {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterNetworkCommissioning {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterNetworkCommissioning {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterDiagnosticLogs {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterDiagnosticLogs {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterGeneralDiagnostics {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterGeneralDiagnostics {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterSoftwareDiagnostics {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterSoftwareDiagnostics {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterThreadNetworkDiagnostics {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterThreadNetworkDiagnostics {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterWiFiNetworkDiagnostics {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterWiFiNetworkDiagnostics {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterEthernetNetworkDiagnostics {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterEthernetNetworkDiagnostics {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterTimeSynchronization {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterTimeSynchronization {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterBridgedDeviceBasicInformation {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterBridgedDeviceBasicInformation {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterSwitch {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterSwitch {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterAdministratorCommissioning {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterAdministratorCommissioning {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterOperationalCredentials {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterOperationalCredentials {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterGroupKeyManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterGroupKeyManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterFixedLabel {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterFixedLabel {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterUserLabel {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterUserLabel {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterBooleanState {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterBooleanState {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterICDManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterICDManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterTimer {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterTimer {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterOvenCavityOperationalState {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterOvenCavityOperationalState {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterOvenMode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterOvenMode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterLaundryDryerControls {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterLaundryDryerControls {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterModeSelect {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterModeSelect {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterLaundryWasherMode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterLaundryWasherMode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterRefrigeratorAndTemperatureControlledCabinetMode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterRefrigeratorAndTemperatureControlledCabinetMode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterLaundryWasherControls {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterLaundryWasherControls {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterRVCRunMode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterRVCRunMode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterRVCCleanMode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterRVCCleanMode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterTemperatureControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterTemperatureControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterRefrigeratorAlarm {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterRefrigeratorAlarm {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterDishwasherMode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterDishwasherMode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterAirQuality {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterAirQuality {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterSmokeCOAlarm {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterSmokeCOAlarm {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterDishwasherAlarm {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterDishwasherAlarm {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterMicrowaveOvenMode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterMicrowaveOvenMode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterMicrowaveOvenControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterMicrowaveOvenControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterOperationalState {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterOperationalState {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterRVCOperationalState {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterRVCOperationalState {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterScenesManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterScenesManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterGroupcast {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterGroupcast {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterHEPAFilterMonitoring {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterHEPAFilterMonitoring {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterActivatedCarbonFilterMonitoring {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterActivatedCarbonFilterMonitoring {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterBooleanStateConfiguration {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterBooleanStateConfiguration {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterValveConfigurationAndControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterValveConfigurationAndControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterElectricalPowerMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterElectricalPowerMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterElectricalEnergyMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterElectricalEnergyMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterWaterHeaterManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterWaterHeaterManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterCommodityPrice {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterCommodityPrice {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterMessages {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterMessages {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterDeviceEnergyManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterDeviceEnergyManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterEnergyEVSE {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterEnergyEVSE {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterEnergyPreference {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterEnergyPreference {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterPowerTopology {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterPowerTopology {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterEnergyEVSEMode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterEnergyEVSEMode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterWaterHeaterMode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterWaterHeaterMode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterDeviceEnergyManagementMode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterDeviceEnergyManagementMode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterElectricalGridConditions {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterElectricalGridConditions {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterDoorLock {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterDoorLock {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterWindowCovering {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterWindowCovering {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterClosureControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterClosureControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterClosureDimension {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterClosureDimension {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterServiceArea {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterServiceArea {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterPumpConfigurationAndControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterPumpConfigurationAndControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterThermostat {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterThermostat {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterFanControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterFanControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterThermostatUserInterfaceConfiguration {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterThermostatUserInterfaceConfiguration {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterColorControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterColorControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterBallastConfiguration {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterBallastConfiguration {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterIlluminanceMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterIlluminanceMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterTemperatureMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterTemperatureMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterPressureMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterPressureMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterFlowMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterFlowMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterRelativeHumidityMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterRelativeHumidityMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterOccupancySensing {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterOccupancySensing {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterCarbonMonoxideConcentrationMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterCarbonMonoxideConcentrationMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterCarbonDioxideConcentrationMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterCarbonDioxideConcentrationMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterNitrogenDioxideConcentrationMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterNitrogenDioxideConcentrationMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterOzoneConcentrationMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterOzoneConcentrationMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterPM25ConcentrationMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterPM25ConcentrationMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterFormaldehydeConcentrationMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterFormaldehydeConcentrationMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterPM1ConcentrationMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterPM1ConcentrationMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterPM10ConcentrationMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterPM10ConcentrationMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterTotalVolatileOrganicCompoundsConcentrationMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterRadonConcentrationMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterRadonConcentrationMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterSoilMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterSoilMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterWiFiNetworkManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterWiFiNetworkManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterThreadBorderRouterManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterThreadBorderRouterManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterThreadNetworkDirectory {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterThreadNetworkDirectory {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterWakeOnLAN {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterWakeOnLAN {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterChannel {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterChannel {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterTargetNavigator {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterTargetNavigator {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterMediaPlayback {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterMediaPlayback {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterMediaInput {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterMediaInput {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterLowPower {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterLowPower {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterKeypadInput {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterKeypadInput {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterContentLauncher {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterContentLauncher {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterAudioOutput {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterAudioOutput {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterApplicationLauncher {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterApplicationLauncher {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterApplicationBasic {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterApplicationBasic {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterAccountLogin {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterAccountLogin {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterContentControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterContentControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterContentAppObserver {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterContentAppObserver {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterZoneManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterZoneManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterCameraAVStreamManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterCameraAVStreamManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterCameraAVSettingsUserLevelManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterCameraAVSettingsUserLevelManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterWebRTCTransportProvider {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterWebRTCTransportProvider {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterWebRTCTransportRequestor {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterWebRTCTransportRequestor {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterPushAVStreamTransport {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterPushAVStreamTransport {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterChime {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterChime {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterCommodityTariff {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterCommodityTariff {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterEcosystemInformation {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterEcosystemInformation {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterCommissionerControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterCommissionerControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterJointFabricDatastore {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterJointFabricDatastore {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterJointFabricAdministrator {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterJointFabricAdministrator {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterTLSCertificateManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterTLSCertificateManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterTLSClientManagement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterTLSClientManagement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterMeterIdentification {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterMeterIdentification {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterCommodityMetering {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterCommodityMetering {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterAppleDeviceInformation {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterAppleDeviceInformation {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterAppleLockCluster {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterAppleLockCluster {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterUnitTesting {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterUnitTesting {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterSampleMEI {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterSampleMEI {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterBasic {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterBasic {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterOtaSoftwareUpdateProvider {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterOtaSoftwareUpdateProvider {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterOtaSoftwareUpdateRequestor {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterOtaSoftwareUpdateRequestor {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterBridgedDeviceBasic {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterBridgedDeviceBasic {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterWakeOnLan {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterWakeOnLan {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterTestCluster {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterTestCluster {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterOnOffSwitchConfiguration {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterOnOffSwitchConfiguration {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterOnOffSwitchConfiguration {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterOnOffSwitchConfiguration {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterBinaryInputBasic {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterBinaryInputBasic {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterBinaryInputBasic {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterBinaryInputBasic {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBarrierControlClusterBarrierControlGoToPercentParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBarrierControlClusterBarrierControlGoToPercentParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBarrierControlClusterBarrierControlStopParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBarrierControlClusterBarrierControlStopParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterBarrierControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterBarrierControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterBarrierControl {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterBarrierControl {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRElectricalMeasurementClusterGetProfileInfoResponseCommandParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRElectricalMeasurementClusterGetProfileInfoResponseCommandParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRElectricalMeasurementClusterGetProfileInfoCommandParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRElectricalMeasurementClusterGetProfileInfoCommandParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRElectricalMeasurementClusterGetMeasurementProfileResponseCommandParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRElectricalMeasurementClusterGetMeasurementProfileResponseCommandParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRBaseClusterElectricalMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRBaseClusterElectricalMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRClusterElectricalMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRClusterElectricalMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCertificateInfo {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCertificateInfo {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDistinguishedNameInfo {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDistinguishedNameInfo {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommissionableBrowserResult {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommissionableBrowserResult {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommissioneeInfo {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommissioneeInfo {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceAttestationDeviceInfo {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceAttestationDeviceInfo {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMetricData {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMetricData {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRMetrics {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRMetrics {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommissioningParameters {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommissioningParameters {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRCommissioningOperation {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRCommissioningOperation {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceControllerFactoryParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceControllerFactoryParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceControllerFactory {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceControllerFactory {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRControllerFactoryParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRControllerFactoryParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRControllerFactory {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRControllerFactory {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceStorageBehaviorConfiguration {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceStorageBehaviorConfiguration {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceControllerAbstractParameters {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceControllerAbstractParameters {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceControllerParameters {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceControllerParameters {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceControllerExternalCertificateParameters {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceControllerExternalCertificateParameters {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRXPCDeviceControllerParameters {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRXPCDeviceControllerParameters {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceControllerStartupParams {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceControllerStartupParams {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceType {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceType {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRDeviceTypeRevision {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRDeviceTypeRevision {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTREndpointInfo {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTREndpointInfo {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRFabricInfo {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRFabricInfo {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRManualSetupPayloadParser {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRManualSetupPayloadParser {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRNetworkInterfaceInfo {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRNetworkInterfaceInfo {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROTAHeader {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROTAHeader {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROTAHeaderParser {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROTAHeaderParser {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROnboardingPayloadParser {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROnboardingPayloadParser {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRProductIdentity {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRProductIdentity {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRQRCodeSetupPayloadParser {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRQRCodeSetupPayloadParser {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRServerAttribute {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRServerAttribute {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRServerCluster {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRServerCluster {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRServerEndpoint {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRServerEndpoint {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTROptionalQRCodeInfo {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTROptionalQRCodeInfo {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRSetupPayload {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRSetupPayload {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for MTRThreadOperationalDataset {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for MTRThreadOperationalDataset {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
